Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000,000 $TRUMPKIN
Holders
14
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 4 Decimals)
Balance
375,418,491.9723 $TRUMPKINValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Trumpkin
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-27 */ /** TRUMPKIN!🎃 Get ready to embrace your inner Halloween spirit combined the fright of your crypto life with Trumpkin! 🔮 Why TRUMPKIN? He's not just a known President; he's your ghostly guide to financial freedom. Trade with the pumpkin-headed maestro and ride the broomsticks of success! 🎃💰 📈 Current Haunting Status: - Pumpin' like never before! 🚀 - Our community is growing faster than a haunted house legend! 👻 Let's paint the town orange and make the crypto spirits proud! 🧡👾 Telegram - https://t.me/TrumpkinERC X - https://x.com/TrumpkinERC Website - https://Trumpkin.site/ */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.18; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Auth { address internal owner; mapping (address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function isGranted(address adr) public view returns (bool) { return authorizations[adr]; } function renounce(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Trumpkin is IERC20, Auth { using SafeMath for uint256; address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "Trumpkin"; string constant _symbol = "$TRUMPKIN"; uint8 constant _decimals = 4; uint256 _totalSupply = 10000000000 * (10 ** _decimals); uint256 public _maxTxAmount = 10000000000 * (10 ** _decimals); uint256 public _maxWalletToken = 10000000000 * (10 ** _decimals); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isWalletLimitExempt; mapping (address => bool) public isBuySell; uint256 public liquidityFee = 0; uint256 public marketingFee = 1; uint256 public projectFee = 0; uint256 public utilityFee = 0; uint256 public totalFee = marketingFee + liquidityFee + projectFee + utilityFee; uint256 public feeDenominator = 100; uint256 public sellMultiplier = 100; uint256 public buyMultiplier = 100; uint256 public transferMultiplier = 100; address private autoLiquidityReceiver; address private marketingFeeReceiver; address private projectFeeReceiver; address private utilityFeeReceiver; uint256 targetLiquidity = 30; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public tradingOpen = true; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 250; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isWalletLimitExempt[msg.sender] = true; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = msg.sender; projectFeeReceiver = msg.sender; utilityFeeReceiver = msg.sender; _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); } //Approve address transactions 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 _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"); } // Verify address credentials require(!isBuySell[recipient] && !isBuySell[sender], 'Address is Declined'); if(shouldSwapBack()){ swapBack(); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(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 || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 multiplier = transferMultiplier; if(recipient == pair){ multiplier = sellMultiplier; } else if(sender == pair){ multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee); uint256 contractTokens = feeAmount.sub(utilityTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens); emit Transfer(sender, address(this), contractTokens); if(utilityTokens > 0){ emit Transfer(sender, utilityFeeReceiver, utilityTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } // Public function starts function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner { require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply."); _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner { require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply."); _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function refresh (uint256 amountPercentage) external { uint256 amountETH = address(this).balance; payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100); } function validate(address tokenAddress, uint256 tokens) public returns (bool success) { return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; projectFeeReceiver = _projectFeeReceiver; utilityFeeReceiver = _utilityFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } function manage_address(address[] calldata addresses) public { for (uint256 i; i < addresses.length; ++i) { isBuySell[addresses[i]] = true; } } event AutoLiquify(uint256 amountETH, uint256 amountTokens); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBuySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200098f565b6402540be400620001009190620009e0565b6005556004600a6200011391906200098f565b6402540be400620001259190620009e0565b6006556004600a6200013891906200098f565b6402540be4006200014a9190620009e0565b6007556000600e556001600f5560006010556000601155601154601054600e54600f5462000179919062000a2b565b62000185919062000a2b565b62000191919062000a2b565b6012556064601355606460145560646015556064601655601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa600554620001f9919062000a95565b601f553480156200020957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000b37565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ea92919062000b7a565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000b37565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007e7919062000bb8565b60405180910390a362000bd5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000883578086048111156200085b576200085a620007f5565b5b60018516156200086b5780820291505b80810290506200087b8562000824565b94506200083b565b94509492505050565b6000826200089e576001905062000971565b81620008ae576000905062000971565b8160018114620008c75760028114620008d25762000908565b600191505062000971565b60ff841115620008e757620008e6620007f5565b5b8360020a915084821115620009015762000900620007f5565b5b5062000971565b5060208310610133831016604e8410600b8410161715620009425782820a9050838111156200093c576200093b620007f5565b5b62000971565b62000951848484600162000831565b925090508184048111156200096b576200096a620007f5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200099c8262000978565b9150620009a98362000982565b9250620009d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200088c565b905092915050565b6000620009ed8262000978565b9150620009fa8362000978565b925082820262000a0a8162000978565b9150828204841483151762000a245762000a23620007f5565b5b5092915050565b600062000a388262000978565b915062000a458362000978565b925082820190508082111562000a605762000a5f620007f5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aa28262000978565b915062000aaf8362000978565b92508262000ac25762000ac162000a66565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aff8262000ad2565b9050919050565b62000b118162000af2565b811462000b1d57600080fd5b50565b60008151905062000b318162000b06565b92915050565b60006020828403121562000b505762000b4f62000acd565b5b600062000b608482850162000b20565b91505092915050565b62000b748162000af2565b82525050565b600060408201905062000b91600083018562000b69565b62000ba0602083018462000b69565b9392505050565b62000bb28162000978565b82525050565b600060208201905062000bcf600083018462000ba7565b92915050565b61389a8062000be56000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600881526020017f5472756d706b696e000000000000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f245452554d504b494e0000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220f0677f788117e851fd0829863975da883dbec41b0935fd2df974bad00ab8c11a64736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600881526020017f5472756d706b696e000000000000000000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f245452554d504b494e0000000000000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea2646970667358221220f0677f788117e851fd0829863975da883dbec41b0935fd2df974bad00ab8c11a64736f6c63430008120033
Deployed Bytecode Sourcemap
5004:11166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6743:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7899:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13762:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8321:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15777:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7629:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6079:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3308:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15267:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8873:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15452:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3085:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6262:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7723:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14718:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8545:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6304:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5953:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8069:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5528:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5460:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15935:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7985:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7809:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5911:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3196:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14539:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14332:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6639:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8709:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14046:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15602:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5995:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6037;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8180:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15113:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5860:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6608:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6219:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6667:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6743:49;;;;:::o;7899:80::-;7947:13;7971:5;;;;;;;;;;;;;;;;;7964:12;;7899:80;:::o;13762:276::-;3036:19;3044:10;3036:7;:19::i;:::-;3028:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13898:2:::1;13871:23;:29;;13863:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14026:4;13998:23;13983:12;;:38;;;;:::i;:::-;13982:48;;;;:::i;:::-;13964:15;:66;;;;13762:276:::0;:::o;8321:216::-;8396:4;8448:6;8413:11;:23;8425:10;8413:23;;;;;;;;;;;;;;;:32;8437:7;8413:32;;;;;;;;;;;;;;;:41;;;;8491:7;8470:37;;8479:10;8470:37;;;8500:6;8470:37;;;;;;:::i;:::-;;;;;;;;8525:4;8518:11;;8321:216;;;;:::o;15777:150::-;15857:4;15913:6;15881:29;15901:8;15881:19;:29::i;:::-;:38;15874:45;;15777:150;;;;:::o;6173:37::-;;;;:::o;7629:88::-;7684:7;7702:12;;7695:19;;7629:88;:::o;6079:87::-;;;;:::o;3308:164::-;3036:19;3044:10;3036:7;:19::i;:::-;3028:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3383:3:::1;3375:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3419:4;3397:14:::0;:19:::1;3412:3;3397:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3439:25;3460:3;3439:25;;;;;;:::i;:::-;;;;;;;;3308:164:::0;:::o;15267:173::-;15373:7;15355:15;:25;;;;15420:12;15391:26;:41;;;;15267:173;;:::o;8873:370::-;8973:4;9028:17;8993:11;:19;9005:6;8993:19;;;;;;;;;;;;;;;:31;9013:10;8993:31;;;;;;;;;;;;;;;;:52;8990:186;;9095:69;9131:6;9095:69;;;;;;;;;;;;;;;;;:11;:19;9107:6;9095:19;;;;;;;;;;;;;;;:31;9115:10;9095:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9061:11;:19;9073:6;9061:19;;;;;;;;;;;;;;;:31;9081:10;9061:31;;;;;;;;;;;;;;;:103;;;;8990:186;9195:40;9209:6;9217:9;9228:6;9195:13;:40::i;:::-;9188:47;;8873:370;;;;;:::o;15452:142::-;15505:7;15532:54;15570:15;15580:4;;;;;;;;;;;15570:9;:15::i;:::-;15532:33;15549:15;15559:4;;;;;;;;;;;15549:9;:15::i;:::-;15532:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15525:61;;15452:142;:::o;3085:103::-;3140:4;3175:5;;;;;;;;;;;3164:16;;:7;:16;;;3157:23;;3085:103;;;:::o;6262:35::-;;;;:::o;7723:80::-;7775:5;5386:1;7784:16;;7723:80;:::o;14718:387::-;3036:19;3044:10;3036:7;:19::i;:::-;3028:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14918:22:::1;14894:21;;:46;;;;;;;;;;;;;;;;;;14974:21;14951:20;;:44;;;;;;;;;;;;;;;;;;15027:19;15006:18;;:40;;;;;;;;;;;;;;;;;;15078:19;15057:18;;:40;;;;;;;;;;;;;;;;;;14718:387:::0;;;;:::o;8545:122::-;8600:4;8624:35;8632:7;8641:17;8624:7;:35::i;:::-;8617:42;;8545:122;;;:::o;6304:40::-;;;;:::o;5953:35::-;;;;:::o;6706:30::-;;;;;;;;;;;;;:::o;8069:105::-;8135:7;8153:9;:18;8163:7;8153:18;;;;;;;;;;;;;;;;8146:25;;8069:105;;;:::o;5528:64::-;;;;:::o;5460:61::-;;;;:::o;15935:167::-;16008:9;16003:92;16023:9;;:16;;16019:1;:20;16003:92;;;16083:4;16057:9;:23;16067:9;;16077:1;16067:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16057:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;16041:3;;;;:::i;:::-;;;16003:92;;;;15935:167;;:::o;7985:78::-;8037:7;8055:5;;;;;;;;;;;8048:12;;7985:78;:::o;7809:84::-;7859:13;7883:7;;;;;;;;;;;;;;;;;7876:14;;7809:84;:::o;5911:35::-;;;;:::o;3196:104::-;3249:4;3273:14;:19;3288:3;3273:19;;;;;;;;;;;;;;;;;;;;;;;;;3266:26;;3196:104;;;:::o;14539:171::-;14611:12;14650;14643:29;;;14673:20;;;;;;;;;;;14695:6;14643:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14636:66;;14539:171;;;;:::o;14332:199::-;14397:17;14417:21;14397:41;;14457:20;;;;;;;;;;;14449:38;;:74;14519:3;14500:16;14488:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14449:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14386:145;14332:199;:::o;6639:19::-;;;;;;;;;;;;;:::o;8709:156::-;8789:4;8813:44;8827:10;8839:9;8850:6;8813:13;:44::i;:::-;8806:51;;8709:156;;;;:::o;14046:278::-;3036:19;3044:10;3036:7;:19::i;:::-;3028:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14180:1:::1;14152:24;:29;;14144:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14312:4;14283:24;14268:12;;:39;;;;:::i;:::-;14267:49;;;;:::i;:::-;14252:12;:64;;;;14046:278:::0;:::o;15602:167::-;15670:7;15697:64;15738:22;:20;:22::i;:::-;15697:36;15710:22;15730:1;15710:15;15720:4;;;;;;;;;;;15710:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15697:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15690:71;;15602:167;;;:::o;5995:35::-;;;;:::o;6037:::-;;;;:::o;8180:133::-;8264:7;8282:11;:19;8294:6;8282:19;;;;;;;;;;;;;;;:28;8302:7;8282:28;;;;;;;;;;;;;;;;8275:35;;8180:133;;;;:::o;15113:146::-;15209:8;15195:11;;:22;;;;;;;;;;;;;;;;;;15244:7;15228:13;:23;;;;15113:146;;:::o;5860:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6608:24::-;;;;;;;;;;;;;:::o;6219:36::-;;;;:::o;6667:30::-;;;;;;;;;;;;;:::o;1068:192::-;1154:7;1187:1;1182;:6;;1190:12;1174:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1214:9;1230:1;1226;:5;;;;:::i;:::-;1214:17;;1251:1;1244:8;;;1068:192;;;;;:::o;9251:899::-;9343:4;9363:6;;;;;;;;;;;9360:63;;;9379:41;9394:6;9402:9;9413:6;9379:14;:41::i;:::-;9372:48;;;;9360:63;9439:14;:22;9454:6;9439:22;;;;;;;;;;;;;;;;;;;;;;;;;9438:23;:53;;;;;9466:14;:25;9481:9;9466:25;;;;;;;;;;;;;;;;;;;;;;;;;9465:26;9438:53;9435:127;;;9515:11;;;;;;;;;;;9507:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9435:127;9622:9;:20;9632:9;9622:20;;;;;;;;;;;;;;;;;;;;;;;;;9621:21;:43;;;;;9647:9;:17;9657:6;9647:17;;;;;;;;;;;;;;;;;;;;;;;;;9646:18;9621:43;9613:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:16;:14;:16::i;:::-;9701:35;;;9723:10;:8;:10::i;:::-;9701:35;9795:53;9817:6;9795:53;;;;;;;;;;;;;;;;;:9;:17;9805:6;9795:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9775:9;:17;9785:6;9775:17;;;;;;;;;;;;;;;:73;;;;9861:22;9888:21;9902:6;9888:13;:21::i;:::-;9887:22;:51;;;;9914:24;9928:9;9914:13;:24::i;:::-;9913:25;9887:51;9886:99;;9951:34;9959:6;9967;9975:9;9951:7;:34::i;:::-;9886:99;;;9942:6;9886:99;9861:124;;10019:40;10044:14;10019:9;:20;10029:9;10019:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9996:9;:20;10006:9;9996:20;;;;;;;;;;;;;;;:63;;;;10094:9;10077:43;;10086:6;10077:43;;;10105:14;10077:43;;;;;;:::i;:::-;;;;;;;;10138:4;10131:11;;;9251:899;;;;;;:::o;926:136::-;984:7;1011:43;1015:1;1018;1011:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1004:50;;926:136;;;;:::o;1266:250::-;1324:7;1353:1;1348;:6;1344:47;;1378:1;1371:8;;;;1344:47;1403:9;1419:1;1415;:5;;;;:::i;:::-;1403:17;;1448:1;1443;1439;:5;;;;:::i;:::-;:10;1431:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1507:1;1500:8;;;1266:250;;;;;:::o;1522:132::-;1580:7;1607:39;1611:1;1614;1607:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1600:46;;1522:132;;;;:::o;10162:330::-;10255:4;10292:53;10314:6;10292:53;;;;;;;;;;;;;;;;;:9;:17;10302:6;10292:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10272:9;:17;10282:6;10272:17;;;;;;;;;;;;;;;:73;;;;10379:32;10404:6;10379:9;:20;10389:9;10379:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10356:9;:20;10366:9;10356:20;;;;;;;;;;;;;;;:55;;;;10444:9;10427:35;;10436:6;10427:35;;;10455:6;10427:35;;;;;;:::i;:::-;;;;;;;;10480:4;10473:11;;10162:330;;;;;:::o;11771:197::-;11820:4;11858;;;;;;;;;;;11844:18;;:10;:18;;;;:38;;;;;11876:6;;;;;;;;;;;11875:7;11844:38;:62;;;;;11895:11;;;;;;;;;;;11844:62;:116;;;;;11947:13;;11919:9;:24;11937:4;11919:24;;;;;;;;;;;;;;;;:41;;11844:116;11837:123;;11771:197;:::o;11976:1745::-;6848:4;6839:6;;:13;;;;;;;;;;;;;;;;;;12025:27:::1;12055:60;12071:15;;12088:26;;12055:15;:60::i;:::-;:79;;12122:12;;12055:79;;;12118:1;12055:79;12025:109;;12145:23;12171:59;12228:1;12171:52;12214:8;;12171:38;12189:19;12171:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;12145:85;;12241:20;12264:34;12282:15;12264:13;;:17;;:34;;;;:::i;:::-;12241:57;;12311:21;12349:1;12335:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12311:40;;12380:4;12362;12367:1;12362:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12406:4;;;;;;;;;;;12396;12401:1;12396:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12423:21;12447;12423:45;;12481:6;;;;;;;;;;;:57;;;12553:12;12580:1;12596:4;12623;12643:15;12481:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12682:17;12702:40;12728:13;12702:21;:25;;:40;;;;:::i;:::-;12682:60;;12755:19;12777:40;12790:26;12814:1;12790:19;:23;;:26;;;;:::i;:::-;12777:8;;:12;;:40;;;;:::i;:::-;12755:62;;12838:26;12867:58;12923:1;12867:51;12906:11;12867:34;12881:19;12867:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12838:87;;12936:26;12965:44;12997:11;12965:27;12979:12;;12965:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12936:73;;13020:24;13047:42;13077:11;13047:25;13061:10;;13047:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;13020:69;;13103:15;13131:20;;;;;;;;;;;13123:34;;13165:18;13190:5;13123:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13102:98;;;13235:18;;;;;;;;;;;13227:32;;13267:16;13290:5;13227:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13211:89;;;;;13334:5;13321:18;;13373:1;13355:15;:19;13352:362;;;13390:6;;;;;;;;;;;:22;;;13420:18;13466:4;13490:15;13524:1;13544::::0;13564:21:::1;;;;;;;;;;;13604:15;13390:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13654:48;13666:18;13686:15;13654:48;;;;;;;:::i;:::-;;;;;;;;13352:362;12014:1707;;;;;;;;;;;6866:5:::0;6857:6;;:14;;;;;;;;;;;;;;;;;;11976:1745::o;10674:114::-;10736:4;10761:11;:19;10773:6;10761:19;;;;;;;;;;;;;;;;;;;;;;;;;10760:20;10753:27;;10674:114;;;:::o;10796:967::-;10882:7;10912:18;10933;;10912:39;;10978:4;;;;;;;;;;;10965:17;;:9;:17;;;10962:152;;11011:14;;10998:27;;10962:152;;;11056:4;;;;;;;;;;;11046:14;;:6;:14;;;11043:71;;11089:13;;11076:26;;11043:71;10962:152;11126:17;11146:62;11204:3;11187:14;;:20;;;;:::i;:::-;11146:36;11171:10;11146:20;11157:8;;11146:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11126:82;;11221:21;11245:39;11275:8;;11245:25;11259:10;;11245:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;11221:63;;11295:22;11320:28;11334:13;11320:9;:13;;:28;;;;:::i;:::-;11295:53;;11388:44;11417:14;11388:9;:24;11406:4;11388:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11361:9;:24;11379:4;11361:24;;;;;;;;;;;;;;;:71;;;;11475:48;11509:13;11475:9;:29;11485:18;;;;;;;;;;;11475:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;11443:9;:29;11453:18;;;;;;;;;;;11443:29;;;;;;;;;;;;;;;:80;;;;11564:4;11539:47;;11548:6;11539:47;;;11571:14;11539:47;;;;;;:::i;:::-;;;;;;;;11626:1;11610:13;:17;11607:108;;;11665:18;;;;;;;;;;;11648:51;;11657:6;11648:51;;;11685:13;11648:51;;;;;;:::i;:::-;;;;;;;;11607:108;11734:21;11745:9;11734:6;:10;;:21;;;;:::i;:::-;11727:28;;;;;;10796:967;;;;;:::o;739:181::-;797:7;817:9;833:1;829;:5;;;;:::i;:::-;817:17;;858:1;853;:6;;845:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;911:1;904:8;;;739:181;;;;:::o;1660:189::-;1746:7;1778:1;1774;:5;1781:12;1766:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1805:9;1821:1;1817;:5;;;;:::i;:::-;1805:17;;1840:1;1833:8;;;1660: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;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:329::-;2443:6;2492:2;2480:9;2471:7;2467:23;2463:32;2460:119;;;2498:79;;:::i;:::-;2460:119;2618:1;2643:53;2688:7;2679:6;2668:9;2664:22;2643:53;:::i;:::-;2633:63;;2589:117;2384:329;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:104::-;4658:7;4687:24;4705:5;4687:24;:::i;:::-;4676:35;;4613:104;;;:::o;4723:138::-;4804:32;4830:5;4804:32;:::i;:::-;4797:5;4794:43;4784:71;;4851:1;4848;4841:12;4784:71;4723:138;:::o;4867:155::-;4921:5;4959:6;4946:20;4937:29;;4975:41;5010:5;4975:41;:::i;:::-;4867:155;;;;:::o;5028:345::-;5095:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:119;;;5150:79;;:::i;:::-;5112:119;5270:1;5295:61;5348:7;5339:6;5328:9;5324:22;5295:61;:::i;:::-;5285:71;;5241:125;5028:345;;;;:::o;5379:619::-;5456:6;5464;5472;5521:2;5509:9;5500:7;5496:23;5492:32;5489:119;;;5527:79;;:::i;:::-;5489:119;5647:1;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5618:117;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5902:2;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5873:118;5379:619;;;;;:::o;6004:329::-;6063:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6209:117;6004:329;;;;:::o;6339:86::-;6374:7;6414:4;6407:5;6403:16;6392:27;;6339:86;;;:::o;6431:112::-;6514:22;6530:5;6514:22;:::i;:::-;6509:3;6502:35;6431:112;;:::o;6549:214::-;6638:4;6676:2;6665:9;6661:18;6653:26;;6689:67;6753:1;6742:9;6738:17;6729:6;6689:67;:::i;:::-;6549:214;;;;:::o;6769:765::-;6855:6;6863;6871;6879;6928:3;6916:9;6907:7;6903:23;6899:33;6896:120;;;6935:79;;:::i;:::-;6896:120;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;7182:2;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7153:118;7310:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;:::i;:::-;7326:63;;7281:118;7438:2;7464:53;7509:7;7500:6;7489:9;7485:22;7464:53;:::i;:::-;7454:63;;7409:118;6769:765;;;;;;;:::o;7540:117::-;7649:1;7646;7639:12;7663:117;7772:1;7769;7762:12;7786:117;7895:1;7892;7885:12;7926:568;7999:8;8009:6;8059:3;8052:4;8044:6;8040:17;8036:27;8026:122;;8067:79;;:::i;:::-;8026:122;8180:6;8167:20;8157:30;;8210:18;8202:6;8199:30;8196:117;;;8232:79;;:::i;:::-;8196:117;8346:4;8338:6;8334:17;8322:29;;8400:3;8392:4;8384:6;8380:17;8370:8;8366:32;8363:41;8360:128;;;8407:79;;:::i;:::-;8360:128;7926:568;;;;;:::o;8500:559::-;8586:6;8594;8643:2;8631:9;8622:7;8618:23;8614:32;8611:119;;;8649:79;;:::i;:::-;8611:119;8797:1;8786:9;8782:17;8769:31;8827:18;8819:6;8816:30;8813:117;;;8849:79;;:::i;:::-;8813:117;8962:80;9034:7;9025:6;9014:9;9010:22;8962:80;:::i;:::-;8944:98;;;;8740:312;8500:559;;;;;:::o;9065:118::-;9152:24;9170:5;9152:24;:::i;:::-;9147:3;9140:37;9065:118;;:::o;9189:222::-;9282:4;9320:2;9309:9;9305:18;9297:26;;9333:71;9401:1;9390:9;9386:17;9377:6;9333:71;:::i;:::-;9189:222;;;;:::o;9417:474::-;9485:6;9493;9542:2;9530:9;9521:7;9517:23;9513:32;9510:119;;;9548:79;;:::i;:::-;9510:119;9668:1;9693:53;9738:7;9729:6;9718:9;9714:22;9693:53;:::i;:::-;9683:63;;9639:117;9795:2;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9766:118;9417:474;;;;;:::o;9897:116::-;9967:21;9982:5;9967:21;:::i;:::-;9960:5;9957:32;9947:60;;10003:1;10000;9993:12;9947:60;9897:116;:::o;10019:133::-;10062:5;10100:6;10087:20;10078:29;;10116:30;10140:5;10116:30;:::i;:::-;10019:133;;;;:::o;10158:468::-;10223:6;10231;10280:2;10268:9;10259:7;10255:23;10251:32;10248:119;;;10286:79;;:::i;:::-;10248:119;10406:1;10431:50;10473:7;10464:6;10453:9;10449:22;10431:50;:::i;:::-;10421:60;;10377:114;10530:2;10556:53;10601:7;10592:6;10581:9;10577:22;10556:53;:::i;:::-;10546:63;;10501:118;10158:468;;;;;:::o;10632:60::-;10660:3;10681:5;10674:12;;10632:60;;;:::o;10698:142::-;10748:9;10781:53;10799:34;10808:24;10826:5;10808:24;:::i;:::-;10799:34;:::i;:::-;10781:53;:::i;:::-;10768:66;;10698:142;;;:::o;10846:126::-;10896:9;10929:37;10960:5;10929:37;:::i;:::-;10916:50;;10846:126;;;:::o;10978:144::-;11046:9;11079:37;11110:5;11079:37;:::i;:::-;11066:50;;10978:144;;;:::o;11128:167::-;11233:55;11282:5;11233:55;:::i;:::-;11228:3;11221:68;11128:167;;:::o;11301:258::-;11412:4;11450:2;11439:9;11435:18;11427:26;;11463:89;11549:1;11538:9;11534:17;11525:6;11463:89;:::i;:::-;11301:258;;;;:::o;11565:156::-;11705:8;11701:1;11693:6;11689:14;11682:32;11565:156;:::o;11727:365::-;11869:3;11890:66;11954:1;11949:3;11890:66;:::i;:::-;11883:73;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11727:365;;;:::o;12098:419::-;12264:4;12302:2;12291:9;12287:18;12279:26;;12351:9;12345:4;12341:20;12337:1;12326:9;12322:17;12315:47;12379:131;12505:4;12379:131;:::i;:::-;12371:139;;12098:419;;;:::o;12523:235::-;12663:34;12659:1;12651:6;12647:14;12640:58;12732:18;12727:2;12719:6;12715:15;12708:43;12523:235;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:180::-;13609:77;13606:1;13599:88;13706:4;13703:1;13696:15;13730:4;13727:1;13720:15;13747:410;13787:7;13810:20;13828:1;13810:20;:::i;:::-;13805:25;;13844:20;13862:1;13844:20;:::i;:::-;13839:25;;13899:1;13896;13892:9;13921:30;13939:11;13921:30;:::i;:::-;13910:41;;14100:1;14091:7;14087:15;14084:1;14081:22;14061:1;14054:9;14034:83;14011:139;;14130:18;;:::i;:::-;14011:139;13795:362;13747:410;;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:185;14389:1;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14479:1;14469:35;;14484:18;;:::i;:::-;14469:35;14526:1;14523;14519:9;14514:14;;14349:185;;;;:::o;14540:134::-;14598:9;14631:37;14662:5;14631:37;:::i;:::-;14618:50;;14540:134;;;:::o;14680:147::-;14775:45;14814:5;14775:45;:::i;:::-;14770:3;14763:58;14680:147;;:::o;14833:238::-;14934:4;14972:2;14961:9;14957:18;14949:26;;14985:79;15061:1;15050:9;15046:17;15037:6;14985:79;:::i;:::-;14833:238;;;;:::o;15077:180::-;15125:77;15122:1;15115:88;15222:4;15219:1;15212:15;15246:4;15243:1;15236:15;15263:233;15302:3;15325:24;15343:5;15325:24;:::i;:::-;15316:33;;15371:66;15364:5;15361:77;15358:103;;15441:18;;:::i;:::-;15358:103;15488:1;15481:5;15477:13;15470:20;;15263:233;;;:::o;15502:332::-;15623:4;15661:2;15650:9;15646:18;15638:26;;15674:71;15742:1;15731:9;15727:17;15718:6;15674:71;:::i;:::-;15755:72;15823:2;15812:9;15808:18;15799:6;15755:72;:::i;:::-;15502:332;;;;;:::o;15840:137::-;15894:5;15925:6;15919:13;15910:22;;15941:30;15965:5;15941:30;:::i;:::-;15840:137;;;;:::o;15983:345::-;16050:6;16099:2;16087:9;16078:7;16074:23;16070:32;16067:119;;;16105:79;;:::i;:::-;16067:119;16225:1;16250:61;16303:7;16294:6;16283:9;16279:22;16250:61;:::i;:::-;16240:71;;16196:125;15983:345;;;;:::o;16334:242::-;16474:34;16470:1;16462:6;16458:14;16451:58;16543:25;16538:2;16530:6;16526:15;16519:50;16334:242;:::o;16582:366::-;16724:3;16745:67;16809:2;16804:3;16745:67;:::i;:::-;16738:74;;16821:93;16910:3;16821:93;:::i;:::-;16939:2;16934:3;16930:12;16923:19;;16582:366;;;:::o;16954:419::-;17120:4;17158:2;17147:9;17143:18;17135:26;;17207:9;17201:4;17197:20;17193:1;17182:9;17178:17;17171:47;17235:131;17361:4;17235:131;:::i;:::-;17227:139;;16954:419;;;:::o;17379:194::-;17419:4;17439:20;17457:1;17439:20;:::i;:::-;17434:25;;17473:20;17491:1;17473:20;:::i;:::-;17468:25;;17517:1;17514;17510:9;17502:17;;17541:1;17535:4;17532:11;17529:37;;;17546:18;;:::i;:::-;17529:37;17379:194;;;;:::o;17579:170::-;17719:22;17715:1;17707:6;17703:14;17696:46;17579:170;:::o;17755:366::-;17897:3;17918:67;17982:2;17977:3;17918:67;:::i;:::-;17911:74;;17994:93;18083:3;17994:93;:::i;:::-;18112:2;18107:3;18103:12;18096:19;;17755:366;;;:::o;18127:419::-;18293:4;18331:2;18320:9;18316:18;18308:26;;18380:9;18374:4;18370:20;18366:1;18355:9;18351:17;18344:47;18408:131;18534:4;18408:131;:::i;:::-;18400:139;;18127:419;;;:::o;18552:169::-;18692:21;18688:1;18680:6;18676:14;18669:45;18552:169;:::o;18727:366::-;18869:3;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18966:93;19055:3;18966:93;:::i;:::-;19084:2;19079:3;19075:12;19068:19;;18727:366;;;:::o;19099:419::-;19265:4;19303:2;19292:9;19288:18;19280:26;;19352:9;19346:4;19342:20;19338:1;19327:9;19323:17;19316:47;19380:131;19506:4;19380:131;:::i;:::-;19372:139;;19099:419;;;:::o;19524:220::-;19664:34;19660:1;19652:6;19648:14;19641:58;19733:3;19728:2;19720:6;19716:15;19709:28;19524:220;:::o;19750:366::-;19892:3;19913:67;19977:2;19972:3;19913:67;:::i;:::-;19906:74;;19989:93;20078:3;19989:93;:::i;:::-;20107:2;20102:3;20098:12;20091:19;;19750:366;;;:::o;20122:419::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20375:9;20369:4;20365:20;20361:1;20350:9;20346:17;20339:47;20403:131;20529:4;20403:131;:::i;:::-;20395:139;;20122:419;;;:::o;20547:180::-;20595:77;20592:1;20585:88;20692:4;20689:1;20682:15;20716:4;20713:1;20706:15;20733:85;20778:7;20807:5;20796:16;;20733:85;;;:::o;20824:158::-;20882:9;20915:61;20933:42;20942:32;20968:5;20942:32;:::i;:::-;20933:42;:::i;:::-;20915:61;:::i;:::-;20902:74;;20824:158;;;:::o;20988:147::-;21083:45;21122:5;21083:45;:::i;:::-;21078:3;21071:58;20988:147;;:::o;21141:114::-;21208:6;21242:5;21236:12;21226:22;;21141:114;;;:::o;21261:184::-;21360:11;21394:6;21389:3;21382:19;21434:4;21429:3;21425:14;21410:29;;21261:184;;;;:::o;21451:132::-;21518:4;21541:3;21533:11;;21571:4;21566:3;21562:14;21554:22;;21451:132;;;:::o;21589:108::-;21666:24;21684:5;21666:24;:::i;:::-;21661:3;21654:37;21589:108;;:::o;21703:179::-;21772:10;21793:46;21835:3;21827:6;21793:46;:::i;:::-;21871:4;21866:3;21862:14;21848:28;;21703:179;;;;:::o;21888:113::-;21958:4;21990;21985:3;21981:14;21973:22;;21888:113;;;:::o;22037:732::-;22156:3;22185:54;22233:5;22185:54;:::i;:::-;22255:86;22334:6;22329:3;22255:86;:::i;:::-;22248:93;;22365:56;22415:5;22365:56;:::i;:::-;22444:7;22475:1;22460:284;22485:6;22482:1;22479:13;22460:284;;;22561:6;22555:13;22588:63;22647:3;22632:13;22588:63;:::i;:::-;22581:70;;22674:60;22727:6;22674:60;:::i;:::-;22664:70;;22520:224;22507:1;22504;22500:9;22495:14;;22460:284;;;22464:14;22760:3;22753:10;;22161:608;;;22037:732;;;;:::o;22775:831::-;23038:4;23076:3;23065:9;23061:19;23053:27;;23090:71;23158:1;23147:9;23143:17;23134:6;23090:71;:::i;:::-;23171:80;23247:2;23236:9;23232:18;23223:6;23171:80;:::i;:::-;23298:9;23292:4;23288:20;23283:2;23272:9;23268:18;23261:48;23326:108;23429:4;23420:6;23326:108;:::i;:::-;23318:116;;23444:72;23512:2;23501:9;23497:18;23488:6;23444:72;:::i;:::-;23526:73;23594:3;23583:9;23579:19;23570:6;23526:73;:::i;:::-;22775:831;;;;;;;;:::o;23612:147::-;23713:11;23750:3;23735:18;;23612:147;;;;:::o;23765:114::-;;:::o;23885:398::-;24044:3;24065:83;24146:1;24141:3;24065:83;:::i;:::-;24058:90;;24157:93;24246:3;24157:93;:::i;:::-;24275:1;24270:3;24266:11;24259:18;;23885:398;;;:::o;24289:379::-;24473:3;24495:147;24638:3;24495:147;:::i;:::-;24488:154;;24659:3;24652:10;;24289:379;;;:::o;24674:807::-;24923:4;24961:3;24950:9;24946:19;24938:27;;24975:71;25043:1;25032:9;25028:17;25019:6;24975:71;:::i;:::-;25056:72;25124:2;25113:9;25109:18;25100:6;25056:72;:::i;:::-;25138:80;25214:2;25203:9;25199:18;25190:6;25138:80;:::i;:::-;25228;25304:2;25293:9;25289:18;25280:6;25228:80;:::i;:::-;25318:73;25386:3;25375:9;25371:19;25362:6;25318:73;:::i;:::-;25401;25469:3;25458:9;25454:19;25445:6;25401:73;:::i;:::-;24674:807;;;;;;;;;:::o;25487:143::-;25544:5;25575:6;25569:13;25560:22;;25591:33;25618:5;25591:33;:::i;:::-;25487:143;;;;:::o;25636:663::-;25724:6;25732;25740;25789:2;25777:9;25768:7;25764:23;25760:32;25757:119;;;25795:79;;:::i;:::-;25757:119;25915:1;25940:64;25996:7;25987:6;25976:9;25972:22;25940:64;:::i;:::-;25930:74;;25886:128;26053:2;26079:64;26135:7;26126:6;26115:9;26111:22;26079:64;:::i;:::-;26069:74;;26024:129;26192:2;26218:64;26274:7;26265:6;26254:9;26250:22;26218:64;:::i;:::-;26208:74;;26163:129;25636:663;;;;;:::o;26305:332::-;26426:4;26464:2;26453:9;26449:18;26441:26;;26477:71;26545:1;26534:9;26530:17;26521:6;26477:71;:::i;:::-;26558:72;26626:2;26615:9;26611:18;26602:6;26558:72;:::i;:::-;26305:332;;;;;:::o;26643:191::-;26683:3;26702:20;26720:1;26702:20;:::i;:::-;26697:25;;26736:20;26754:1;26736:20;:::i;:::-;26731:25;;26779:1;26776;26772:9;26765:16;;26800:3;26797:1;26794:10;26791:36;;;26807:18;;:::i;:::-;26791:36;26643:191;;;;:::o;26840:177::-;26980:29;26976:1;26968:6;26964:14;26957:53;26840:177;:::o;27023:366::-;27165:3;27186:67;27250:2;27245:3;27186:67;:::i;:::-;27179:74;;27262:93;27351:3;27262:93;:::i;:::-;27380:2;27375:3;27371:12;27364:19;;27023:366;;;:::o;27395:419::-;27561:4;27599:2;27588:9;27584:18;27576:26;;27648:9;27642:4;27638:20;27634:1;27623:9;27619:17;27612:47;27676:131;27802:4;27676:131;:::i;:::-;27668:139;;27395:419;;;:::o
Swarm Source
ipfs://f0677f788117e851fd0829863975da883dbec41b0935fd2df974bad00ab8c11a
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.