ERC-20
Overview
Max Total Supply
100,000,000,000,000 WOOFME
Holders
189
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.972863638704877631 WOOFMEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WoofMeister
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-06 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.8; 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); } interface IFactoryV2 { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function sync() external; } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function 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 swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } contract WoofMeister is IERC20 { //IRouter02 dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); //BSC Mainnet //IRouter02 dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); //BSC Testnet //IRouter02 dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //ETH Mainnet IRouter02 dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //ETH Goerli address payable public marketingWallet = payable(0x31E403D6A22f75F46498b56199EcD809874609C2); string private constant _name = "WOOFMEISTER"; string private constant _symbol = "WOOFME"; uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 100_000_000_000_000 * 10 ** (_decimals); address private _owner; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _balances; mapping(address => bool) public _whitelistAddress; uint256 maxWalletPercent = 15; //1.5% as default uint256 minAmountConvert = 100_000_000_000 * 10 ** (_decimals); uint8 maximumImpactForTransfer = 50; bool inSwap; address public pairAddress; uint256 tax = 200; uint256 taxAntibot = 3000; uint256 public timeTradeOpen = 0; uint256 public timeAntiBot = 5; modifier onlyOwner() { require(_owner == msg.sender, "Only owner"); _; } modifier inSwapFlag() { inSwap = true; _; inSwap = false; } constructor() payable { _owner = msg.sender; _balances[_owner] = _totalSupply; _whitelistAddress[_owner] = true; _whitelistAddress[address(this)] = true; _approve(_owner, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); pairAddress = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); } function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; } function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } 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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transferOwner(address _newOwner) public onlyOwner { _owner = _newOwner; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { require(_allowances[sender][msg.sender] >= amount, "Insufficient allowance."); _allowances[sender][msg.sender] -= amount; _transfer(sender, recipient, amount); return true; } function setTimeForTradeOpenning(uint256 _timeOpen) public onlyOwner { require(_timeOpen > 0, "Invalid parameter."); timeTradeOpen = _timeOpen; } function setTimeAntibot(uint256 _timeAntiInMinutes) public onlyOwner { require(_timeAntiInMinutes > 0, "Invalid parameter."); timeAntiBot = _timeAntiInMinutes; } function setAntibotTax(uint256 _newAntibotTax) public onlyOwner { require(_newAntibotTax > 0, "Invalid parameter."); taxAntibot = _newAntibotTax; } function isEnableTrade() public view returns (bool) { bool isEnable = false; if (block.timestamp >= timeTradeOpen) { isEnable = true; } return isEnable; } function isAntiSniperEnable() public view returns (bool) { bool isEnable = false; if (block.timestamp <= (timeTradeOpen + timeAntiBot * 60)) { isEnable = true; } return isEnable; } function getRateForTrade() public view returns (uint256) { uint256 realTax = tax; if (isAntiSniperEnable()) { realTax = taxAntibot; } return realTax; } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(amount <= balanceOf(from), "Insufficient funds."); if (to == pairAddress && timeTradeOpen == 0) { timeTradeOpen = block.timestamp; } uint256 currentWalletBalance = balanceOf(to); uint maximumAmountTokenPerWallet = (_totalSupply * maxWalletPercent) / 1000; if ((currentWalletBalance + amount) > maximumAmountTokenPerWallet) { if (to != address(0) && to != pairAddress && to != address(this)) { revert("A wallet can only hold up to a specified percentage of the total supply."); } } if (!_whitelistAddress[from] && !_whitelistAddress[to] && to == pairAddress) { bool enableTrade = isEnableTrade(); if (enableTrade) { if (!inSwap) { uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= minAmountConvert) { uint256 maximumSwapAmount = balanceOf(pairAddress) / maximumImpactForTransfer; if (contractBalance > maximumSwapAmount) contractBalance = maximumSwapAmount; bool payFee = convertAccumulateFee(contractBalance); require(payFee, "Failed to convert accumulated fees."); } } uint256 realTax = getRateForTrade(); uint256 taxAmount = (amount * realTax) / 10000; _balances[from] -= amount; _balances[address(this)] += taxAmount; emit Transfer(from, address(this), taxAmount); _balances[to] += (amount - taxAmount); emit Transfer(from, to, amount - taxAmount); } else { revert("Not open for trading."); } } else { _balances[from] -= amount; _balances[to] += amount; emit Transfer(from, to, amount); } return true; } function convertAccumulateFee(uint256 contractBalance) internal inSwapFlag returns (bool) { if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( contractBalance, 0, path, address(this), block.timestamp ) {} catch { return false; } (bool success, ) = marketingWallet.call{value: address(this).balance}(""); require(success, "Failed to transfer fee to marketing wallet."); return true; } function setTax(uint256 _newTax) public onlyOwner { require(_newTax <= 200, "Tax cannot be more than 2%."); tax = _newTax; } function setMinAmountConvert(uint256 _minAmountConvert) public onlyOwner { minAmountConvert = _minAmountConvert; } function setMaximumImpactForTransfer(uint8 _maximumImpactForTransfer) public onlyOwner { require(_maximumImpactForTransfer > 1, "Invalid parameter."); maximumImpactForTransfer = _maximumImpactForTransfer; } function setMaxWalletPercent(uint256 _newPercent) public onlyOwner { require(_newPercent > 0 && _newPercent < 1000, "Invalid parameter."); maxWalletPercent = _newPercent; } function setMarketingWallet(address payable _marketingWallet) public onlyOwner { require( _marketingWallet != marketingWallet, "It must be different from the current marketing wallet." ); require(_marketingWallet != address(0), "It must not be a zero wallet."); marketingWallet = payable(_marketingWallet); } function setWhiteList(address _whitelist) public onlyOwner { _whitelistAddress[_whitelist] = true; } function removeWhiteList(address _removeWhitelist) public onlyOwner { _whitelistAddress[_removeWhitelist] = false; } function airdrop(address recipient, uint256 amount) external onlyOwner { _transfer(msg.sender, recipient, amount * 10 ** _decimals); } function airdropInternal(address recipient, uint256 amount) internal { _transfer(msg.sender, recipient, amount); } function airdropArray( address[] calldata newholders, uint256[] calldata amounts ) external onlyOwner { require(newholders.length == amounts.length, "They must be the same length."); uint256 iterator = 0; while (iterator < newholders.length) { require(newholders[iterator] != address(0), "Invalid airdrop holder."); require(amounts[iterator] > 0, "Invalid airdrop amount."); airdropInternal(newholders[iterator], amounts[iterator] * 10 ** _decimals); iterator += 1; } } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":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":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropArray","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRateForTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAntiSniperEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isEnableTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_removeWhitelist","type":"address"}],"name":"removeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAntibotTax","type":"uint256"}],"name":"setAntibotTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_maximumImpactForTransfer","type":"uint8"}],"name":"setMaximumImpactForTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minAmountConvert","type":"uint256"}],"name":"setMinAmountConvert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeAntiInMinutes","type":"uint256"}],"name":"setTimeAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeOpen","type":"uint256"}],"name":"setTimeForTradeOpenning","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"}],"name":"setWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"timeAntiBot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeTradeOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507331e403d6a22f75f46498b56199ecd809874609c2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f6006556012600a620000c29190620008c1565b64174876e800620000d4919062000912565b6007556032600860006101000a81548160ff021916908360ff16021790555060c8600955610bb8600a556000600b556005600c5533600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001599190620008c1565b655af3107a40006200016c919062000912565b60046000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000318600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200055660201b60201c565b6200036b3060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200055660201b60201c565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fd9190620009c7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000484573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004aa9190620009c7565b306040518363ffffffff1660e01b8152600401620004ca92919062000a0a565b6020604051808303816000875af1158015620004ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005109190620009c7565b600860026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000ae8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005bf9062000a98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006319062000a98565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200071a919062000acb565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007b5578086048111156200078d576200078c62000727565b5b60018516156200079d5780820291505b8081029050620007ad8562000756565b94506200076d565b94509492505050565b600082620007d05760019050620008a3565b81620007e05760009050620008a3565b8160018114620007f9576002811462000804576200083a565b6001915050620008a3565b60ff84111562000819576200081862000727565b5b8360020a91508482111562000833576200083262000727565b5b50620008a3565b5060208310610133831016604e8410600b8410161715620008745782820a9050838111156200086e576200086d62000727565b5b620008a3565b62000883848484600162000763565b925090508184048111156200089d576200089c62000727565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ce82620008aa565b9150620008db83620008b4565b92506200090a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007be565b905092915050565b60006200091f82620008aa565b91506200092c83620008aa565b92508282026200093c81620008aa565b9150828204841483151762000956576200095562000727565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200098f8262000962565b9050919050565b620009a18162000982565b8114620009ad57600080fd5b50565b600081519050620009c18162000996565b92915050565b600060208284031215620009e057620009df6200095d565b5b6000620009f084828501620009b0565b91505092915050565b62000a048162000982565b82525050565b600060408201905062000a216000830185620009f9565b62000a306020830184620009f9565b9392505050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000a8060138362000a37565b915062000a8d8262000a48565b602082019050919050565b6000602082019050818103600083015262000ab38162000a71565b9050919050565b62000ac581620008aa565b82525050565b600060208201905062000ae2600083018462000aba565b92915050565b6139078062000af86000396000f3fe6080604052600436106101dc5760003560e01c806375f0a87411610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106b1578063e3a14d5e146106ee578063f60287fe14610719578063fc694f5314610744576101e3565b8063a9059cbb146105f9578063b453d28c14610636578063bbe68b771461065f578063d4a3883f14610688576101e3565b8063893d20e8116100d1578063893d20e81461054f5780638ba4cc3c1461057a57806395d89b41146105a3578063a8b08982146105ce576101e3565b806375f0a874146104a75780637c42feec146104d257806382bf293c146104fd57806387163e0e14610526576101e3565b80632e5bb6ff1161017a5780634fb2e45d116101495780634fb2e45d146103ed5780635d098b38146104165780635fe8bab51461043f57806370a082311461046a576101e3565b80632e5bb6ff146103475780632fe042d014610370578063313ce5671461039957806339e899ee146103c4576101e3565b806318160ddd116101b657806318160ddd146102795780631b0cb61f146102a45780632042e5c2146102e157806323b872dd1461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806314416dfb14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61076f565b60405161020a91906127ed565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906128ad565b6107ac565b6040516102479190612908565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612923565b6107c3565b005b34801561028557600080fd5b5061028e6108a0565b60405161029b919061295f565b60405180910390f35b3480156102b057600080fd5b506102cb60048036038101906102c6919061297a565b6108f0565b6040516102d89190612908565b60405180910390f35b3480156102ed57600080fd5b506103086004803603810190610303919061297a565b610910565b005b34801561031657600080fd5b50610331600480360381019061032c91906129a7565b6109fb565b60405161033e9190612908565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190612923565b610b66565b005b34801561037c57600080fd5b5061039760048036038101906103929190612923565b610c44565b005b3480156103a557600080fd5b506103ae610d21565b6040516103bb9190612a16565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061297a565b610d54565b005b3480156103f957600080fd5b50610414600480360381019061040f919061297a565b610e3f565b005b34801561042257600080fd5b5061043d60048036038101906104389190612a6f565b610f13565b005b34801561044b57600080fd5b506104546110e6565b604051610461919061295f565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c919061297a565b6110ec565b60405161049e919061295f565b60405180910390f35b3480156104b357600080fd5b506104bc611135565b6040516104c99190612aab565b60405180910390f35b3480156104de57600080fd5b506104e761115b565b6040516104f49190612908565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f9190612923565b611177565b005b34801561053257600080fd5b5061054d60048036038101906105489190612923565b611261565b005b34801561055b57600080fd5b506105646112fb565b6040516105719190612ad5565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906128ad565b611325565b005b3480156105af57600080fd5b506105b86113dd565b6040516105c591906127ed565b60405180910390f35b3480156105da57600080fd5b506105e361141a565b6040516105f09190612ad5565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906128ad565b611440565b60405161062d9190612908565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612923565b611458565b005b34801561066b57600080fd5b5061068660048036038101906106819190612b1c565b611535565b005b34801561069457600080fd5b506106af60048036038101906106aa9190612c04565b611629565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612c85565b61187e565b6040516106e5919061295f565b60405180910390f35b3480156106fa57600080fd5b50610703611905565b6040516107109190612908565b60405180910390f35b34801561072557600080fd5b5061072e61193a565b60405161073b919061295f565b60405180910390f35b34801561075057600080fd5b50610759611940565b604051610766919061295f565b60405180910390f35b60606040518060400160405280600b81526020017f574f4f464d454953544552000000000000000000000000000000000000000000815250905090565b60006107b9338484611962565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90612d11565b60405180910390fd5b60008111610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90612d7d565b60405180910390fd5b80600c8190555050565b6000806012600a6108b19190612eff565b655af3107a40006108c29190612f4a565b036108cc57600080fd5b6012600a6108da9190612eff565b655af3107a40006108eb9190612f4a565b905090565b60056020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099790612d11565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390612fd8565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b489190612ff8565b92505081905550610b5a848484611b2b565b50600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90612d11565b60405180910390fd5b60c8811115610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190613078565b60405180910390fd5b8060098190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612d11565b60405180910390fd5b60008111610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90612d7d565b60405180910390fd5b80600a8190555050565b6000806012600a610d329190612eff565b655af3107a4000610d439190612f4a565b03610d4d57600080fd5b6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb90612d11565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690612d11565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90612d11565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a9061310a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613176565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009050600b54421061117057600190505b8091505090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90612d11565b60405180910390fd5b60008111801561121857506103e881105b611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612d7d565b60405180910390fd5b8060068190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890612d11565b60405180910390fd5b8060078190555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d11565b60405180910390fd5b6113d833836012600a6113c89190612eff565b846113d39190612f4a565b611b2b565b505050565b60606040518060400160405280600681526020017f574f4f464d450000000000000000000000000000000000000000000000000000815250905090565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061144d338484611b2b565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612d11565b60405180910390fd5b6000811161152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290612d7d565b60405180910390fd5b80600b8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90612d11565b60405180910390fd5b60018160ff161161160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290612d7d565b60405180910390fd5b80600860006101000a81548160ff021916908360ff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090612d11565b60405180910390fd5b818190508484905014611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f8906131e2565b60405180910390fd5b60005b8484905081101561187757600073ffffffffffffffffffffffffffffffffffffffff1685858381811061173a57611739613202565b5b905060200201602081019061174f919061297a565b73ffffffffffffffffffffffffffffffffffffffff16036117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c9061327d565b60405180910390fd5b60008383838181106117ba576117b9613202565b5b9050602002013511611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906132e9565b60405180910390fd5b61186385858381811061181757611816613202565b5b905060200201602081019061182c919061297a565b6012600a61183a9190612eff565b85858581811061184d5761184c613202565b5b9050602002013561185e9190612f4a565b61229f565b6001816118709190613309565b9050611704565b5050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009050603c600c5461191b9190612f4a565b600b546119289190613309565b421161193357600190505b8091505090565b600c5481565b6000806009549050611950611905565b1561195b57600a5490505b8091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c890613389565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613389565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b1e919061295f565b60405180910390a3505050565b6000611b36846110ec565b821115611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f906133f5565b60405180910390fd5b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bd757506000600b54145b15611be45742600b819055505b6000611bef846110ec565b905060006103e86006546012600a611c079190612eff565b655af3107a4000611c189190612f4a565b611c229190612f4a565b611c2c9190613444565b9050808483611c3b9190613309565b1115611d4557600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ccc5750600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0457503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b9061350d565b60405180910390fd5b5b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e425750600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15612180576000611e5161115b565b9050801561213f57600860019054906101000a900460ff16611f2d576000611e78306110ec565b90506007548110611f2b576000600860009054906101000a900460ff1660ff16611ec3600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110ec565b611ecd9190613444565b905080821115611edb578091505b6000611ee6836122af565b905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061359f565b60405180910390fd5b50505b505b6000611f37611940565b905060006127108288611f4a9190612f4a565b611f549190613444565b905086600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fa59190612ff8565b9250508190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb9190613309565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161205f919061295f565b60405180910390a380876120739190612ff8565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c19190613309565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838a6121239190612ff8565b604051612130919061295f565b60405180910390a3505061217a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121719061360b565b60405180910390fd5b50612292565b83600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121cf9190612ff8565b9250508190555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122259190613309565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612289919061295f565b60405180910390a35b6001925050509392505050565b6122aa338383611b2b565b505050565b60006001600860016101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612453577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600267ffffffffffffffff8111156124705761246f61362b565b5b60405190808252806020026020018201604052801561249e5781602001602082028036833780820191505090505b50905030816000815181106124b6576124b5613202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f919061366f565b8160018151811061259357612592613202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161262f95949392919061379f565b600060405180830381600087803b15801561264957600080fd5b505af192505050801561265a575060015b61266857600091505061273d565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126b09061382a565b60006040518083038185875af1925050503d80600081146126ed576040519150601f19603f3d011682016040523d82523d6000602084013e6126f2565b606091505b5050905080612736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d906138b1565b60405180910390fd5b6001925050505b6000600860016101000a81548160ff021916908315150217905550919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279757808201518184015260208101905061277c565b60008484015250505050565b6000601f19601f8301169050919050565b60006127bf8261275d565b6127c98185612768565b93506127d9818560208601612779565b6127e2816127a3565b840191505092915050565b6000602082019050818103600083015261280781846127b4565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284482612819565b9050919050565b61285481612839565b811461285f57600080fd5b50565b6000813590506128718161284b565b92915050565b6000819050919050565b61288a81612877565b811461289557600080fd5b50565b6000813590506128a781612881565b92915050565b600080604083850312156128c4576128c361280f565b5b60006128d285828601612862565b92505060206128e385828601612898565b9150509250929050565b60008115159050919050565b612902816128ed565b82525050565b600060208201905061291d60008301846128f9565b92915050565b6000602082840312156129395761293861280f565b5b600061294784828501612898565b91505092915050565b61295981612877565b82525050565b60006020820190506129746000830184612950565b92915050565b6000602082840312156129905761298f61280f565b5b600061299e84828501612862565b91505092915050565b6000806000606084860312156129c0576129bf61280f565b5b60006129ce86828701612862565b93505060206129df86828701612862565b92505060406129f086828701612898565b9150509250925092565b600060ff82169050919050565b612a10816129fa565b82525050565b6000602082019050612a2b6000830184612a07565b92915050565b6000612a3c82612819565b9050919050565b612a4c81612a31565b8114612a5757600080fd5b50565b600081359050612a6981612a43565b92915050565b600060208284031215612a8557612a8461280f565b5b6000612a9384828501612a5a565b91505092915050565b612aa581612a31565b82525050565b6000602082019050612ac06000830184612a9c565b92915050565b612acf81612839565b82525050565b6000602082019050612aea6000830184612ac6565b92915050565b612af9816129fa565b8114612b0457600080fd5b50565b600081359050612b1681612af0565b92915050565b600060208284031215612b3257612b3161280f565b5b6000612b4084828501612b07565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b6e57612b6d612b49565b5b8235905067ffffffffffffffff811115612b8b57612b8a612b4e565b5b602083019150836020820283011115612ba757612ba6612b53565b5b9250929050565b60008083601f840112612bc457612bc3612b49565b5b8235905067ffffffffffffffff811115612be157612be0612b4e565b5b602083019150836020820283011115612bfd57612bfc612b53565b5b9250929050565b60008060008060408587031215612c1e57612c1d61280f565b5b600085013567ffffffffffffffff811115612c3c57612c3b612814565b5b612c4887828801612b58565b9450945050602085013567ffffffffffffffff811115612c6b57612c6a612814565b5b612c7787828801612bae565b925092505092959194509250565b60008060408385031215612c9c57612c9b61280f565b5b6000612caa85828601612862565b9250506020612cbb85828601612862565b9150509250929050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b6000612cfb600a83612768565b9150612d0682612cc5565b602082019050919050565b60006020820190508181036000830152612d2a81612cee565b9050919050565b7f496e76616c696420706172616d657465722e0000000000000000000000000000600082015250565b6000612d67601283612768565b9150612d7282612d31565b602082019050919050565b60006020820190508181036000830152612d9681612d5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e2357808604811115612dff57612dfe612d9d565b5b6001851615612e0e5780820291505b8081029050612e1c85612dcc565b9450612de3565b94509492505050565b600082612e3c5760019050612ef8565b81612e4a5760009050612ef8565b8160018114612e605760028114612e6a57612e99565b6001915050612ef8565b60ff841115612e7c57612e7b612d9d565b5b8360020a915084821115612e9357612e92612d9d565b5b50612ef8565b5060208310610133831016604e8410600b8410161715612ece5782820a905083811115612ec957612ec8612d9d565b5b612ef8565b612edb8484846001612dd9565b92509050818404811115612ef257612ef1612d9d565b5b81810290505b9392505050565b6000612f0a82612877565b9150612f15836129fa565b9250612f427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e2c565b905092915050565b6000612f5582612877565b9150612f6083612877565b9250828202612f6e81612877565b91508282048414831517612f8557612f84612d9d565b5b5092915050565b7f496e73756666696369656e7420616c6c6f77616e63652e000000000000000000600082015250565b6000612fc2601783612768565b9150612fcd82612f8c565b602082019050919050565b60006020820190508181036000830152612ff181612fb5565b9050919050565b600061300382612877565b915061300e83612877565b925082820390508181111561302657613025612d9d565b5b92915050565b7f5461782063616e6e6f7420626520206d6f7265207468616e2032252e00000000600082015250565b6000613062601c83612768565b915061306d8261302c565b602082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4974206d75737420626520646966666572656e742066726f6d2074686520637560008201527f7272656e74206d61726b6574696e672077616c6c65742e000000000000000000602082015250565b60006130f4603783612768565b91506130ff82613098565b604082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f4974206d757374206e6f742062652061207a65726f2077616c6c65742e000000600082015250565b6000613160601d83612768565b915061316b8261312a565b602082019050919050565b6000602082019050818103600083015261318f81613153565b9050919050565b7f54686579206d757374206265207468652073616d65206c656e6774682e000000600082015250565b60006131cc601d83612768565b91506131d782613196565b602082019050919050565b600060208201905081810360008301526131fb816131bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c69642061697264726f7020686f6c6465722e000000000000000000600082015250565b6000613267601783612768565b915061327282613231565b602082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f496e76616c69642061697264726f7020616d6f756e742e000000000000000000600082015250565b60006132d3601783612768565b91506132de8261329d565b602082019050919050565b60006020820190508181036000830152613302816132c6565b9050919050565b600061331482612877565b915061331f83612877565b925082820190508082111561333757613336612d9d565b5b92915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000613373601383612768565b915061337e8261333d565b602082019050919050565b600060208201905081810360008301526133a281613366565b9050919050565b7f496e73756666696369656e742066756e64732e00000000000000000000000000600082015250565b60006133df601383612768565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344f82612877565b915061345a83612877565b92508261346a57613469613415565b5b828204905092915050565b7f412077616c6c65742063616e206f6e6c7920686f6c6420757020746f2061207360008201527f70656369666965642070657263656e74616765206f662074686520746f74616c60208201527f20737570706c792e000000000000000000000000000000000000000000000000604082015250565b60006134f7604883612768565b915061350282613475565b606082019050919050565b60006020820190508181036000830152613526816134ea565b9050919050565b7f4661696c656420746f20636f6e7665727420616363756d756c6174656420666560008201527f65732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613589602383612768565b91506135948261352d565b604082019050919050565b600060208201905081810360008301526135b88161357c565b9050919050565b7f4e6f74206f70656e20666f722074726164696e672e0000000000000000000000600082015250565b60006135f5601583612768565b9150613600826135bf565b602082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506136698161284b565b92915050565b6000602082840312156136855761368461280f565b5b60006136938482850161365a565b91505092915050565b6000819050919050565b6000819050919050565b60006136cb6136c66136c18461369c565b6136a6565b612877565b9050919050565b6136db816136b0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61371681612839565b82525050565b6000613728838361370d565b60208301905092915050565b6000602082019050919050565b600061374c826136e1565b61375681856136ec565b9350613761836136fd565b8060005b83811015613792578151613779888261371c565b975061378483613734565b925050600181019050613765565b5085935050505092915050565b600060a0820190506137b46000830188612950565b6137c160208301876136d2565b81810360408301526137d38186613741565b90506137e26060830185612ac6565b6137ef6080830184612950565b9695505050505050565b600081905092915050565b50565b60006138146000836137f9565b915061381f82613804565b600082019050919050565b600061383582613807565b9150819050919050565b7f4661696c656420746f207472616e736665722066656520746f206d61726b657460008201527f696e672077616c6c65742e000000000000000000000000000000000000000000602082015250565b600061389b602b83612768565b91506138a68261383f565b604082019050919050565b600060208201905081810360008301526138ca8161388e565b905091905056fea26469706673582212205ed2757afdc0f637f48728e8c2169dc85cca10657f196907eb79590db6dcab3a64736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101dc5760003560e01c806375f0a87411610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146106b1578063e3a14d5e146106ee578063f60287fe14610719578063fc694f5314610744576101e3565b8063a9059cbb146105f9578063b453d28c14610636578063bbe68b771461065f578063d4a3883f14610688576101e3565b8063893d20e8116100d1578063893d20e81461054f5780638ba4cc3c1461057a57806395d89b41146105a3578063a8b08982146105ce576101e3565b806375f0a874146104a75780637c42feec146104d257806382bf293c146104fd57806387163e0e14610526576101e3565b80632e5bb6ff1161017a5780634fb2e45d116101495780634fb2e45d146103ed5780635d098b38146104165780635fe8bab51461043f57806370a082311461046a576101e3565b80632e5bb6ff146103475780632fe042d014610370578063313ce5671461039957806339e899ee146103c4576101e3565b806318160ddd116101b657806318160ddd146102795780631b0cb61f146102a45780632042e5c2146102e157806323b872dd1461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806314416dfb14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61076f565b60405161020a91906127ed565b60405180910390f35b34801561021f57600080fd5b5061023a600480360381019061023591906128ad565b6107ac565b6040516102479190612908565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612923565b6107c3565b005b34801561028557600080fd5b5061028e6108a0565b60405161029b919061295f565b60405180910390f35b3480156102b057600080fd5b506102cb60048036038101906102c6919061297a565b6108f0565b6040516102d89190612908565b60405180910390f35b3480156102ed57600080fd5b506103086004803603810190610303919061297a565b610910565b005b34801561031657600080fd5b50610331600480360381019061032c91906129a7565b6109fb565b60405161033e9190612908565b60405180910390f35b34801561035357600080fd5b5061036e60048036038101906103699190612923565b610b66565b005b34801561037c57600080fd5b5061039760048036038101906103929190612923565b610c44565b005b3480156103a557600080fd5b506103ae610d21565b6040516103bb9190612a16565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061297a565b610d54565b005b3480156103f957600080fd5b50610414600480360381019061040f919061297a565b610e3f565b005b34801561042257600080fd5b5061043d60048036038101906104389190612a6f565b610f13565b005b34801561044b57600080fd5b506104546110e6565b604051610461919061295f565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c919061297a565b6110ec565b60405161049e919061295f565b60405180910390f35b3480156104b357600080fd5b506104bc611135565b6040516104c99190612aab565b60405180910390f35b3480156104de57600080fd5b506104e761115b565b6040516104f49190612908565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f9190612923565b611177565b005b34801561053257600080fd5b5061054d60048036038101906105489190612923565b611261565b005b34801561055b57600080fd5b506105646112fb565b6040516105719190612ad5565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906128ad565b611325565b005b3480156105af57600080fd5b506105b86113dd565b6040516105c591906127ed565b60405180910390f35b3480156105da57600080fd5b506105e361141a565b6040516105f09190612ad5565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906128ad565b611440565b60405161062d9190612908565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612923565b611458565b005b34801561066b57600080fd5b5061068660048036038101906106819190612b1c565b611535565b005b34801561069457600080fd5b506106af60048036038101906106aa9190612c04565b611629565b005b3480156106bd57600080fd5b506106d860048036038101906106d39190612c85565b61187e565b6040516106e5919061295f565b60405180910390f35b3480156106fa57600080fd5b50610703611905565b6040516107109190612908565b60405180910390f35b34801561072557600080fd5b5061072e61193a565b60405161073b919061295f565b60405180910390f35b34801561075057600080fd5b50610759611940565b604051610766919061295f565b60405180910390f35b60606040518060400160405280600b81526020017f574f4f464d454953544552000000000000000000000000000000000000000000815250905090565b60006107b9338484611962565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90612d11565b60405180910390fd5b60008111610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90612d7d565b60405180910390fd5b80600c8190555050565b6000806012600a6108b19190612eff565b655af3107a40006108c29190612f4a565b036108cc57600080fd5b6012600a6108da9190612eff565b655af3107a40006108eb9190612f4a565b905090565b60056020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099790612d11565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390612fd8565b60405180910390fd5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b489190612ff8565b92505081905550610b5a848484611b2b565b50600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed90612d11565b60405180910390fd5b60c8811115610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3190613078565b60405180910390fd5b8060098190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90612d11565b60405180910390fd5b60008111610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90612d7d565b60405180910390fd5b80600a8190555050565b6000806012600a610d329190612eff565b655af3107a4000610d439190612f4a565b03610d4d57600080fd5b6012905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb90612d11565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690612d11565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90612d11565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102a9061310a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990613176565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009050600b54421061117057600190505b8091505090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fe90612d11565b60405180910390fd5b60008111801561121857506103e881105b611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612d7d565b60405180910390fd5b8060068190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890612d11565b60405180910390fd5b8060078190555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d11565b60405180910390fd5b6113d833836012600a6113c89190612eff565b846113d39190612f4a565b611b2b565b505050565b60606040518060400160405280600681526020017f574f4f464d450000000000000000000000000000000000000000000000000000815250905090565b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061144d338484611b2b565b506001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612d11565b60405180910390fd5b6000811161152b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152290612d7d565b60405180910390fd5b80600b8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90612d11565b60405180910390fd5b60018160ff161161160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290612d7d565b60405180910390fd5b80600860006101000a81548160ff021916908360ff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090612d11565b60405180910390fd5b818190508484905014611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f8906131e2565b60405180910390fd5b60005b8484905081101561187757600073ffffffffffffffffffffffffffffffffffffffff1685858381811061173a57611739613202565b5b905060200201602081019061174f919061297a565b73ffffffffffffffffffffffffffffffffffffffff16036117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c9061327d565b60405180910390fd5b60008383838181106117ba576117b9613202565b5b9050602002013511611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906132e9565b60405180910390fd5b61186385858381811061181757611816613202565b5b905060200201602081019061182c919061297a565b6012600a61183a9190612eff565b85858581811061184d5761184c613202565b5b9050602002013561185e9190612f4a565b61229f565b6001816118709190613309565b9050611704565b5050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009050603c600c5461191b9190612f4a565b600b546119289190613309565b421161193357600190505b8091505090565b600c5481565b6000806009549050611950611905565b1561195b57600a5490505b8091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c890613389565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613389565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b1e919061295f565b60405180910390a3505050565b6000611b36846110ec565b821115611b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f906133f5565b60405180910390fd5b600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bd757506000600b54145b15611be45742600b819055505b6000611bef846110ec565b905060006103e86006546012600a611c079190612eff565b655af3107a4000611c189190612f4a565b611c229190612f4a565b611c2c9190613444565b9050808483611c3b9190613309565b1115611d4557600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ccc5750600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0457503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3b9061350d565b60405180910390fd5b5b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611de95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e425750600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15612180576000611e5161115b565b9050801561213f57600860019054906101000a900460ff16611f2d576000611e78306110ec565b90506007548110611f2b576000600860009054906101000a900460ff1660ff16611ec3600860029054906101000a900473ffffffffffffffffffffffffffffffffffffffff166110ec565b611ecd9190613444565b905080821115611edb578091505b6000611ee6836122af565b905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061359f565b60405180910390fd5b50505b505b6000611f37611940565b905060006127108288611f4a9190612f4a565b611f549190613444565b905086600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fa59190612ff8565b9250508190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ffb9190613309565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161205f919061295f565b60405180910390a380876120739190612ff8565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c19190613309565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838a6121239190612ff8565b604051612130919061295f565b60405180910390a3505061217a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121719061360b565b60405180910390fd5b50612292565b83600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121cf9190612ff8565b9250508190555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122259190613309565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612289919061295f565b60405180910390a35b6001925050509392505050565b6122aa338383611b2b565b505050565b60006001600860016101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612453577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600267ffffffffffffffff8111156124705761246f61362b565b5b60405190808252806020026020018201604052801561249e5781602001602082028036833780820191505090505b50905030816000815181106124b6576124b5613202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f919061366f565b8160018151811061259357612592613202565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161262f95949392919061379f565b600060405180830381600087803b15801561264957600080fd5b505af192505050801561265a575060015b61266857600091505061273d565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126b09061382a565b60006040518083038185875af1925050503d80600081146126ed576040519150601f19603f3d011682016040523d82523d6000602084013e6126f2565b606091505b5050905080612736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272d906138b1565b60405180910390fd5b6001925050505b6000600860016101000a81548160ff021916908315150217905550919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561279757808201518184015260208101905061277c565b60008484015250505050565b6000601f19601f8301169050919050565b60006127bf8261275d565b6127c98185612768565b93506127d9818560208601612779565b6127e2816127a3565b840191505092915050565b6000602082019050818103600083015261280781846127b4565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284482612819565b9050919050565b61285481612839565b811461285f57600080fd5b50565b6000813590506128718161284b565b92915050565b6000819050919050565b61288a81612877565b811461289557600080fd5b50565b6000813590506128a781612881565b92915050565b600080604083850312156128c4576128c361280f565b5b60006128d285828601612862565b92505060206128e385828601612898565b9150509250929050565b60008115159050919050565b612902816128ed565b82525050565b600060208201905061291d60008301846128f9565b92915050565b6000602082840312156129395761293861280f565b5b600061294784828501612898565b91505092915050565b61295981612877565b82525050565b60006020820190506129746000830184612950565b92915050565b6000602082840312156129905761298f61280f565b5b600061299e84828501612862565b91505092915050565b6000806000606084860312156129c0576129bf61280f565b5b60006129ce86828701612862565b93505060206129df86828701612862565b92505060406129f086828701612898565b9150509250925092565b600060ff82169050919050565b612a10816129fa565b82525050565b6000602082019050612a2b6000830184612a07565b92915050565b6000612a3c82612819565b9050919050565b612a4c81612a31565b8114612a5757600080fd5b50565b600081359050612a6981612a43565b92915050565b600060208284031215612a8557612a8461280f565b5b6000612a9384828501612a5a565b91505092915050565b612aa581612a31565b82525050565b6000602082019050612ac06000830184612a9c565b92915050565b612acf81612839565b82525050565b6000602082019050612aea6000830184612ac6565b92915050565b612af9816129fa565b8114612b0457600080fd5b50565b600081359050612b1681612af0565b92915050565b600060208284031215612b3257612b3161280f565b5b6000612b4084828501612b07565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b6e57612b6d612b49565b5b8235905067ffffffffffffffff811115612b8b57612b8a612b4e565b5b602083019150836020820283011115612ba757612ba6612b53565b5b9250929050565b60008083601f840112612bc457612bc3612b49565b5b8235905067ffffffffffffffff811115612be157612be0612b4e565b5b602083019150836020820283011115612bfd57612bfc612b53565b5b9250929050565b60008060008060408587031215612c1e57612c1d61280f565b5b600085013567ffffffffffffffff811115612c3c57612c3b612814565b5b612c4887828801612b58565b9450945050602085013567ffffffffffffffff811115612c6b57612c6a612814565b5b612c7787828801612bae565b925092505092959194509250565b60008060408385031215612c9c57612c9b61280f565b5b6000612caa85828601612862565b9250506020612cbb85828601612862565b9150509250929050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b6000612cfb600a83612768565b9150612d0682612cc5565b602082019050919050565b60006020820190508181036000830152612d2a81612cee565b9050919050565b7f496e76616c696420706172616d657465722e0000000000000000000000000000600082015250565b6000612d67601283612768565b9150612d7282612d31565b602082019050919050565b60006020820190508181036000830152612d9681612d5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e2357808604811115612dff57612dfe612d9d565b5b6001851615612e0e5780820291505b8081029050612e1c85612dcc565b9450612de3565b94509492505050565b600082612e3c5760019050612ef8565b81612e4a5760009050612ef8565b8160018114612e605760028114612e6a57612e99565b6001915050612ef8565b60ff841115612e7c57612e7b612d9d565b5b8360020a915084821115612e9357612e92612d9d565b5b50612ef8565b5060208310610133831016604e8410600b8410161715612ece5782820a905083811115612ec957612ec8612d9d565b5b612ef8565b612edb8484846001612dd9565b92509050818404811115612ef257612ef1612d9d565b5b81810290505b9392505050565b6000612f0a82612877565b9150612f15836129fa565b9250612f427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e2c565b905092915050565b6000612f5582612877565b9150612f6083612877565b9250828202612f6e81612877565b91508282048414831517612f8557612f84612d9d565b5b5092915050565b7f496e73756666696369656e7420616c6c6f77616e63652e000000000000000000600082015250565b6000612fc2601783612768565b9150612fcd82612f8c565b602082019050919050565b60006020820190508181036000830152612ff181612fb5565b9050919050565b600061300382612877565b915061300e83612877565b925082820390508181111561302657613025612d9d565b5b92915050565b7f5461782063616e6e6f7420626520206d6f7265207468616e2032252e00000000600082015250565b6000613062601c83612768565b915061306d8261302c565b602082019050919050565b6000602082019050818103600083015261309181613055565b9050919050565b7f4974206d75737420626520646966666572656e742066726f6d2074686520637560008201527f7272656e74206d61726b6574696e672077616c6c65742e000000000000000000602082015250565b60006130f4603783612768565b91506130ff82613098565b604082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f4974206d757374206e6f742062652061207a65726f2077616c6c65742e000000600082015250565b6000613160601d83612768565b915061316b8261312a565b602082019050919050565b6000602082019050818103600083015261318f81613153565b9050919050565b7f54686579206d757374206265207468652073616d65206c656e6774682e000000600082015250565b60006131cc601d83612768565b91506131d782613196565b602082019050919050565b600060208201905081810360008301526131fb816131bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c69642061697264726f7020686f6c6465722e000000000000000000600082015250565b6000613267601783612768565b915061327282613231565b602082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f496e76616c69642061697264726f7020616d6f756e742e000000000000000000600082015250565b60006132d3601783612768565b91506132de8261329d565b602082019050919050565b60006020820190508181036000830152613302816132c6565b9050919050565b600061331482612877565b915061331f83612877565b925082820190508082111561333757613336612d9d565b5b92915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000613373601383612768565b915061337e8261333d565b602082019050919050565b600060208201905081810360008301526133a281613366565b9050919050565b7f496e73756666696369656e742066756e64732e00000000000000000000000000600082015250565b60006133df601383612768565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061344f82612877565b915061345a83612877565b92508261346a57613469613415565b5b828204905092915050565b7f412077616c6c65742063616e206f6e6c7920686f6c6420757020746f2061207360008201527f70656369666965642070657263656e74616765206f662074686520746f74616c60208201527f20737570706c792e000000000000000000000000000000000000000000000000604082015250565b60006134f7604883612768565b915061350282613475565b606082019050919050565b60006020820190508181036000830152613526816134ea565b9050919050565b7f4661696c656420746f20636f6e7665727420616363756d756c6174656420666560008201527f65732e0000000000000000000000000000000000000000000000000000000000602082015250565b6000613589602383612768565b91506135948261352d565b604082019050919050565b600060208201905081810360008301526135b88161357c565b9050919050565b7f4e6f74206f70656e20666f722074726164696e672e0000000000000000000000600082015250565b60006135f5601583612768565b9150613600826135bf565b602082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506136698161284b565b92915050565b6000602082840312156136855761368461280f565b5b60006136938482850161365a565b91505092915050565b6000819050919050565b6000819050919050565b60006136cb6136c66136c18461369c565b6136a6565b612877565b9050919050565b6136db816136b0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61371681612839565b82525050565b6000613728838361370d565b60208301905092915050565b6000602082019050919050565b600061374c826136e1565b61375681856136ec565b9350613761836136fd565b8060005b83811015613792578151613779888261371c565b975061378483613734565b925050600181019050613765565b5085935050505092915050565b600060a0820190506137b46000830188612950565b6137c160208301876136d2565b81810360408301526137d38186613741565b90506137e26060830185612ac6565b6137ef6080830184612950565b9695505050505050565b600081905092915050565b50565b60006138146000836137f9565b915061381f82613804565b600082019050919050565b600061383582613807565b9150819050919050565b7f4661696c656420746f207472616e736665722066656520746f206d61726b657460008201527f696e672077616c6c65742e000000000000000000000000000000000000000000602082015250565b600061389b602b83612768565b91506138a68261383f565b604082019050919050565b600060208201905081810360008301526138ca8161388e565b905091905056fea26469706673582212205ed2757afdc0f637f48728e8c2169dc85cca10657f196907eb79590db6dcab3a64736f6c63430008120033
Deployed Bytecode Sourcemap
3703:10613:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6128:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6717:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7916:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5674:170;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4619:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13257:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7375:357;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12020:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8108:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5852:162;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13135:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6613:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12752:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4951:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6486:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4130:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8286:208;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12549:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12176:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6230:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13395:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6022:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4860:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7202:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7740:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12312:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13687:585;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6331:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8502:234;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4990:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:205;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:94;6176:13;6209:5;;;;;;;;;;;;;;;;;6202:12;;6128:94;:::o;6717:161::-;6794:4;6811:37;6820:10;6832:7;6841:6;6811:8;:37::i;:::-;6866:4;6859:11;;6717:161;;;;:::o;7916:184::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8025:1:::1;8004:18;:22;7996:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8074:18;8060:11;:32;;;;7916:184:::0;:::o;5674:170::-;5729:7;5769:1;4367:2;4438;:17;;;;:::i;:::-;4416:19;:39;;;;:::i;:::-;5753:17;5749:58;;5787:8;;;5749:58;4367:2;4438;:17;;;;:::i;:::-;4416:19;:39;;;;:::i;:::-;5817:19;;5674:170;:::o;4619:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;13257:130::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13374:5:::1;13336:17;:35;13354:16;13336:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;13257:130:::0;:::o;7375:357::-;7509:4;7569:6;7534:11;:19;7546:6;7534:19;;;;;;;;;;;;;;;:31;7554:10;7534:31;;;;;;;;;;;;;;;;:41;;7526:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7649:6;7614:11;:19;7626:6;7614:19;;;;;;;;;;;;;;;:31;7634:10;7614:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;7666:36;7676:6;7684:9;7695:6;7666:9;:36::i;:::-;;7720:4;7713:11;;7375:357;;;;;:::o;12020:148::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:3:::1;12089:7;:14;;12081:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12153:7;12147:3;:13;;;;12020:148:::0;:::o;8108:170::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8208:1:::1;8191:14;:18;8183:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8256:14;8243:10;:27;;;;8108:170:::0;:::o;5852:162::-;5904:5;5942:1;4367:2;4438;:17;;;;:::i;:::-;4416:19;:39;;;;:::i;:::-;5926:17;5922:58;;5960:8;;;5922:58;4367:2;5990:16;;5852:162;:::o;13135:114::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13237:4:::1;13205:17;:29;13223:10;13205:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13135:114:::0;:::o;6613:96::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;6692:9:::1;6683:6;;:18;;;;;;;;;;;;;;;;;;6613:96:::0;:::o;12752:375::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12884:15:::1;;;;;;;;;;;12864:35;;:16;:35;;::::0;12842:140:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13029:1;13001:30;;:16;:30;;::::0;12993:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13102:16;13076:15;;:43;;;;;;;;;;;;;;;;;;12752:375:::0;:::o;4951:32::-;;;;:::o;6486:119::-;6552:7;6579:9;:18;6589:7;6579:18;;;;;;;;;;;;;;;;6572:25;;6486:119;;;:::o;4130:92::-;;;;;;;;;;;;;:::o;8286:208::-;8332:4;8349:13;8365:5;8349:21;;8404:13;;8385:15;:32;8381:80;;8445:4;8434:15;;8381:80;8478:8;8471:15;;;8286:208;:::o;12549:195::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12649:1:::1;12635:11;:15;:37;;;;;12668:4;12654:11;:18;12635:37;12627:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12725:11;12706:16;:30;;;;12549:195:::0;:::o;12176:128::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12279:17:::1;12260:16;:36;;;;12176:128:::0;:::o;6230:93::-;6282:7;6309:6;;;;;;;;;;;6302:13;;6230:93;:::o;13395:148::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13477:58:::1;13487:10;13499:9;4367:2;13519;:15;;;;:::i;:::-;13510:6;:24;;;;:::i;:::-;13477:9;:58::i;:::-;;13395:148:::0;;:::o;6022:98::-;6072:13;6105:7;;;;;;;;;;;;;;;;;6098:14;;6022:98;:::o;4860:26::-;;;;;;;;;;;;;:::o;7202:165::-;7280:4;7297:40;7307:10;7319:9;7330:6;7297:9;:40::i;:::-;;7355:4;7348:11;;7202:165;;;;:::o;7740:168::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7840:1:::1;7828:9;:13;7820:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7891:9;7875:13;:25;;;;7740:168:::0;:::o;12312:229::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;12446:1:::1;12418:25;:29;;;12410:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12508:25;12481:24;;:52;;;;;;;;;;;;;;;;;;12312:229:::0;:::o;13687:585::-;5079:10;5069:20;;:6;;;;;;;;;;;:20;;;5061:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;13852:7:::1;;:14;;13831:10;;:17;;:35;13823:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;13911:16;13942:323;13960:10;;:17;;13949:8;:28;13942:323;;;14034:1;14002:34;;:10;;14013:8;14002:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:34;;::::0;13994:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14107:1;14087:7;;14095:8;14087:17;;;;;;;:::i;:::-;;;;;;;;:21;14079:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14151:74;14167:10;;14178:8;14167:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;4367:2;14209;:15;;;;:::i;:::-;14189:7;;14197:8;14189:17;;;;;;;:::i;:::-;;;;;;;;:35;;;;:::i;:::-;14151:15;:74::i;:::-;14252:1;14240:13;;;;;:::i;:::-;;;13942:323;;;13812:460;13687:585:::0;;;;:::o;6331:147::-;6415:7;6442:11;:19;6454:6;6442:19;;;;;;;;;;;;;;;:28;6462:7;6442:28;;;;;;;;;;;;;;;;6435:35;;6331:147;;;;:::o;8502:234::-;8553:4;8570:13;8586:5;8570:21;;8656:2;8642:11;;:16;;;;:::i;:::-;8626:13;;:32;;;;:::i;:::-;8606:15;:53;8602:101;;8687:4;8676:15;;8602:101;8720:8;8713:15;;;8502:234;:::o;4990:30::-;;;;:::o;8744:205::-;8792:7;8812:15;8830:3;;8812:21;;8848:20;:18;:20::i;:::-;8844:73;;;8895:10;;8885:20;;8844:73;8934:7;8927:14;;;8744:205;:::o;6886:308::-;6999:1;6981:20;;:6;:20;;;6973:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7063:1;7044:21;;:7;:21;;;7036:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7131:6;7100:11;:19;7112:6;7100:19;;;;;;;;;;;;;;;:28;7120:7;7100:28;;;;;;;;;;;;;;;:37;;;;7170:7;7153:33;;7162:6;7153:33;;;7179:6;7153:33;;;;;;:::i;:::-;;;;;;;;6886:308;;;:::o;8957:2168::-;9036:4;9071:15;9081:4;9071:9;:15::i;:::-;9061:6;:25;;9053:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9131:11;;;;;;;;;;;9125:17;;:2;:17;;;:39;;;;;9163:1;9146:13;;:18;9125:39;9121:103;;;9197:15;9181:13;:31;;;;9121:103;9234:28;9265:13;9275:2;9265:9;:13::i;:::-;9234:44;;9289:32;9360:4;9340:16;;4367:2;4438;:17;;;;:::i;:::-;4416:19;:39;;;;:::i;:::-;9325:31;;;;:::i;:::-;9324:40;;;;:::i;:::-;9289:75;;9413:27;9403:6;9380:20;:29;;;;:::i;:::-;9379:61;9375:276;;;9475:1;9461:16;;:2;:16;;;;:37;;;;;9487:11;;;;;;;;;;;9481:17;;:2;:17;;;;9461:37;:60;;;;;9516:4;9502:19;;:2;:19;;;;9461:60;9457:183;;;9542:82;;;;;;;;;;:::i;:::-;;;;;;;;9457:183;9375:276;9666:17;:23;9684:4;9666:23;;;;;;;;;;;;;;;;;;;;;;;;;9665:24;:50;;;;;9694:17;:21;9712:2;9694:21;;;;;;;;;;;;;;;;;;;;;;;;;9693:22;9665:50;:71;;;;;9725:11;;;;;;;;;;;9719:17;;:2;:17;;;9665:71;9661:1435;;;9753:16;9772:15;:13;:15::i;:::-;9753:34;;9806:11;9802:1141;;;9843:6;;;;;;;;;;;9838:617;;9874:23;9900:24;9918:4;9900:9;:24::i;:::-;9874:50;;9970:16;;9951:15;:35;9947:489;;10015:25;10097:24;;;;;;;;;;;10043:78;;:22;10053:11;;;;;;;;;;;10043:9;:22::i;:::-;:78;;;;:::i;:::-;10015:106;;10170:17;10152:15;:35;10148:105;;;10236:17;10218:35;;10148:105;10280:11;10294:37;10315:15;10294:20;:37::i;:::-;10280:51;;10366:6;10358:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9988:448;;9947:489;9851:604;9838:617;10473:15;10491:17;:15;:17::i;:::-;10473:35;;10527:17;10568:5;10557:7;10548:6;:16;;;;:::i;:::-;10547:26;;;;:::i;:::-;10527:46;;10611:6;10592:9;:15;10602:4;10592:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;10664:9;10636;:24;10654:4;10636:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10720:4;10697:40;;10706:4;10697:40;;;10727:9;10697:40;;;;;;:::i;:::-;;;;;;;;10783:9;10774:6;:18;;;;:::i;:::-;10756:9;:13;10766:2;10756:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10832:2;10817:38;;10826:4;10817:38;;;10845:9;10836:6;:18;;;;:::i;:::-;10817:38;;;;;;:::i;:::-;;;;;;;;9819:1052;;9802:1141;;;10896:31;;;;;;;;;;:::i;:::-;;;;;;;;9802:1141;9738:1216;9661:1435;;;10994:6;10975:9;:15;10985:4;10975:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;11032:6;11015:9;:13;11025:2;11015:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11073:2;11058:26;;11067:4;11058:26;;;11077:6;11058:26;;;;;;:::i;:::-;;;;;;;;9661:1435;11113:4;11106:11;;;;8957:2168;;;;;:::o;13551:128::-;13631:40;13641:10;13653:9;13664:6;13631:9;:40::i;:::-;;13551:128;;:::o;11133:879::-;11217:4;5174;5165:6;;:13;;;;;;;;;;;;;;;;;;11288:17:::1;11238:11;:26;11258:4;11238:26;;;;;;;;;;;;;;;:46;11273:9:::0;::::1;;;;;;;;;;11238:46;;;;;;;;;;;;;;;;:67;11234:166;;11371:17;11322:11;:26;11342:4;11322:26;;;;;;;;;;;;;;;:46;11357:9:::0;::::1;;;;;;;;;;11322:46;;;;;;;;;;;;;;;:66;;;;11234:166;11410:21;11448:1;11434:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11410:40;;11479:4;11461;11466:1;11461:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11505:9;::::0;::::1;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11495:4;11500:1;11495:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;11549:9;::::0;::::1;;;;;;;;:60;;;11628:15;11662:1;11682:4;11713;11737:15;11549:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;11532:293;;11808:5;11801:12;;;;;11532:293;11836:12;11854:15;;;;;;;;;;;:20;;11882:21;11854:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11835:73;;;11927:7;11919:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12000:4;11993:11;;;;5189:1;5210:5:::0;5201:6;;:14;;;;;;;;;;;;;;;;;;11133:879;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:86::-;5128:7;5168:4;5161:5;5157:16;5146:27;;5093:86;;;:::o;5185:112::-;5268:22;5284:5;5268:22;:::i;:::-;5263:3;5256:35;5185:112;;:::o;5303:214::-;5392:4;5430:2;5419:9;5415:18;5407:26;;5443:67;5507:1;5496:9;5492:17;5483:6;5443:67;:::i;:::-;5303:214;;;;:::o;5523:104::-;5568:7;5597:24;5615:5;5597:24;:::i;:::-;5586:35;;5523:104;;;:::o;5633:138::-;5714:32;5740:5;5714:32;:::i;:::-;5707:5;5704:43;5694:71;;5761:1;5758;5751:12;5694:71;5633:138;:::o;5777:155::-;5831:5;5869:6;5856:20;5847:29;;5885:41;5920:5;5885:41;:::i;:::-;5777:155;;;;:::o;5938:345::-;6005:6;6054:2;6042:9;6033:7;6029:23;6025:32;6022:119;;;6060:79;;:::i;:::-;6022:119;6180:1;6205:61;6258:7;6249:6;6238:9;6234:22;6205:61;:::i;:::-;6195:71;;6151:125;5938:345;;;;:::o;6289:142::-;6392:32;6418:5;6392:32;:::i;:::-;6387:3;6380:45;6289:142;;:::o;6437:254::-;6546:4;6584:2;6573:9;6569:18;6561:26;;6597:87;6681:1;6670:9;6666:17;6657:6;6597:87;:::i;:::-;6437:254;;;;:::o;6697:118::-;6784:24;6802:5;6784:24;:::i;:::-;6779:3;6772:37;6697:118;;:::o;6821:222::-;6914:4;6952:2;6941:9;6937:18;6929:26;;6965:71;7033:1;7022:9;7018:17;7009:6;6965:71;:::i;:::-;6821:222;;;;:::o;7049:118::-;7120:22;7136:5;7120:22;:::i;:::-;7113:5;7110:33;7100:61;;7157:1;7154;7147:12;7100:61;7049:118;:::o;7173:135::-;7217:5;7255:6;7242:20;7233:29;;7271:31;7296:5;7271:31;:::i;:::-;7173:135;;;;:::o;7314:325::-;7371:6;7420:2;7408:9;7399:7;7395:23;7391:32;7388:119;;;7426:79;;:::i;:::-;7388:119;7546:1;7571:51;7614:7;7605:6;7594:9;7590:22;7571:51;:::i;:::-;7561:61;;7517:115;7314:325;;;;:::o;7645:117::-;7754:1;7751;7744:12;7768:117;7877:1;7874;7867:12;7891:117;8000:1;7997;7990:12;8031:568;8104:8;8114:6;8164:3;8157:4;8149:6;8145:17;8141:27;8131:122;;8172:79;;:::i;:::-;8131:122;8285:6;8272:20;8262:30;;8315:18;8307:6;8304:30;8301:117;;;8337:79;;:::i;:::-;8301:117;8451:4;8443:6;8439:17;8427:29;;8505:3;8497:4;8489:6;8485:17;8475:8;8471:32;8468:41;8465:128;;;8512:79;;:::i;:::-;8465:128;8031:568;;;;;:::o;8622:::-;8695:8;8705:6;8755:3;8748:4;8740:6;8736:17;8732:27;8722:122;;8763:79;;:::i;:::-;8722:122;8876:6;8863:20;8853:30;;8906:18;8898:6;8895:30;8892:117;;;8928:79;;:::i;:::-;8892:117;9042:4;9034:6;9030:17;9018:29;;9096:3;9088:4;9080:6;9076:17;9066:8;9062:32;9059:41;9056:128;;;9103:79;;:::i;:::-;9056:128;8622:568;;;;;:::o;9196:934::-;9318:6;9326;9334;9342;9391:2;9379:9;9370:7;9366:23;9362:32;9359:119;;;9397:79;;:::i;:::-;9359:119;9545:1;9534:9;9530:17;9517:31;9575:18;9567:6;9564:30;9561:117;;;9597:79;;:::i;:::-;9561:117;9710:80;9782:7;9773:6;9762:9;9758:22;9710:80;:::i;:::-;9692:98;;;;9488:312;9867:2;9856:9;9852:18;9839:32;9898:18;9890:6;9887:30;9884:117;;;9920:79;;:::i;:::-;9884:117;10033:80;10105:7;10096:6;10085:9;10081:22;10033:80;:::i;:::-;10015:98;;;;9810:313;9196:934;;;;;;;:::o;10136:474::-;10204:6;10212;10261:2;10249:9;10240:7;10236:23;10232:32;10229:119;;;10267:79;;:::i;:::-;10229:119;10387:1;10412:53;10457:7;10448:6;10437:9;10433:22;10412:53;:::i;:::-;10402:63;;10358:117;10514:2;10540:53;10585:7;10576:6;10565:9;10561:22;10540:53;:::i;:::-;10530:63;;10485:118;10136:474;;;;;:::o;10616:160::-;10756:12;10752:1;10744:6;10740:14;10733:36;10616:160;:::o;10782:366::-;10924:3;10945:67;11009:2;11004:3;10945:67;:::i;:::-;10938:74;;11021:93;11110:3;11021:93;:::i;:::-;11139:2;11134:3;11130:12;11123:19;;10782:366;;;:::o;11154:419::-;11320:4;11358:2;11347:9;11343:18;11335:26;;11407:9;11401:4;11397:20;11393:1;11382:9;11378:17;11371:47;11435:131;11561:4;11435:131;:::i;:::-;11427:139;;11154:419;;;:::o;11579:168::-;11719:20;11715:1;11707:6;11703:14;11696:44;11579:168;:::o;11753:366::-;11895:3;11916:67;11980:2;11975:3;11916:67;:::i;:::-;11909:74;;11992:93;12081:3;11992:93;:::i;:::-;12110:2;12105:3;12101:12;12094:19;;11753:366;;;:::o;12125:419::-;12291:4;12329:2;12318:9;12314:18;12306:26;;12378:9;12372:4;12368:20;12364:1;12353:9;12349:17;12342:47;12406:131;12532:4;12406:131;:::i;:::-;12398:139;;12125:419;;;:::o;12550:180::-;12598:77;12595:1;12588:88;12695:4;12692:1;12685:15;12719:4;12716:1;12709:15;12736:102;12778:8;12825:5;12822:1;12818:13;12797:34;;12736:102;;;:::o;12844:848::-;12905:5;12912:4;12936:6;12927:15;;12960:5;12951:14;;12974:712;12995:1;12985:8;12982:15;12974:712;;;13090:4;13085:3;13081:14;13075:4;13072:24;13069:50;;;13099:18;;:::i;:::-;13069:50;13149:1;13139:8;13135:16;13132:451;;;13564:4;13557:5;13553:16;13544:25;;13132:451;13614:4;13608;13604:15;13596:23;;13644:32;13667:8;13644:32;:::i;:::-;13632:44;;12974:712;;;12844:848;;;;;;;:::o;13698:1073::-;13752:5;13943:8;13933:40;;13964:1;13955:10;;13966:5;;13933:40;13992:4;13982:36;;14009:1;14000:10;;14011:5;;13982:36;14078:4;14126:1;14121:27;;;;14162:1;14157:191;;;;14071:277;;14121:27;14139:1;14130:10;;14141:5;;;14157:191;14202:3;14192:8;14189:17;14186:43;;;14209:18;;:::i;:::-;14186:43;14258:8;14255:1;14251:16;14242:25;;14293:3;14286:5;14283:14;14280:40;;;14300:18;;:::i;:::-;14280:40;14333:5;;;14071:277;;14457:2;14447:8;14444:16;14438:3;14432:4;14429:13;14425:36;14407:2;14397:8;14394:16;14389:2;14383:4;14380:12;14376:35;14360:111;14357:246;;;14513:8;14507:4;14503:19;14494:28;;14548:3;14541:5;14538:14;14535:40;;;14555:18;;:::i;:::-;14535:40;14588:5;;14357:246;14628:42;14666:3;14656:8;14650:4;14647:1;14628:42;:::i;:::-;14613:57;;;;14702:4;14697:3;14693:14;14686:5;14683:25;14680:51;;;14711:18;;:::i;:::-;14680:51;14760:4;14753:5;14749:16;14740:25;;13698:1073;;;;;;:::o;14777:281::-;14835:5;14859:23;14877:4;14859:23;:::i;:::-;14851:31;;14903:25;14919:8;14903:25;:::i;:::-;14891:37;;14947:104;14984:66;14974:8;14968:4;14947:104;:::i;:::-;14938:113;;14777:281;;;;:::o;15064:410::-;15104:7;15127:20;15145:1;15127:20;:::i;:::-;15122:25;;15161:20;15179:1;15161:20;:::i;:::-;15156:25;;15216:1;15213;15209:9;15238:30;15256:11;15238:30;:::i;:::-;15227:41;;15417:1;15408:7;15404:15;15401:1;15398:22;15378:1;15371:9;15351:83;15328:139;;15447:18;;:::i;:::-;15328:139;15112:362;15064:410;;;;:::o;15480:173::-;15620:25;15616:1;15608:6;15604:14;15597:49;15480:173;:::o;15659:366::-;15801:3;15822:67;15886:2;15881:3;15822:67;:::i;:::-;15815:74;;15898:93;15987:3;15898:93;:::i;:::-;16016:2;16011:3;16007:12;16000:19;;15659:366;;;:::o;16031:419::-;16197:4;16235:2;16224:9;16220:18;16212:26;;16284:9;16278:4;16274:20;16270:1;16259:9;16255:17;16248:47;16312:131;16438:4;16312:131;:::i;:::-;16304:139;;16031:419;;;:::o;16456:194::-;16496:4;16516:20;16534:1;16516:20;:::i;:::-;16511:25;;16550:20;16568:1;16550:20;:::i;:::-;16545:25;;16594:1;16591;16587:9;16579:17;;16618:1;16612:4;16609:11;16606:37;;;16623:18;;:::i;:::-;16606:37;16456:194;;;;:::o;16656:178::-;16796:30;16792:1;16784:6;16780:14;16773:54;16656:178;:::o;16840:366::-;16982:3;17003:67;17067:2;17062:3;17003:67;:::i;:::-;16996:74;;17079:93;17168:3;17079:93;:::i;:::-;17197:2;17192:3;17188:12;17181:19;;16840:366;;;:::o;17212:419::-;17378:4;17416:2;17405:9;17401:18;17393:26;;17465:9;17459:4;17455:20;17451:1;17440:9;17436:17;17429:47;17493:131;17619:4;17493:131;:::i;:::-;17485:139;;17212:419;;;:::o;17637:242::-;17777:34;17773:1;17765:6;17761:14;17754:58;17846:25;17841:2;17833:6;17829:15;17822:50;17637:242;:::o;17885:366::-;18027:3;18048:67;18112:2;18107:3;18048:67;:::i;:::-;18041:74;;18124:93;18213:3;18124:93;:::i;:::-;18242:2;18237:3;18233:12;18226:19;;17885:366;;;:::o;18257:419::-;18423:4;18461:2;18450:9;18446:18;18438:26;;18510:9;18504:4;18500:20;18496:1;18485:9;18481:17;18474:47;18538:131;18664:4;18538:131;:::i;:::-;18530:139;;18257:419;;;:::o;18682:179::-;18822:31;18818:1;18810:6;18806:14;18799:55;18682:179;:::o;18867:366::-;19009:3;19030:67;19094:2;19089:3;19030:67;:::i;:::-;19023:74;;19106:93;19195:3;19106:93;:::i;:::-;19224:2;19219:3;19215:12;19208:19;;18867:366;;;:::o;19239:419::-;19405:4;19443:2;19432:9;19428:18;19420:26;;19492:9;19486:4;19482:20;19478:1;19467:9;19463:17;19456:47;19520:131;19646:4;19520:131;:::i;:::-;19512:139;;19239:419;;;:::o;19664:179::-;19804:31;19800:1;19792:6;19788:14;19781:55;19664:179;:::o;19849:366::-;19991:3;20012:67;20076:2;20071:3;20012:67;:::i;:::-;20005:74;;20088:93;20177:3;20088:93;:::i;:::-;20206:2;20201:3;20197:12;20190:19;;19849:366;;;:::o;20221:419::-;20387:4;20425:2;20414:9;20410:18;20402:26;;20474:9;20468:4;20464:20;20460:1;20449:9;20445:17;20438:47;20502:131;20628:4;20502:131;:::i;:::-;20494:139;;20221:419;;;:::o;20646:180::-;20694:77;20691:1;20684:88;20791:4;20788:1;20781:15;20815:4;20812:1;20805:15;20832:173;20972:25;20968:1;20960:6;20956:14;20949:49;20832:173;:::o;21011:366::-;21153:3;21174:67;21238:2;21233:3;21174:67;:::i;:::-;21167:74;;21250:93;21339:3;21250:93;:::i;:::-;21368:2;21363:3;21359:12;21352:19;;21011:366;;;:::o;21383:419::-;21549:4;21587:2;21576:9;21572:18;21564:26;;21636:9;21630:4;21626:20;21622:1;21611:9;21607:17;21600:47;21664:131;21790:4;21664:131;:::i;:::-;21656:139;;21383:419;;;:::o;21808:173::-;21948:25;21944:1;21936:6;21932:14;21925:49;21808:173;:::o;21987:366::-;22129:3;22150:67;22214:2;22209:3;22150:67;:::i;:::-;22143:74;;22226:93;22315:3;22226:93;:::i;:::-;22344:2;22339:3;22335:12;22328:19;;21987:366;;;:::o;22359:419::-;22525:4;22563:2;22552:9;22548:18;22540:26;;22612:9;22606:4;22602:20;22598:1;22587:9;22583:17;22576:47;22640:131;22766:4;22640:131;:::i;:::-;22632:139;;22359:419;;;:::o;22784:191::-;22824:3;22843:20;22861:1;22843:20;:::i;:::-;22838:25;;22877:20;22895:1;22877:20;:::i;:::-;22872:25;;22920:1;22917;22913:9;22906:16;;22941:3;22938:1;22935:10;22932:36;;;22948:18;;:::i;:::-;22932:36;22784:191;;;;:::o;22981:169::-;23121:21;23117:1;23109:6;23105:14;23098:45;22981:169;:::o;23156:366::-;23298:3;23319:67;23383:2;23378:3;23319:67;:::i;:::-;23312:74;;23395:93;23484:3;23395:93;:::i;:::-;23513:2;23508:3;23504:12;23497:19;;23156:366;;;:::o;23528:419::-;23694:4;23732:2;23721:9;23717:18;23709:26;;23781:9;23775:4;23771:20;23767:1;23756:9;23752:17;23745:47;23809:131;23935:4;23809:131;:::i;:::-;23801:139;;23528:419;;;:::o;23953:169::-;24093:21;24089:1;24081:6;24077:14;24070:45;23953:169;:::o;24128:366::-;24270:3;24291:67;24355:2;24350:3;24291:67;:::i;:::-;24284:74;;24367:93;24456:3;24367:93;:::i;:::-;24485:2;24480:3;24476:12;24469:19;;24128:366;;;:::o;24500:419::-;24666:4;24704:2;24693:9;24689:18;24681:26;;24753:9;24747:4;24743:20;24739:1;24728:9;24724:17;24717:47;24781:131;24907:4;24781:131;:::i;:::-;24773:139;;24500:419;;;:::o;24925:180::-;24973:77;24970:1;24963:88;25070:4;25067:1;25060:15;25094:4;25091:1;25084:15;25111:185;25151:1;25168:20;25186:1;25168:20;:::i;:::-;25163:25;;25202:20;25220:1;25202:20;:::i;:::-;25197:25;;25241:1;25231:35;;25246:18;;:::i;:::-;25231:35;25288:1;25285;25281:9;25276:14;;25111:185;;;;:::o;25302:296::-;25442:34;25438:1;25430:6;25426:14;25419:58;25511:34;25506:2;25498:6;25494:15;25487:59;25580:10;25575:2;25567:6;25563:15;25556:35;25302:296;:::o;25604:366::-;25746:3;25767:67;25831:2;25826:3;25767:67;:::i;:::-;25760:74;;25843:93;25932:3;25843:93;:::i;:::-;25961:2;25956:3;25952:12;25945:19;;25604:366;;;:::o;25976:419::-;26142:4;26180:2;26169:9;26165:18;26157:26;;26229:9;26223:4;26219:20;26215:1;26204:9;26200:17;26193:47;26257:131;26383:4;26257:131;:::i;:::-;26249:139;;25976:419;;;:::o;26401:222::-;26541:34;26537:1;26529:6;26525:14;26518:58;26610:5;26605:2;26597:6;26593:15;26586:30;26401:222;:::o;26629:366::-;26771:3;26792:67;26856:2;26851:3;26792:67;:::i;:::-;26785:74;;26868:93;26957:3;26868:93;:::i;:::-;26986:2;26981:3;26977:12;26970:19;;26629:366;;;:::o;27001:419::-;27167:4;27205:2;27194:9;27190:18;27182:26;;27254:9;27248:4;27244:20;27240:1;27229:9;27225:17;27218:47;27282:131;27408:4;27282:131;:::i;:::-;27274:139;;27001:419;;;:::o;27426:171::-;27566:23;27562:1;27554:6;27550:14;27543:47;27426:171;:::o;27603:366::-;27745:3;27766:67;27830:2;27825:3;27766:67;:::i;:::-;27759:74;;27842:93;27931:3;27842:93;:::i;:::-;27960:2;27955:3;27951:12;27944:19;;27603:366;;;:::o;27975:419::-;28141:4;28179:2;28168:9;28164:18;28156:26;;28228:9;28222:4;28218:20;28214:1;28203:9;28199:17;28192:47;28256:131;28382:4;28256:131;:::i;:::-;28248:139;;27975:419;;;:::o;28400:180::-;28448:77;28445:1;28438:88;28545:4;28542:1;28535:15;28569:4;28566:1;28559:15;28586:143;28643:5;28674:6;28668:13;28659:22;;28690:33;28717:5;28690:33;:::i;:::-;28586:143;;;;:::o;28735:351::-;28805:6;28854:2;28842:9;28833:7;28829:23;28825:32;28822:119;;;28860:79;;:::i;:::-;28822:119;28980:1;29005:64;29061:7;29052:6;29041:9;29037:22;29005:64;:::i;:::-;28995:74;;28951:128;28735:351;;;;:::o;29092:85::-;29137:7;29166:5;29155:16;;29092:85;;;:::o;29183:60::-;29211:3;29232:5;29225:12;;29183:60;;;:::o;29249:158::-;29307:9;29340:61;29358:42;29367:32;29393:5;29367:32;:::i;:::-;29358:42;:::i;:::-;29340:61;:::i;:::-;29327:74;;29249:158;;;:::o;29413:147::-;29508:45;29547:5;29508:45;:::i;:::-;29503:3;29496:58;29413:147;;:::o;29566:114::-;29633:6;29667:5;29661:12;29651:22;;29566:114;;;:::o;29686:184::-;29785:11;29819:6;29814:3;29807:19;29859:4;29854:3;29850:14;29835:29;;29686:184;;;;:::o;29876:132::-;29943:4;29966:3;29958:11;;29996:4;29991:3;29987:14;29979:22;;29876:132;;;:::o;30014:108::-;30091:24;30109:5;30091:24;:::i;:::-;30086:3;30079:37;30014:108;;:::o;30128:179::-;30197:10;30218:46;30260:3;30252:6;30218:46;:::i;:::-;30296:4;30291:3;30287:14;30273:28;;30128:179;;;;:::o;30313:113::-;30383:4;30415;30410:3;30406:14;30398:22;;30313:113;;;:::o;30462:732::-;30581:3;30610:54;30658:5;30610:54;:::i;:::-;30680:86;30759:6;30754:3;30680:86;:::i;:::-;30673:93;;30790:56;30840:5;30790:56;:::i;:::-;30869:7;30900:1;30885:284;30910:6;30907:1;30904:13;30885:284;;;30986:6;30980:13;31013:63;31072:3;31057:13;31013:63;:::i;:::-;31006:70;;31099:60;31152:6;31099:60;:::i;:::-;31089:70;;30945:224;30932:1;30929;30925:9;30920:14;;30885:284;;;30889:14;31185:3;31178:10;;30586:608;;;30462:732;;;;:::o;31200:831::-;31463:4;31501:3;31490:9;31486:19;31478:27;;31515:71;31583:1;31572:9;31568:17;31559:6;31515:71;:::i;:::-;31596:80;31672:2;31661:9;31657:18;31648:6;31596:80;:::i;:::-;31723:9;31717:4;31713:20;31708:2;31697:9;31693:18;31686:48;31751:108;31854:4;31845:6;31751:108;:::i;:::-;31743:116;;31869:72;31937:2;31926:9;31922:18;31913:6;31869:72;:::i;:::-;31951:73;32019:3;32008:9;32004:19;31995:6;31951:73;:::i;:::-;31200:831;;;;;;;;:::o;32037:147::-;32138:11;32175:3;32160:18;;32037:147;;;;:::o;32190:114::-;;:::o;32310:398::-;32469:3;32490:83;32571:1;32566:3;32490:83;:::i;:::-;32483:90;;32582:93;32671:3;32582:93;:::i;:::-;32700:1;32695:3;32691:11;32684:18;;32310:398;;;:::o;32714:379::-;32898:3;32920:147;33063:3;32920:147;:::i;:::-;32913:154;;33084:3;33077:10;;32714:379;;;:::o;33099:230::-;33239:34;33235:1;33227:6;33223:14;33216:58;33308:13;33303:2;33295:6;33291:15;33284:38;33099:230;:::o;33335:366::-;33477:3;33498:67;33562:2;33557:3;33498:67;:::i;:::-;33491:74;;33574:93;33663:3;33574:93;:::i;:::-;33692:2;33687:3;33683:12;33676:19;;33335:366;;;:::o;33707:419::-;33873:4;33911:2;33900:9;33896:18;33888:26;;33960:9;33954:4;33950:20;33946:1;33935:9;33931:17;33924:47;33988:131;34114:4;33988:131;:::i;:::-;33980:139;;33707:419;;;:::o
Swarm Source
ipfs://5ed2757afdc0f637f48728e8c2169dc85cca10657f196907eb79590db6dcab3a
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.