ERC-20
Overview
Max Total Supply
1,000,000,000 KRUSTY
Holders
161
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
871,077.970358671952090626 KRUSTYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KRUSTY
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-06 */ // https://t.me/KRUSTY_ERC20 // https://twitter.com/Krustyclownerc pragma solidity 0.8.20; interface ERC20 { 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 Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 InterfaceLP { function sync() external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract KRUSTY is Ownable, ERC20 { using SafeMath for uint256; address WETH; address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "HerschelShmoikelPinchasYeruchamKrustofsky"; string constant _symbol = "KRUSTY"; uint8 constant _decimals = 18; event AutoLiquify(uint256 amountETH, uint256 amountTokens); event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer); event user_exemptfromfees(address Wallet, bool Exempt); event user_TxExempt(address Wallet, bool Exempt); event ClearStuck(uint256 amount); event ClearToken(address TokenAddressCleared, uint256 Amount); event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver); event set_MaxWallet(uint256 maxWallet); event set_MaxTX(uint256 maxTX); event set_SwapBack(uint256 Amount, bool Enabled); uint256 _totalSupply = 1000000000 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(5).div(100); uint256 public _maxWalletToken = _totalSupply.mul(5).div(100); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isexemptfromfees; mapping (address => bool) isexemptfrommaxTX; uint256 private liquidityFee = 0; uint256 private marketingFee = 990; uint256 private devFee = 0; uint256 private buybackFee = 0; uint256 private burnFee = 0; uint256 public totalFee = buybackFee + marketingFee + liquidityFee + devFee + burnFee; uint256 private feeDenominator = 1000; uint256 sellpercent = 990; uint256 buypercent = 990; uint256 transferpercent = 990; address private autoLiquidityReceiver; address private marketingFeeReceiver; address private devFeeReceiver; address private buybackFeeReceiver; address private burnFeeReceiver; uint256 setRatio = 30; uint256 setRatioDenominator = 100; IDEXRouter public router; InterfaceLP private pairContract; address public pair; bool public TradingOpen = false; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); pairContract = InterfaceLP(pair); _allowances[address(this)][address(router)] = type(uint256).max; isexemptfromfees[msg.sender] = true; isexemptfromfees[marketingFeeReceiver] = true; isexemptfromfees[address(this)] = true; isexemptfromfees[DEAD] = true; isexemptfrommaxTX[msg.sender] = true; isexemptfrommaxTX[pair] = true; isexemptfrommaxTX[marketingFeeReceiver] = true; isexemptfrommaxTX[address(this)] = true; isexemptfrommaxTX[DEAD] = true; autoLiquidityReceiver = 0x5Aec0A05b8576E10016b5e581E61f007596C69CB; marketingFeeReceiver = 0x5Aec0A05b8576E10016b5e581E61f007596C69CB; devFeeReceiver = msg.sender; buybackFeeReceiver = msg.sender; burnFeeReceiver = DEAD; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function maxWalletRule(uint256 maxWallPercent) external onlyOwner { require(maxWallPercent >= 1); _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000; emit set_MaxWallet(_maxWalletToken); } function removeLimits () external onlyOwner { _maxTxAmount = _totalSupply; _maxWalletToken = _totalSupply; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(TradingOpen,"Trading not open yet"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");} checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient); _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isexemptfromfees[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 percent = transferpercent; if(recipient == pair) { percent = sellpercent; } else if(sender == pair) { percent = buypercent; } uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 1000); uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee); uint256 contractTokens = feeAmount.sub(burnTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens); emit Transfer(sender, address(this), contractTokens); if(burnTokens > 0){ _totalSupply = _totalSupply.sub(burnTokens); emit Transfer(sender, ZERO, burnTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function manualSend() external { payable(autoLiquidityReceiver).transfer(address(this).balance); } function clearStuckToken() external returns (bool success) { uint256 balanceBefore = address(this).balance; return ERC20(address(this)).transfer(autoLiquidityReceiver, balanceBefore); } function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner { sellpercent = _percentonsell; buypercent = _percentonbuy; transferpercent = _wallettransfer; } function startTrading() public onlyOwner { TradingOpen = true; } function reduceFee() public onlyOwner { buypercent = 0; sellpercent = 0; transferpercent = 0; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = 0; 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 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee); uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}(""); (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; emit set_SwapBack(swapThreshold, swapEnabled); } }
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":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","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":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a62000014919062000e7e565b633b9aca0062000025919062000ece565b60035562000055606462000046600560035462000bae60201b90919060201c565b62000c2e60201b90919060201c565b60045562000085606462000076600560035462000bae60201b90919060201c565b62000c2e60201b90919060201c565b6005555f600a556103de600b555f600c555f600d555f600e55600e54600c54600a54600b54600d54620000b9919062000f18565b620000c5919062000f18565b620000d1919062000f18565b620000dd919062000f18565b600f556103e86010556103de6011556103de6012556103de601355601e6019556064601a555f601d60146101000a81548160ff0219169083151502179055506001601d60156101000a81548160ff0219169083151502179055506103e860035462000149919062000f7f565b601e5534801562000158575f80fd5b505f6200016a62000c7f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001805f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000339573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035f91906200101b565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000409573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200042f91906200101b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200048c9291906200105c565b6020604051808303815f875af1158015620004a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004cf91906200101b565b601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550735aec0a05b8576e10016b5e581e61f007596c69cb60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735aec0a05b8576e10016b5e581e61f007596c69cb60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000ba0919062001098565b60405180910390a3620011fd565b5f80830362000bc0575f905062000c28565b5f828462000bcf919062000ece565b905082848262000be0919062000f7f565b1462000c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1a9062001137565b60405180910390fd5b809150505b92915050565b5f62000c7783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000c8660201b60201c565b905092915050565b5f33905090565b5f808311829062000ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cc69190620011db565b60405180910390fd5b505f838562000cdf919062000f7f565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000d765780860481111562000d4e5762000d4d62000cec565b5b600185161562000d5e5780820291505b808102905062000d6e8562000d19565b945062000d2e565b94509492505050565b5f8262000d90576001905062000e62565b8162000d9f575f905062000e62565b816001811462000db8576002811462000dc35762000df9565b600191505062000e62565b60ff84111562000dd85762000dd762000cec565b5b8360020a91508482111562000df25762000df162000cec565b5b5062000e62565b5060208310610133831016604e8410600b841016171562000e335782820a90508381111562000e2d5762000e2c62000cec565b5b62000e62565b62000e42848484600162000d25565b9250905081840481111562000e5c5762000e5b62000cec565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000e8a8262000e69565b915062000e978362000e72565b925062000ec67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d7f565b905092915050565b5f62000eda8262000e69565b915062000ee78362000e69565b925082820262000ef78162000e69565b9150828204841483151762000f115762000f1062000cec565b5b5092915050565b5f62000f248262000e69565b915062000f318362000e69565b925082820190508082111562000f4c5762000f4b62000cec565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f8b8262000e69565b915062000f988362000e69565b92508262000fab5762000faa62000f52565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000fe58262000fba565b9050919050565b62000ff78162000fd9565b811462001002575f80fd5b50565b5f81519050620010158162000fec565b92915050565b5f6020828403121562001033576200103262000fb6565b5b5f620010428482850162001005565b91505092915050565b620010568162000fd9565b82525050565b5f604082019050620010715f8301856200104b565b6200108060208301846200104b565b9392505050565b620010928162000e69565b82525050565b5f602082019050620010ad5f83018462001087565b92915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6200111f602183620010b3565b91506200112c82620010c3565b604082019050919050565b5f6020820190508181035f830152620011508162001111565b9050919050565b5f81519050919050565b5f5b838110156200118057808201518184015260208101905062001163565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620011a78262001157565b620011b38185620010b3565b9350620011c581856020860162001161565b620011d0816200118b565b840191505092915050565b5f6020820190508181035f830152620011f581846200119b565b905092915050565b6136b1806200120b5f395ff3fe6080604052600436106101db575f3560e01c806378109e5411610101578063b2bdfa7b11610094578063df20fd4911610063578063df20fd491461066c578063f2fde38b14610694578063f4293890146106bc578063f887ea40146106d2576101e2565b8063b2bdfa7b146105b4578063c0cbdea4146105de578063d85a282814610606578063dd62ed3e14610630576101e2565b806395d89b41116100d057806395d89b411461050e578063a70419d214610538578063a8aa1b311461054e578063a9059cbb14610578576101e2565b806378109e54146104665780637d1db4a514610490578063893d20e8146104ba5780638da5cb5b146104e4576101e2565b8063293230b8116101795780636ddd1713116101485780636ddd1713146103d457806370a08231146103fe578063715018a61461043a578063751039fc14610450576101e2565b8063293230b814610330578063313ce56714610346578063571ac8b0146103705780635d83e1d5146103ac576101e2565b8063095ea7b3116101b5578063095ea7b31461026457806318160ddd146102a05780631df4ccfc146102ca57806323b872dd146102f4576101e2565b80630445b667146101e657806306fdde031461021057806308fd3d051461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106fc565b6040516102079190612a55565b60405180910390f35b34801561021b575f80fd5b50610224610702565b6040516102319190612af8565b60405180910390f35b348015610245575f80fd5b5061024e610722565b60405161025b9190612b32565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612bd3565b610735565b6040516102979190612b32565b60405180910390f35b3480156102ab575f80fd5b506102b4610822565b6040516102c19190612a55565b60405180910390f35b3480156102d5575f80fd5b506102de61082b565b6040516102eb9190612a55565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190612c11565b610831565b6040516103279190612b32565b60405180910390f35b34801561033b575f80fd5b50610344610a24565b005b348015610351575f80fd5b5061035a610ad5565b6040516103679190612c7c565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612c95565b610add565b6040516103a39190612b32565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd9190612cc0565b610b0f565b005b3480156103df575f80fd5b506103e8610c0d565b6040516103f59190612b32565b60405180910390f35b348015610409575f80fd5b50610424600480360381019061041f9190612c95565b610c20565b6040516104319190612a55565b60405180910390f35b348015610445575f80fd5b5061044e610c66565b005b34801561045b575f80fd5b50610464610db4565b005b348015610471575f80fd5b5061047a610e5c565b6040516104879190612a55565b60405180910390f35b34801561049b575f80fd5b506104a4610e62565b6040516104b19190612a55565b60405180910390f35b3480156104c5575f80fd5b506104ce610e68565b6040516104db9190612cfa565b60405180910390f35b3480156104ef575f80fd5b506104f8610e76565b6040516105059190612cfa565b60405180910390f35b348015610519575f80fd5b50610522610e9d565b60405161052f9190612af8565b60405180910390f35b348015610543575f80fd5b5061054c610eda565b005b348015610559575f80fd5b50610562610f85565b60405161056f9190612cfa565b60405180910390f35b348015610583575f80fd5b5061059e60048036038101906105999190612bd3565b610faa565b6040516105ab9190612b32565b60405180910390f35b3480156105bf575f80fd5b506105c8610fbe565b6040516105d59190612cfa565b60405180910390f35b3480156105e9575f80fd5b5061060460048036038101906105ff9190612d13565b610fe1565b005b348015610611575f80fd5b5061061a61108f565b6040516106279190612b32565b60405180910390f35b34801561063b575f80fd5b5061065660048036038101906106519190612d63565b611136565b6040516106639190612a55565b60405180910390f35b348015610677575f80fd5b50610692600480360381019061068d9190612dcb565b6111b8565b005b34801561069f575f80fd5b506106ba60048036038101906106b59190612c95565b6112bb565b005b3480156106c7575f80fd5b506106d0611478565b005b3480156106dd575f80fd5b506106e66114df565b6040516106f39190612e64565b60405180910390f35b601e5481565b606060405180606001604052806029815260200161365360299139905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108109190612a55565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610a1057610993826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a1b848484611566565b90509392505050565b610a2c611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90612ec7565b60405180910390fd5b6001601d60146101000a81548160ff021916908315150217905550565b5f6012905090565b5f610b08827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610735565b9050919050565b610b17611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90612ec7565b60405180910390fd5b6001811015610bb0575f80fd5b6103e881600354610bc19190612f12565b610bcb9190612f80565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610c029190612a55565b60405180910390a150565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c6e611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190612ec7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dbc611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f90612ec7565b60405180910390fd5b600354600481905550600354600581905550565b60055481565b60045481565b5f610e71610e76565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b52555354590000000000000000000000000000000000000000000000000000815250905090565b610ee2611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612ec7565b60405180910390fd5b5f6012819055505f6011819055505f601381905550565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610fb6338484611566565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fe9611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c90612ec7565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f804790503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110f0929190612fb0565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612feb565b91505090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111c0611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612ec7565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff166040516112af929190613016565b60405180910390a15050565b6112c3611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690612ec7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b4906130ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156114dc573d5f803e3d5ffd5b50565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f83831115829061154b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115429190612af8565b60405180910390fd5b505f838561155991906130cb565b9050809150509392505050565b5f601f5f9054906101000a900460ff161561158d57611586848484611ba4565b9050611b96565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561162b575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561168057601d60149054906101000a900460ff1661167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613148565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561170357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561173d575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117965750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117ef575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611848575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561189b575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118fe575f6118aa84610c20565b905060055483826118bb9190613166565b11156118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613209565b60405180910390fd5b505b6119088483611d6e565b611910611e08565b1561191e5761191d611eda565b5b6119a5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a82575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a9657611a918584866124b7565b611a98565b825b9050611aea8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b889190612a55565b60405180910390a360019150505b9392505050565b5f33905090565b5f611c2c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611cbd8260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5b9190612a55565b60405180910390a3600190509392505050565b60045481111580611dc5575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90613271565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611e725750601f5f9054906101000a900460ff16155b8015611e8a5750601d60159054906101000a900460ff165b8015611ed55750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f80611f326002611f24600f54611f1686601e546128d390919063ffffffff16565b61294a90919063ffffffff16565b61294a90919063ffffffff16565b90505f611f4a82601e5461299390919063ffffffff16565b90505f600267ffffffffffffffff811115611f6857611f6761328f565b5b604051908082528060200260200182016040528015611f965781602001602082028036833780820191505090505b50905030815f81518110611fad57611fac6132bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061201d5761201c6132bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016120bd9594939291906133d9565b5f604051808303815f87803b1580156120d4575f80fd5b505af11580156120e6573d5f803e3d5ffd5b505050505f6120fe824761299390919063ffffffff16565b90505f61212961211860028961294a90919063ffffffff16565b600f5461299390919063ffffffff16565b90505f6121646002612156846121488c886128d390919063ffffffff16565b61294a90919063ffffffff16565b61294a90919063ffffffff16565b90505f61218e83612180600b54876128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6121b8846121aa600d54886128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6121e2856121d4600c54896128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161222a9061345e565b5f6040518083038185875af1925050503d805f8114612264576040519150601f19603f3d011682016040523d82523d5f602084013e612269565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122b29061345e565b5f6040518083038185875af1925050503d805f81146122ec576040519150601f19603f3d011682016040523d82523d5f602084013e6122f1565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161233c9061345e565b5f6040518083038185875af1925050503d805f8114612376576040519150601f19603f3d011682016040523d82523d5f602084013e61237b565b606091505b5050809150505f90505f8b111561249057601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161241296959493929190613472565b60606040518083038185885af115801561242e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061245391906134e5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612487929190613535565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361251c576011549050612577565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125765760125490505b5b5f6125c06103e860105461258b9190612f12565b6125b2846125a4600f548a6128d390919063ffffffff16565b6128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6125ec600f546125de600e54856128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f612602828461299390919063ffffffff16565b90506126548160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127068260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127c59190612a55565b60405180910390a35f821115612856576127ea8260035461299390919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161284d9190612a55565b60405180910390a35b612869838861299390919063ffffffff16565b9450505050509392505050565b5f8082846128849190613166565b9050838110156128c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c0906135a6565b60405180910390fd5b8091505092915050565b5f8083036128e3575f9050612944565b5f82846128f09190612f12565b90508284826128ff9190612f80565b1461293f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293690613634565b60405180910390fd5b809150505b92915050565b5f61298b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129dc565b905092915050565b5f6129d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611504565b905092915050565b5f8083118290612a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a199190612af8565b60405180910390fd5b505f8385612a309190612f80565b9050809150509392505050565b5f819050919050565b612a4f81612a3d565b82525050565b5f602082019050612a685f830184612a46565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612aa5578082015181840152602081019050612a8a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612aca82612a6e565b612ad48185612a78565b9350612ae4818560208601612a88565b612aed81612ab0565b840191505092915050565b5f6020820190508181035f830152612b108184612ac0565b905092915050565b5f8115159050919050565b612b2c81612b18565b82525050565b5f602082019050612b455f830184612b23565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b7882612b4f565b9050919050565b612b8881612b6e565b8114612b92575f80fd5b50565b5f81359050612ba381612b7f565b92915050565b612bb281612a3d565b8114612bbc575f80fd5b50565b5f81359050612bcd81612ba9565b92915050565b5f8060408385031215612be957612be8612b4b565b5b5f612bf685828601612b95565b9250506020612c0785828601612bbf565b9150509250929050565b5f805f60608486031215612c2857612c27612b4b565b5b5f612c3586828701612b95565b9350506020612c4686828701612b95565b9250506040612c5786828701612bbf565b9150509250925092565b5f60ff82169050919050565b612c7681612c61565b82525050565b5f602082019050612c8f5f830184612c6d565b92915050565b5f60208284031215612caa57612ca9612b4b565b5b5f612cb784828501612b95565b91505092915050565b5f60208284031215612cd557612cd4612b4b565b5b5f612ce284828501612bbf565b91505092915050565b612cf481612b6e565b82525050565b5f602082019050612d0d5f830184612ceb565b92915050565b5f805f60608486031215612d2a57612d29612b4b565b5b5f612d3786828701612bbf565b9350506020612d4886828701612bbf565b9250506040612d5986828701612bbf565b9150509250925092565b5f8060408385031215612d7957612d78612b4b565b5b5f612d8685828601612b95565b9250506020612d9785828601612b95565b9150509250929050565b612daa81612b18565b8114612db4575f80fd5b50565b5f81359050612dc581612da1565b92915050565b5f8060408385031215612de157612de0612b4b565b5b5f612dee85828601612db7565b9250506020612dff85828601612bbf565b9150509250929050565b5f819050919050565b5f612e2c612e27612e2284612b4f565b612e09565b612b4f565b9050919050565b5f612e3d82612e12565b9050919050565b5f612e4e82612e33565b9050919050565b612e5e81612e44565b82525050565b5f602082019050612e775f830184612e55565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612eb1602083612a78565b9150612ebc82612e7d565b602082019050919050565b5f6020820190508181035f830152612ede81612ea5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f1c82612a3d565b9150612f2783612a3d565b9250828202612f3581612a3d565b91508282048414831517612f4c57612f4b612ee5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f8a82612a3d565b9150612f9583612a3d565b925082612fa557612fa4612f53565b5b828204905092915050565b5f604082019050612fc35f830185612ceb565b612fd06020830184612a46565b9392505050565b5f81519050612fe581612da1565b92915050565b5f6020828403121561300057612fff612b4b565b5b5f61300d84828501612fd7565b91505092915050565b5f6040820190506130295f830185612a46565b6130366020830184612b23565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613097602683612a78565b91506130a28261303d565b604082019050919050565b5f6020820190508181035f8301526130c48161308b565b9050919050565b5f6130d582612a3d565b91506130e083612a3d565b92508282039050818111156130f8576130f7612ee5565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613132601483612a78565b915061313d826130fe565b602082019050919050565b5f6020820190508181035f83015261315f81613126565b9050919050565b5f61317082612a3d565b915061317b83612a3d565b925082820190508082111561319357613192612ee5565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f6131f3603e83612a78565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61325b601183612a78565b915061326682613227565b602082019050919050565b5f6020820190508181035f8301526132888161324f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61330c613307613302846132e9565b612e09565b612a3d565b9050919050565b61331c816132f2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61335481612b6e565b82525050565b5f613365838361334b565b60208301905092915050565b5f602082019050919050565b5f61338782613322565b613391818561332c565b935061339c8361333c565b805f5b838110156133cc5781516133b3888261335a565b97506133be83613371565b92505060018101905061339f565b5085935050505092915050565b5f60a0820190506133ec5f830188612a46565b6133f96020830187613313565b818103604083015261340b818661337d565b905061341a6060830185612ceb565b6134276080830184612a46565b9695505050505050565b5f81905092915050565b50565b5f6134495f83613431565b91506134548261343b565b5f82019050919050565b5f6134688261343e565b9150819050919050565b5f60c0820190506134855f830189612ceb565b6134926020830188612a46565b61349f6040830187613313565b6134ac6060830186613313565b6134b96080830185612ceb565b6134c660a0830184612a46565b979650505050505050565b5f815190506134df81612ba9565b92915050565b5f805f606084860312156134fc576134fb612b4b565b5b5f613509868287016134d1565b935050602061351a868287016134d1565b925050604061352b868287016134d1565b9150509250925092565b5f6040820190506135485f830185612a46565b6135556020830184612a46565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613590601b83612a78565b915061359b8261355c565b602082019050919050565b5f6020820190508181035f8301526135bd81613584565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61361e602183612a78565b9150613629826135c4565b604082019050919050565b5f6020820190508181035f83015261364b81613612565b905091905056fe486572736368656c53686d6f696b656c50696e63686173596572756368616d4b727573746f66736b79a264697066735822122075f82582b914fab99eb45ce3d651cf16b71af90175743d7bb7abf365a617e7df64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101db575f3560e01c806378109e5411610101578063b2bdfa7b11610094578063df20fd4911610063578063df20fd491461066c578063f2fde38b14610694578063f4293890146106bc578063f887ea40146106d2576101e2565b8063b2bdfa7b146105b4578063c0cbdea4146105de578063d85a282814610606578063dd62ed3e14610630576101e2565b806395d89b41116100d057806395d89b411461050e578063a70419d214610538578063a8aa1b311461054e578063a9059cbb14610578576101e2565b806378109e54146104665780637d1db4a514610490578063893d20e8146104ba5780638da5cb5b146104e4576101e2565b8063293230b8116101795780636ddd1713116101485780636ddd1713146103d457806370a08231146103fe578063715018a61461043a578063751039fc14610450576101e2565b8063293230b814610330578063313ce56714610346578063571ac8b0146103705780635d83e1d5146103ac576101e2565b8063095ea7b3116101b5578063095ea7b31461026457806318160ddd146102a05780631df4ccfc146102ca57806323b872dd146102f4576101e2565b80630445b667146101e657806306fdde031461021057806308fd3d051461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106fc565b6040516102079190612a55565b60405180910390f35b34801561021b575f80fd5b50610224610702565b6040516102319190612af8565b60405180910390f35b348015610245575f80fd5b5061024e610722565b60405161025b9190612b32565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612bd3565b610735565b6040516102979190612b32565b60405180910390f35b3480156102ab575f80fd5b506102b4610822565b6040516102c19190612a55565b60405180910390f35b3480156102d5575f80fd5b506102de61082b565b6040516102eb9190612a55565b60405180910390f35b3480156102ff575f80fd5b5061031a60048036038101906103159190612c11565b610831565b6040516103279190612b32565b60405180910390f35b34801561033b575f80fd5b50610344610a24565b005b348015610351575f80fd5b5061035a610ad5565b6040516103679190612c7c565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612c95565b610add565b6040516103a39190612b32565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd9190612cc0565b610b0f565b005b3480156103df575f80fd5b506103e8610c0d565b6040516103f59190612b32565b60405180910390f35b348015610409575f80fd5b50610424600480360381019061041f9190612c95565b610c20565b6040516104319190612a55565b60405180910390f35b348015610445575f80fd5b5061044e610c66565b005b34801561045b575f80fd5b50610464610db4565b005b348015610471575f80fd5b5061047a610e5c565b6040516104879190612a55565b60405180910390f35b34801561049b575f80fd5b506104a4610e62565b6040516104b19190612a55565b60405180910390f35b3480156104c5575f80fd5b506104ce610e68565b6040516104db9190612cfa565b60405180910390f35b3480156104ef575f80fd5b506104f8610e76565b6040516105059190612cfa565b60405180910390f35b348015610519575f80fd5b50610522610e9d565b60405161052f9190612af8565b60405180910390f35b348015610543575f80fd5b5061054c610eda565b005b348015610559575f80fd5b50610562610f85565b60405161056f9190612cfa565b60405180910390f35b348015610583575f80fd5b5061059e60048036038101906105999190612bd3565b610faa565b6040516105ab9190612b32565b60405180910390f35b3480156105bf575f80fd5b506105c8610fbe565b6040516105d59190612cfa565b60405180910390f35b3480156105e9575f80fd5b5061060460048036038101906105ff9190612d13565b610fe1565b005b348015610611575f80fd5b5061061a61108f565b6040516106279190612b32565b60405180910390f35b34801561063b575f80fd5b5061065660048036038101906106519190612d63565b611136565b6040516106639190612a55565b60405180910390f35b348015610677575f80fd5b50610692600480360381019061068d9190612dcb565b6111b8565b005b34801561069f575f80fd5b506106ba60048036038101906106b59190612c95565b6112bb565b005b3480156106c7575f80fd5b506106d0611478565b005b3480156106dd575f80fd5b506106e66114df565b6040516106f39190612e64565b60405180910390f35b601e5481565b606060405180606001604052806029815260200161365360299139905090565b601d60149054906101000a900460ff1681565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108109190612a55565b60405180910390a36001905092915050565b5f600354905090565b600f5481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610a1057610993826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a1b848484611566565b90509392505050565b610a2c611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf90612ec7565b60405180910390fd5b6001601d60146101000a81548160ff021916908315150217905550565b5f6012905090565b5f610b08827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610735565b9050919050565b610b17611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9a90612ec7565b60405180910390fd5b6001811015610bb0575f80fd5b6103e881600354610bc19190612f12565b610bcb9190612f80565b6005819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600554604051610c029190612a55565b60405180910390a150565b601d60159054906101000a900460ff1681565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c6e611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190612ec7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dbc611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f90612ec7565b60405180910390fd5b600354600481905550600354600581905550565b60055481565b60045481565b5f610e71610e76565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b52555354590000000000000000000000000000000000000000000000000000815250905090565b610ee2611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612ec7565b60405180910390fd5b5f6012819055505f6011819055505f601381905550565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610fb6338484611566565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fe9611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c90612ec7565b60405180910390fd5b816011819055508260128190555080601381905550505050565b5f804790503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016110f0929190612fb0565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612feb565b91505090565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111c0611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612ec7565b60405180910390fd5b81601d60156101000a81548160ff02191690831515021790555080601e819055507f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60601e54601d60159054906101000a900460ff166040516112af929190613016565b60405180910390a15050565b6112c3611b9d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690612ec7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b4906130ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156114dc573d5f803e3d5ffd5b50565b601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f83831115829061154b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115429190612af8565b60405180910390fd5b505f838561155991906130cb565b9050809150509392505050565b5f601f5f9054906101000a900460ff161561158d57611586848484611ba4565b9050611b96565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561162b575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561168057601d60149054906101000a900460ff1661167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690613148565b60405180910390fd5b5b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561170357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561173d575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117965750601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117ef575060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611848575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561189b575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118fe575f6118aa84610c20565b905060055483826118bb9190613166565b11156118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613209565b60405180910390fd5b505b6119088483611d6e565b611910611e08565b1561191e5761191d611eda565b5b6119a5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a82575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a9657611a918584866124b7565b611a98565b825b9050611aea8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b889190612a55565b60405180910390a360019150505b9392505050565b5f33905090565b5f611c2c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546115049092919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611cbd8260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5b9190612a55565b60405180910390a3600190509392505050565b60045481111580611dc5575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90613271565b60405180910390fd5b5050565b5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611e725750601f5f9054906101000a900460ff16155b8015611e8a5750601d60159054906101000a900460ff165b8015611ed55750601e5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b6001601f5f6101000a81548160ff0219169083151502179055505f80611f326002611f24600f54611f1686601e546128d390919063ffffffff16565b61294a90919063ffffffff16565b61294a90919063ffffffff16565b90505f611f4a82601e5461299390919063ffffffff16565b90505f600267ffffffffffffffff811115611f6857611f6761328f565b5b604051908082528060200260200182016040528015611f965781602001602082028036833780820191505090505b50905030815f81518110611fad57611fac6132bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061201d5761201c6132bc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016120bd9594939291906133d9565b5f604051808303815f87803b1580156120d4575f80fd5b505af11580156120e6573d5f803e3d5ffd5b505050505f6120fe824761299390919063ffffffff16565b90505f61212961211860028961294a90919063ffffffff16565b600f5461299390919063ffffffff16565b90505f6121646002612156846121488c886128d390919063ffffffff16565b61294a90919063ffffffff16565b61294a90919063ffffffff16565b90505f61218e83612180600b54876128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6121b8846121aa600d54886128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6121e2856121d4600c54896128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161222a9061345e565b5f6040518083038185875af1925050503d805f8114612264576040519150601f19603f3d011682016040523d82523d5f602084013e612269565b606091505b5050905060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122b29061345e565b5f6040518083038185875af1925050503d805f81146122ec576040519150601f19603f3d011682016040523d82523d5f602084013e6122f1565b606091505b50508091505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161233c9061345e565b5f6040518083038185875af1925050503d805f8114612376576040519150601f19603f3d011682016040523d82523d5f602084013e61237b565b606091505b5050809150505f90505f8b111561249057601b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308e5f8060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161241296959493929190613472565b60606040518083038185885af115801561242e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061245391906134e5565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858c604051612487929190613535565b60405180910390a15b5050505050505050505050505f601f5f6101000a81548160ff021916908315150217905550565b5f806013549050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361251c576011549050612577565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036125765760125490505b5b5f6125c06103e860105461258b9190612f12565b6125b2846125a4600f548a6128d390919063ffffffff16565b6128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f6125ec600f546125de600e54856128d390919063ffffffff16565b61294a90919063ffffffff16565b90505f612602828461299390919063ffffffff16565b90506126548160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127068260065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461287690919063ffffffff16565b60065f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127c59190612a55565b60405180910390a35f821115612856576127ea8260035461299390919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161284d9190612a55565b60405180910390a35b612869838861299390919063ffffffff16565b9450505050509392505050565b5f8082846128849190613166565b9050838110156128c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c0906135a6565b60405180910390fd5b8091505092915050565b5f8083036128e3575f9050612944565b5f82846128f09190612f12565b90508284826128ff9190612f80565b1461293f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293690613634565b60405180910390fd5b809150505b92915050565b5f61298b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129dc565b905092915050565b5f6129d483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611504565b905092915050565b5f8083118290612a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a199190612af8565b60405180910390fd5b505f8385612a309190612f80565b9050809150509392505050565b5f819050919050565b612a4f81612a3d565b82525050565b5f602082019050612a685f830184612a46565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612aa5578082015181840152602081019050612a8a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612aca82612a6e565b612ad48185612a78565b9350612ae4818560208601612a88565b612aed81612ab0565b840191505092915050565b5f6020820190508181035f830152612b108184612ac0565b905092915050565b5f8115159050919050565b612b2c81612b18565b82525050565b5f602082019050612b455f830184612b23565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b7882612b4f565b9050919050565b612b8881612b6e565b8114612b92575f80fd5b50565b5f81359050612ba381612b7f565b92915050565b612bb281612a3d565b8114612bbc575f80fd5b50565b5f81359050612bcd81612ba9565b92915050565b5f8060408385031215612be957612be8612b4b565b5b5f612bf685828601612b95565b9250506020612c0785828601612bbf565b9150509250929050565b5f805f60608486031215612c2857612c27612b4b565b5b5f612c3586828701612b95565b9350506020612c4686828701612b95565b9250506040612c5786828701612bbf565b9150509250925092565b5f60ff82169050919050565b612c7681612c61565b82525050565b5f602082019050612c8f5f830184612c6d565b92915050565b5f60208284031215612caa57612ca9612b4b565b5b5f612cb784828501612b95565b91505092915050565b5f60208284031215612cd557612cd4612b4b565b5b5f612ce284828501612bbf565b91505092915050565b612cf481612b6e565b82525050565b5f602082019050612d0d5f830184612ceb565b92915050565b5f805f60608486031215612d2a57612d29612b4b565b5b5f612d3786828701612bbf565b9350506020612d4886828701612bbf565b9250506040612d5986828701612bbf565b9150509250925092565b5f8060408385031215612d7957612d78612b4b565b5b5f612d8685828601612b95565b9250506020612d9785828601612b95565b9150509250929050565b612daa81612b18565b8114612db4575f80fd5b50565b5f81359050612dc581612da1565b92915050565b5f8060408385031215612de157612de0612b4b565b5b5f612dee85828601612db7565b9250506020612dff85828601612bbf565b9150509250929050565b5f819050919050565b5f612e2c612e27612e2284612b4f565b612e09565b612b4f565b9050919050565b5f612e3d82612e12565b9050919050565b5f612e4e82612e33565b9050919050565b612e5e81612e44565b82525050565b5f602082019050612e775f830184612e55565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612eb1602083612a78565b9150612ebc82612e7d565b602082019050919050565b5f6020820190508181035f830152612ede81612ea5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f1c82612a3d565b9150612f2783612a3d565b9250828202612f3581612a3d565b91508282048414831517612f4c57612f4b612ee5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f8a82612a3d565b9150612f9583612a3d565b925082612fa557612fa4612f53565b5b828204905092915050565b5f604082019050612fc35f830185612ceb565b612fd06020830184612a46565b9392505050565b5f81519050612fe581612da1565b92915050565b5f6020828403121561300057612fff612b4b565b5b5f61300d84828501612fd7565b91505092915050565b5f6040820190506130295f830185612a46565b6130366020830184612b23565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613097602683612a78565b91506130a28261303d565b604082019050919050565b5f6020820190508181035f8301526130c48161308b565b9050919050565b5f6130d582612a3d565b91506130e083612a3d565b92508282039050818111156130f8576130f7612ee5565b5b92915050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f613132601483612a78565b915061313d826130fe565b602082019050919050565b5f6020820190508181035f83015261315f81613126565b9050919050565b5f61317082612a3d565b915061317b83612a3d565b925082820190508082111561319357613192612ee5565b5b92915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d69745f8201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b5f6131f3603e83612a78565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61325b601183612a78565b915061326682613227565b602082019050919050565b5f6020820190508181035f8301526132888161324f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61330c613307613302846132e9565b612e09565b612a3d565b9050919050565b61331c816132f2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61335481612b6e565b82525050565b5f613365838361334b565b60208301905092915050565b5f602082019050919050565b5f61338782613322565b613391818561332c565b935061339c8361333c565b805f5b838110156133cc5781516133b3888261335a565b97506133be83613371565b92505060018101905061339f565b5085935050505092915050565b5f60a0820190506133ec5f830188612a46565b6133f96020830187613313565b818103604083015261340b818661337d565b905061341a6060830185612ceb565b6134276080830184612a46565b9695505050505050565b5f81905092915050565b50565b5f6134495f83613431565b91506134548261343b565b5f82019050919050565b5f6134688261343e565b9150819050919050565b5f60c0820190506134855f830189612ceb565b6134926020830188612a46565b61349f6040830187613313565b6134ac6060830186613313565b6134b96080830185612ceb565b6134c660a0830184612a46565b979650505050505050565b5f815190506134df81612ba9565b92915050565b5f805f606084860312156134fc576134fb612b4b565b5b5f613509868287016134d1565b935050602061351a868287016134d1565b925050604061352b868287016134d1565b9150509250925092565b5f6040820190506135485f830185612a46565b6135556020830184612a46565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613590601b83612a78565b915061359b8261355c565b602082019050919050565b5f6020820190508181035f8301526135bd81613584565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61361e602183612a78565b9150613629826135c4565b604082019050919050565b5f6020820190508181035f83015261364b81613612565b905091905056fe486572736368656c53686d6f696b656c50696e63686173596572756368616d4b727573746f66736b79a264697066735822122075f82582b914fab99eb45ce3d651cf16b71af90175743d7bb7abf365a617e7df64736f6c63430008140033
Deployed Bytecode Sourcemap
5015:11705:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7376:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9017:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7293:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9439:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8747:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6661:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9957:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14464:81;;;;;;;;;;;;;:::i;:::-;;8841:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9663:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10335:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7339:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9187:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:148;;;;;;;;;;;;;:::i;:::-;;10592:139;;;;;;;;;;;;;:::i;:::-;;6164:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6099:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9103:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1715:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14553:127;;;;;;;;;;;;;:::i;:::-;;7261:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9793:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1335:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14192:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13974:210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9298:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16506:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2085:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13835:132;;;;;;;;;;;;;:::i;:::-;;7191:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7376:50;;;;:::o;9017:80::-;9065:13;9089:5;;;;;;;;;;;;;;;;;9082:12;;9017:80;:::o;7293:31::-;;;;;;;;;;;;;:::o;9439:216::-;9514:4;9566:6;9531:11;:23;9543:10;9531:23;;;;;;;;;;;;;;;:32;9555:7;9531:32;;;;;;;;;;;;;;;:41;;;;9609:7;9588:37;;9597:10;9588:37;;;9618:6;9588:37;;;;;;:::i;:::-;;;;;;;;9643:4;9636:11;;9439:216;;;;:::o;8747:88::-;8802:7;8820:12;;8813:19;;8747:88;:::o;6661:93::-;;;;:::o;9957:370::-;10057:4;10112:17;10077:11;:19;10089:6;10077:19;;;;;;;;;;;;;;;:31;10097:10;10077:31;;;;;;;;;;;;;;;;:52;10074:186;;10179:69;10215:6;10179:69;;;;;;;;;;;;;;;;;:11;:19;10191:6;10179:19;;;;;;;;;;;;;;;:31;10199:10;10179:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;10145:11;:19;10157:6;10145:19;;;;;;;;;;;;;;;:31;10165:10;10145:31;;;;;;;;;;;;;;;:103;;;;10074:186;10279:40;10293:6;10301:9;10312:6;10279:13;:40::i;:::-;10272:47;;9957:370;;;;;:::o;14464:81::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14530:4:::1;14516:11;;:18;;;;;;;;;;;;;;;;;;14464:81::o:0;8841:80::-;8893:5;5406:2;8902:16;;8841:80;:::o;9663:122::-;9718:4;9742:35;9750:7;9759:17;9742:7;:35::i;:::-;9735:42;;9663:122;;;:::o;10335:247::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10439:1:::1;10421:14;:19;;10413:28;;;::::0;::::1;;10506:4;10487:14;10472:12;;:29;;;;:::i;:::-;10471:39;;;;:::i;:::-;10453:15;:57;;;;10526:30;10540:15;;10526:30;;;;;;:::i;:::-;;;;;;;;10335:247:::0;:::o;7339:30::-;;;;;;;;;;;;;:::o;9187:105::-;9253:7;9271:9;:18;9281:7;9271:18;;;;;;;;;;;;;;;;9264:25;;9187:105;;;:::o;1929:148::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2036:1:::1;1999:40;;2020:6;::::0;::::1;;;;;;;;1999:40;;;;;;;;;;;;2067:1;2050:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1929:148::o:0;10592:139::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10666:12:::1;;10651;:27;;;;10711:12;;10693:15;:30;;;;10592:139::o:0;6164:61::-;;;;:::o;6099:58::-;;;;:::o;9103:78::-;9155:7;9172;:5;:7::i;:::-;9165:14;;9103:78;:::o;1715:79::-;1753:7;1780:6;;;;;;;;;;;1773:13;;1715:79;:::o;8927:84::-;8977:13;9001:7;;;;;;;;;;;;;;;;;8994:14;;8927:84;:::o;14553:127::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14615:1:::1;14602:10;:14;;;;14641:1;14627:11;:15;;;;14671:1;14653:15;:19;;;;14553:127::o:0;7261:19::-;;;;;;;;;;;;;:::o;9793:156::-;9873:4;9897:44;9911:10;9923:9;9934:6;9897:13;:44::i;:::-;9890:51;;9793:156;;;;:::o;1335:21::-;;;;;;;;;;;;:::o;14192:257::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14330:14:::1;14316:11;:28;;;;14368:13;14355:10;:26;;;;14410:15;14392;:33;;;;14192:257:::0;;;:::o;13974:210::-;14019:12;14046:21;14070;14046:45;;14123:4;14109:29;;;14139:21;;;;;;;;;;;14162:13;14109:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14102:74;;;13974:210;:::o;9298:133::-;9382:7;9400:11;:19;9412:6;9400:19;;;;;;;;;;;;;;;:28;9420:7;9400:28;;;;;;;;;;;;;;;;9393:35;;9298:133;;;;:::o;16506:211::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16611:8:::1;16597:11;;:22;;;;;;;;;;;;;;;;;;16646:7;16630:13;:23;;;;16669:40;16682:13;;16697:11;;;;;;;;;;;16669:40;;;;;;;:::i;:::-;;;;;;;;16506:211:::0;;:::o;2085:244::-;1852:12;:10;:12::i;:::-;1842:22;;:6;;;;;;;;;;:22;;;1834:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2194:1:::1;2174:22;;:8;:22;;::::0;2166:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:8;2255:38;;2276:6;::::0;::::1;;;;;;;;2255:38;;;;;;;;;;;;2313:8;2304:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2085:244:::0;:::o;13835:132::-;13891:21;;;;;;;;;;;13883:39;;:62;13923:21;13883:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13835:132::o;7191:24::-;;;;;;;;;;;;;:::o;4227:192::-;4313:7;4346:1;4341;:6;;4349:12;4333:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4373:9;4389:1;4385;:5;;;;:::i;:::-;4373:17;;4410:1;4403:8;;;4227:192;;;;;:::o;10747:1238::-;10839:4;10859:6;;;;;;;;;;;10856:63;;;10875:41;10890:6;10898:9;10909:6;10875:14;:41::i;:::-;10868:48;;;;10856:63;10935:14;:22;10950:6;10935:22;;;;;;;;;;;;;;;;;;;;;;;;;10934:23;:53;;;;;10962:14;:25;10977:9;10962:25;;;;;;;;;;;;;;;;;;;;;;;;;10961:26;10934:53;10931:139;;;11011:11;;;;;;;;;;;11003:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10931:139;11112:14;:22;11127:6;11112:22;;;;;;;;;;;;;;;;;;;;;;;;;11111:23;:53;;;;;11159:4;11138:26;;:9;:26;;;;11111:53;:84;;;;;5134:42;11169:26;;:9;:26;;;;11111:84;:105;;;;;11212:4;;;;;;;;;;;11199:17;;:9;:17;;;;11111:105;:137;;;;;11233:15;;;;;;;;;;;11220:28;;:9;:28;;;;11111:137;:174;;;;;11265:20;;;;;;;;;;;11252:33;;:9;:33;;;;11111:174;:207;;;;;11290:17;:28;11308:9;11290:28;;;;;;;;;;;;;;;;;;;;;;;;;11289:29;11111:207;11107:399;;;11334:18;11355:20;11365:9;11355;:20::i;:::-;11334:41;;11423:15;;11412:6;11399:10;:19;;;;:::i;:::-;11398:40;;11390:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;11319:187;11107:399;11518:28;11531:6;11539;11518:12;:28::i;:::-;11564:16;:14;:16::i;:::-;11561:35;;;11583:10;:8;:10::i;:::-;11561:35;11626:53;11648:6;11626:53;;;;;;;;;;;;;;;;;:9;:17;11636:6;11626:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11606:9;:17;11616:6;11606:17;;;;;;;;;;;;;;;:73;;;;11692:22;11718:16;:24;11735:6;11718:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;11746:16;:27;11763:9;11746:27;;;;;;;;;;;;;;;;;;;;;;;;;11718:55;11717:103;;11786:34;11794:6;11802;11810:9;11786:7;:34::i;:::-;11717:103;;;11777:6;11717:103;11692:128;;11854:40;11879:14;11854:9;:20;11864:9;11854:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11831:9;:20;11841:9;11831:20;;;;;;;;;;;;;;;:63;;;;11929:9;11912:43;;11921:6;11912:43;;;11940:14;11912:43;;;;;;:::i;:::-;;;;;;;;11973:4;11966:11;;;10747:1238;;;;;;:::o;1056:115::-;1109:15;1152:10;1137:26;;1056:115;:::o;11994:330::-;12087:4;12124:53;12146:6;12124:53;;;;;;;;;;;;;;;;;:9;:17;12134:6;12124:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;12104:9;:17;12114:6;12104:17;;;;;;;;;;;;;;;:73;;;;12211:32;12236:6;12211:9;:20;12221:9;12211:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12188:9;:20;12198:9;12188:20;;;;;;;;;;;;;;;:55;;;;12276:9;12259:35;;12268:6;12259:35;;;12287:6;12259:35;;;;;;:::i;:::-;;;;;;;;12312:4;12305:11;;11994:330;;;;;:::o;12332:168::-;12429:12;;12419:6;:22;;:51;;;;12445:17;:25;12463:6;12445:25;;;;;;;;;;;;;;;;;;;;;;;;;12419:51;12411:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12332:168;;:::o;13626:197::-;13675:4;13713;;;;;;;;;;;13699:18;;:10;:18;;;;:38;;;;;13731:6;;;;;;;;;;;13730:7;13699:38;:62;;;;;13750:11;;;;;;;;;;;13699:62;:116;;;;;13802:13;;13774:9;:24;13792:4;13774:24;;;;;;;;;;;;;;;;:41;;13699:116;13692:123;;13626:197;:::o;14703:1795::-;7483:4;7474:6;;:13;;;;;;;;;;;;;;;;;;14752:27:::1;14794:23:::0;14820:59:::1;14877:1;14820:52;14863:8;;14820:38;14838:19;14820:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;14794:85;;14890:20;14913:34;14931:15;14913:13;;:17;;:34;;;;:::i;:::-;14890:57;;14960:21;14998:1;14984:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14960:40;;15029:4;15011;15016:1;15011:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15055:4;;;;;;;;;;;15045;15050:1;15045:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;15072:21;15096;15072:45;;15130:6;;;;;;;;;;;:57;;;15202:12;15229:1;15245:4;15272;15292:15;15130:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15331:17;15351:40;15377:13;15351:21;:25;;:40;;;;:::i;:::-;15331:60;;15404:19;15426:40;15439:26;15463:1;15439:19;:23;;:26;;;;:::i;:::-;15426:8;;:12;;:40;;;;:::i;:::-;15404:62;;15487:26;15516:58;15572:1;15516:51;15555:11;15516:34;15530:19;15516:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;15487:87;;15585:26;15614:44;15646:11;15614:27;15628:12;;15614:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;15585:73;;15669:24;15696:42;15726:11;15696:25;15710:10;;15696:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;15669:69;;15749:20;15772:38;15798:11;15772:21;15786:6;;15772:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;15749:61;;15824:15;15852:20;;;;;;;;;;;15844:34;;15886:18;15844:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15823:86;;;15944:14;;;;;;;;;;;15936:28;;15972:12;15936:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15920:69;;;;;16024:18;;;;;;;;;;;16016:32;;16056:16;16016:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16000:77;;;;;16111:5;16098:18;;16150:1;16132:15;:19;16129:362;;;16167:6;;;;;;;;;;;:22;;;16197:18;16243:4;16267:15;16301:1;16321::::0;16341:21:::1;;;;;;;;;;;16381:15;16167:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16431:48;16443:18;16463:15;16431:48;;;;;;;:::i;:::-;;;;;;;;16129:362;14741:1757;;;;;;;;;;;;7501:5:::0;7492:6;;:14;;;;;;;;;;;;;;;;;;14703:1795::o;12635:983::-;12721:7;12751:15;12769;;12751:33;;12811:4;;;;;;;;;;;12798:17;;:9;:17;;;12795:142;;12842:11;;12832:21;;12795:142;;;12884:4;;;;;;;;;;;12874:14;;:6;:14;;;12871:66;;12915:10;;12905:20;;12871:66;12795:142;12949:17;12969:60;13024:4;13007:14;;:21;;;;:::i;:::-;12969:33;12994:7;12969:20;12980:8;;12969:6;:10;;:20;;;;:::i;:::-;:24;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;12949:80;;13040:18;13061:36;13088:8;;13061:22;13075:7;;13061:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;13040:57;;13108:22;13133:25;13147:10;13133:9;:13;;:25;;;;:::i;:::-;13108:50;;13196:44;13225:14;13196:9;:24;13214:4;13196:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;13169:9;:24;13187:4;13169:24;;;;;;;;;;;;;;;:71;;;;13280:42;13311:10;13280:9;:26;13290:15;;;;;;;;;;;13280:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;13251:9;:26;13261:15;;;;;;;;;;;13251:26;;;;;;;;;;;;;;;:71;;;;13363:4;13338:47;;13347:6;13338:47;;;13370:14;13338:47;;;;;;:::i;:::-;;;;;;;;13432:1;13419:10;:14;13416:154;;;13464:28;13481:10;13464:12;;:16;;:28;;;;:::i;:::-;13449:12;:43;;;;5207:42;13512:34;;13521:6;13512:34;;;13535:10;13512:34;;;;;;:::i;:::-;;;;;;;;13416:154;13589:21;13600:9;13589:6;:10;;:21;;;;:::i;:::-;13582:28;;;;;;12635:983;;;;;:::o;3898:181::-;3956:7;3976:9;3992:1;3988;:5;;;;:::i;:::-;3976:17;;4017:1;4012;:6;;4004:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4070:1;4063:8;;;3898:181;;;;:::o;4425:250::-;4483:7;4512:1;4507;:6;4503:47;;4537:1;4530:8;;;;4503:47;4562:9;4578:1;4574;:5;;;;:::i;:::-;4562:17;;4607:1;4602;4598;:5;;;;:::i;:::-;:10;4590:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4666:1;4659:8;;;4425:250;;;;;:::o;4681:132::-;4739:7;4766:39;4770:1;4773;4766:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4759:46;;4681:132;;;;:::o;4085:136::-;4143:7;4170:43;4174:1;4177;4170:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4163:50;;4085:136;;;;:::o;4819:189::-;4905:7;4937:1;4933;:5;4940:12;4925:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4964:9;4980:1;4976;:5;;;;:::i;:::-;4964:17;;4999:1;4992:8;;;4819:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:90::-;1818:7;1861:5;1854:13;1847:21;1836:32;;1784:90;;;:::o;1880:109::-;1961:21;1976:5;1961:21;:::i;:::-;1956:3;1949:34;1880:109;;:::o;1995:210::-;2082:4;2120:2;2109:9;2105:18;2097:26;;2133:65;2195:1;2184:9;2180:17;2171:6;2133:65;:::i;:::-;1995:210;;;;:::o;2292:117::-;2401:1;2398;2391:12;2538:126;2575:7;2615:42;2608:5;2604:54;2593:65;;2538:126;;;:::o;2670:96::-;2707:7;2736:24;2754:5;2736:24;:::i;:::-;2725:35;;2670:96;;;:::o;2772:122::-;2845:24;2863:5;2845:24;:::i;:::-;2838:5;2835:35;2825:63;;2884:1;2881;2874:12;2825:63;2772:122;:::o;2900:139::-;2946:5;2984:6;2971:20;2962:29;;3000:33;3027:5;3000:33;:::i;:::-;2900:139;;;;:::o;3045:122::-;3118:24;3136:5;3118:24;:::i;:::-;3111:5;3108:35;3098:63;;3157:1;3154;3147:12;3098:63;3045:122;:::o;3173:139::-;3219:5;3257:6;3244:20;3235:29;;3273:33;3300:5;3273:33;:::i;:::-;3173:139;;;;:::o;3318:474::-;3386:6;3394;3443:2;3431:9;3422:7;3418:23;3414:32;3411:119;;;3449:79;;:::i;:::-;3411:119;3569:1;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3540:117;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3318:474;;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:619::-;5952:6;5960;5968;6017:2;6005:9;5996:7;5992:23;5988:32;5985:119;;;6023:79;;:::i;:::-;5985:119;6143:1;6168:53;6213:7;6204:6;6193:9;6189:22;6168:53;:::i;:::-;6158:63;;6114:117;6270:2;6296:53;6341:7;6332:6;6321:9;6317:22;6296:53;:::i;:::-;6286:63;;6241:118;6398:2;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6369:118;5875:619;;;;;:::o;6500:474::-;6568:6;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;6500:474;;;;;:::o;6980:116::-;7050:21;7065:5;7050:21;:::i;:::-;7043:5;7040:32;7030:60;;7086:1;7083;7076:12;7030:60;6980:116;:::o;7102:133::-;7145:5;7183:6;7170:20;7161:29;;7199:30;7223:5;7199:30;:::i;:::-;7102:133;;;;:::o;7241:468::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:50;7556:7;7547:6;7536:9;7532:22;7514:50;:::i;:::-;7504:60;;7460:114;7613:2;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7584:118;7241:468;;;;;:::o;7715:60::-;7743:3;7764:5;7757:12;;7715:60;;;:::o;7781:142::-;7831:9;7864:53;7882:34;7891:24;7909:5;7891:24;:::i;:::-;7882:34;:::i;:::-;7864:53;:::i;:::-;7851:66;;7781:142;;;:::o;7929:126::-;7979:9;8012:37;8043:5;8012:37;:::i;:::-;7999:50;;7929:126;;;:::o;8061:144::-;8129:9;8162:37;8193:5;8162:37;:::i;:::-;8149:50;;8061:144;;;:::o;8211:167::-;8316:55;8365:5;8316:55;:::i;:::-;8311:3;8304:68;8211:167;;:::o;8384:258::-;8495:4;8533:2;8522:9;8518:18;8510:26;;8546:89;8632:1;8621:9;8617:17;8608:6;8546:89;:::i;:::-;8384:258;;;;:::o;8648:182::-;8788:34;8784:1;8776:6;8772:14;8765:58;8648:182;:::o;8836:366::-;8978:3;8999:67;9063:2;9058:3;8999:67;:::i;:::-;8992:74;;9075:93;9164:3;9075:93;:::i;:::-;9193:2;9188:3;9184:12;9177:19;;8836:366;;;:::o;9208:419::-;9374:4;9412:2;9401:9;9397:18;9389:26;;9461:9;9455:4;9451:20;9447:1;9436:9;9432:17;9425:47;9489:131;9615:4;9489:131;:::i;:::-;9481:139;;9208:419;;;:::o;9633:180::-;9681:77;9678:1;9671:88;9778:4;9775:1;9768:15;9802:4;9799:1;9792:15;9819:410;9859:7;9882:20;9900:1;9882:20;:::i;:::-;9877:25;;9916:20;9934:1;9916:20;:::i;:::-;9911:25;;9971:1;9968;9964:9;9993:30;10011:11;9993:30;:::i;:::-;9982:41;;10172:1;10163:7;10159:15;10156:1;10153:22;10133:1;10126:9;10106:83;10083:139;;10202:18;;:::i;:::-;10083:139;9867:362;9819:410;;;;:::o;10235:180::-;10283:77;10280:1;10273:88;10380:4;10377:1;10370:15;10404:4;10401:1;10394:15;10421:185;10461:1;10478:20;10496:1;10478:20;:::i;:::-;10473:25;;10512:20;10530:1;10512:20;:::i;:::-;10507:25;;10551:1;10541:35;;10556:18;;:::i;:::-;10541:35;10598:1;10595;10591:9;10586:14;;10421:185;;;;:::o;10612:332::-;10733:4;10771:2;10760:9;10756:18;10748:26;;10784:71;10852:1;10841:9;10837:17;10828:6;10784:71;:::i;:::-;10865:72;10933:2;10922:9;10918:18;10909:6;10865:72;:::i;:::-;10612:332;;;;;:::o;10950:137::-;11004:5;11035:6;11029:13;11020:22;;11051:30;11075:5;11051:30;:::i;:::-;10950:137;;;;:::o;11093:345::-;11160:6;11209:2;11197:9;11188:7;11184:23;11180:32;11177:119;;;11215:79;;:::i;:::-;11177:119;11335:1;11360:61;11413:7;11404:6;11393:9;11389:22;11360:61;:::i;:::-;11350:71;;11306:125;11093:345;;;;:::o;11444:320::-;11559:4;11597:2;11586:9;11582:18;11574:26;;11610:71;11678:1;11667:9;11663:17;11654:6;11610:71;:::i;:::-;11691:66;11753:2;11742:9;11738:18;11729:6;11691:66;:::i;:::-;11444:320;;;;;:::o;11770:225::-;11910:34;11906:1;11898:6;11894:14;11887:58;11979:8;11974:2;11966:6;11962:15;11955:33;11770:225;:::o;12001:366::-;12143:3;12164:67;12228:2;12223:3;12164:67;:::i;:::-;12157:74;;12240:93;12329:3;12240:93;:::i;:::-;12358:2;12353:3;12349:12;12342:19;;12001:366;;;:::o;12373:419::-;12539:4;12577:2;12566:9;12562:18;12554:26;;12626:9;12620:4;12616:20;12612:1;12601:9;12597:17;12590:47;12654:131;12780:4;12654:131;:::i;:::-;12646:139;;12373:419;;;:::o;12798:194::-;12838:4;12858:20;12876:1;12858:20;:::i;:::-;12853:25;;12892:20;12910:1;12892:20;:::i;:::-;12887:25;;12936:1;12933;12929:9;12921:17;;12960:1;12954:4;12951:11;12948:37;;;12965:18;;:::i;:::-;12948:37;12798:194;;;;:::o;12998:170::-;13138:22;13134:1;13126:6;13122:14;13115:46;12998:170;:::o;13174:366::-;13316:3;13337:67;13401:2;13396:3;13337:67;:::i;:::-;13330:74;;13413:93;13502:3;13413:93;:::i;:::-;13531:2;13526:3;13522:12;13515:19;;13174:366;;;:::o;13546:419::-;13712:4;13750:2;13739:9;13735:18;13727:26;;13799:9;13793:4;13789:20;13785:1;13774:9;13770:17;13763:47;13827:131;13953:4;13827:131;:::i;:::-;13819:139;;13546:419;;;:::o;13971:191::-;14011:3;14030:20;14048:1;14030:20;:::i;:::-;14025:25;;14064:20;14082:1;14064:20;:::i;:::-;14059:25;;14107:1;14104;14100:9;14093:16;;14128:3;14125:1;14122:10;14119:36;;;14135:18;;:::i;:::-;14119:36;13971:191;;;;:::o;14168:249::-;14308:34;14304:1;14296:6;14292:14;14285:58;14377:32;14372:2;14364:6;14360:15;14353:57;14168:249;:::o;14423:366::-;14565:3;14586:67;14650:2;14645:3;14586:67;:::i;:::-;14579:74;;14662:93;14751:3;14662:93;:::i;:::-;14780:2;14775:3;14771:12;14764:19;;14423:366;;;:::o;14795:419::-;14961:4;14999:2;14988:9;14984:18;14976:26;;15048:9;15042:4;15038:20;15034:1;15023:9;15019:17;15012:47;15076:131;15202:4;15076:131;:::i;:::-;15068:139;;14795:419;;;:::o;15220:167::-;15360:19;15356:1;15348:6;15344:14;15337:43;15220:167;:::o;15393:366::-;15535:3;15556:67;15620:2;15615:3;15556:67;:::i;:::-;15549:74;;15632:93;15721:3;15632:93;:::i;:::-;15750:2;15745:3;15741:12;15734:19;;15393:366;;;:::o;15765:419::-;15931:4;15969:2;15958:9;15954:18;15946:26;;16018:9;16012:4;16008:20;16004:1;15993:9;15989:17;15982:47;16046:131;16172:4;16046:131;:::i;:::-;16038:139;;15765:419;;;:::o;16190:180::-;16238:77;16235:1;16228:88;16335:4;16332:1;16325:15;16359:4;16356:1;16349:15;16376:180;16424:77;16421:1;16414:88;16521:4;16518:1;16511:15;16545:4;16542:1;16535:15;16562:85;16607:7;16636:5;16625:16;;16562:85;;;:::o;16653:158::-;16711:9;16744:61;16762:42;16771:32;16797:5;16771:32;:::i;:::-;16762:42;:::i;:::-;16744:61;:::i;:::-;16731:74;;16653:158;;;:::o;16817:147::-;16912:45;16951:5;16912:45;:::i;:::-;16907:3;16900:58;16817:147;;:::o;16970:114::-;17037:6;17071:5;17065:12;17055:22;;16970:114;;;:::o;17090:184::-;17189:11;17223:6;17218:3;17211:19;17263:4;17258:3;17254:14;17239:29;;17090:184;;;;:::o;17280:132::-;17347:4;17370:3;17362:11;;17400:4;17395:3;17391:14;17383:22;;17280:132;;;:::o;17418:108::-;17495:24;17513:5;17495:24;:::i;:::-;17490:3;17483:37;17418:108;;:::o;17532:179::-;17601:10;17622:46;17664:3;17656:6;17622:46;:::i;:::-;17700:4;17695:3;17691:14;17677:28;;17532:179;;;;:::o;17717:113::-;17787:4;17819;17814:3;17810:14;17802:22;;17717:113;;;:::o;17866:732::-;17985:3;18014:54;18062:5;18014:54;:::i;:::-;18084:86;18163:6;18158:3;18084:86;:::i;:::-;18077:93;;18194:56;18244:5;18194:56;:::i;:::-;18273:7;18304:1;18289:284;18314:6;18311:1;18308:13;18289:284;;;18390:6;18384:13;18417:63;18476:3;18461:13;18417:63;:::i;:::-;18410:70;;18503:60;18556:6;18503:60;:::i;:::-;18493:70;;18349:224;18336:1;18333;18329:9;18324:14;;18289:284;;;18293:14;18589:3;18582:10;;17990:608;;;17866:732;;;;:::o;18604:831::-;18867:4;18905:3;18894:9;18890:19;18882:27;;18919:71;18987:1;18976:9;18972:17;18963:6;18919:71;:::i;:::-;19000:80;19076:2;19065:9;19061:18;19052:6;19000:80;:::i;:::-;19127:9;19121:4;19117:20;19112:2;19101:9;19097:18;19090:48;19155:108;19258:4;19249:6;19155:108;:::i;:::-;19147:116;;19273:72;19341:2;19330:9;19326:18;19317:6;19273:72;:::i;:::-;19355:73;19423:3;19412:9;19408:19;19399:6;19355:73;:::i;:::-;18604:831;;;;;;;;:::o;19441:147::-;19542:11;19579:3;19564:18;;19441:147;;;;:::o;19594:114::-;;:::o;19714:398::-;19873:3;19894:83;19975:1;19970:3;19894:83;:::i;:::-;19887:90;;19986:93;20075:3;19986:93;:::i;:::-;20104:1;20099:3;20095:11;20088:18;;19714:398;;;:::o;20118:379::-;20302:3;20324:147;20467:3;20324:147;:::i;:::-;20317:154;;20488:3;20481:10;;20118:379;;;:::o;20503:807::-;20752:4;20790:3;20779:9;20775:19;20767:27;;20804:71;20872:1;20861:9;20857:17;20848:6;20804:71;:::i;:::-;20885:72;20953:2;20942:9;20938:18;20929:6;20885:72;:::i;:::-;20967:80;21043:2;21032:9;21028:18;21019:6;20967:80;:::i;:::-;21057;21133:2;21122:9;21118:18;21109:6;21057:80;:::i;:::-;21147:73;21215:3;21204:9;21200:19;21191:6;21147:73;:::i;:::-;21230;21298:3;21287:9;21283:19;21274:6;21230:73;:::i;:::-;20503:807;;;;;;;;;:::o;21316:143::-;21373:5;21404:6;21398:13;21389:22;;21420:33;21447:5;21420:33;:::i;:::-;21316:143;;;;:::o;21465:663::-;21553:6;21561;21569;21618:2;21606:9;21597:7;21593:23;21589:32;21586:119;;;21624:79;;:::i;:::-;21586:119;21744:1;21769:64;21825:7;21816:6;21805:9;21801:22;21769:64;:::i;:::-;21759:74;;21715:128;21882:2;21908:64;21964:7;21955:6;21944:9;21940:22;21908:64;:::i;:::-;21898:74;;21853:129;22021:2;22047:64;22103:7;22094:6;22083:9;22079:22;22047:64;:::i;:::-;22037:74;;21992:129;21465:663;;;;;:::o;22134:332::-;22255:4;22293:2;22282:9;22278:18;22270:26;;22306:71;22374:1;22363:9;22359:17;22350:6;22306:71;:::i;:::-;22387:72;22455:2;22444:9;22440:18;22431:6;22387:72;:::i;:::-;22134:332;;;;;:::o;22472:177::-;22612:29;22608:1;22600:6;22596:14;22589:53;22472:177;:::o;22655:366::-;22797:3;22818:67;22882:2;22877:3;22818:67;:::i;:::-;22811:74;;22894:93;22983:3;22894:93;:::i;:::-;23012:2;23007:3;23003:12;22996:19;;22655:366;;;:::o;23027:419::-;23193:4;23231:2;23220:9;23216:18;23208:26;;23280:9;23274:4;23270:20;23266:1;23255:9;23251:17;23244:47;23308:131;23434:4;23308:131;:::i;:::-;23300:139;;23027:419;;;:::o;23452:220::-;23592:34;23588:1;23580:6;23576:14;23569:58;23661:3;23656:2;23648:6;23644:15;23637:28;23452:220;:::o;23678:366::-;23820:3;23841:67;23905:2;23900:3;23841:67;:::i;:::-;23834:74;;23917:93;24006:3;23917:93;:::i;:::-;24035:2;24030:3;24026:12;24019:19;;23678:366;;;:::o;24050:419::-;24216:4;24254:2;24243:9;24239:18;24231:26;;24303:9;24297:4;24293:20;24289:1;24278:9;24274:17;24267:47;24331:131;24457:4;24331:131;:::i;:::-;24323:139;;24050:419;;;:::o
Swarm Source
ipfs://75f82582b914fab99eb45ce3d651cf16b71af90175743d7bb7abf365a617e7df
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.