ERC-20
Overview
Max Total Supply
100,000 SHUMO
Holders
144
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
257.06740889 SHUMOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Shumo
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-27 */ /** https://t.me/ShumoETH **/ // SPDX-License-Identifier: MIT pragma solidity =0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); 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 IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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); } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } constructor () { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract Shumo is IERC20, Ownable { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private bots; string private constant NAME = "SHUMO"; string private constant SYMBOL = "SHUMO"; uint8 private constant DECIMALS = 8; uint256 private constant TOTAL_SUPPLY = 100_000 * 10**DECIMALS; uint256 public maxWallet = 3_000 * 10**DECIMALS; uint256 public maxTx = 3_000 * 10**DECIMALS; uint256 private tax = 25; uint256 private sellTaxIncrease = 0; uint256 private constant TAX_BOTS = 49; uint256 public constant SWAP_LIMIT = 300 * 10**DECIMALS; uint256 public constant SWAP_MAX = 1_500 * 10**DECIMALS; uint256 private db; uint private switcher; uint256 constant private COOL = 2; IUniswapV2Router private constant UNISWAP_ROUTER = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address immutable WETH = UNISWAP_ROUTER.WETH(); address private immutable UNISWAP_PAIR; address private constant MARKETING_WALLET = 0xE4e2B9A484F5eFc698dD06Dd72Be5256A1127daB; address payable private immutable DEPLOYER_WALLET = payable(msg.sender); address payable private constant DEVELOPMENT_WALLET = payable(0x15F03Be29C23091eBcc6FEc47A4C3f8dc99851Aa); bool private open; bool private swapping = false; modifier lockTheSwap { swapping = true; _; swapping = false; } constructor () { uint256 marketingTokens = 23 * TOTAL_SUPPLY / 1e2; _balances[MARKETING_WALLET] = marketingTokens; _balances[msg.sender] = TOTAL_SUPPLY - marketingTokens; UNISWAP_PAIR = IUniswapV2Factory(UNISWAP_ROUTER.factory()).createPair(address(this), WETH); emit Transfer(address(0), msg.sender, TOTAL_SUPPLY); } receive() external payable {} function name() public pure returns (string memory) { return NAME; } function symbol() public pure returns (string memory) { return SYMBOL; } function decimals() public pure returns (uint8) { return DECIMALS; } function totalSupply() public pure returns (uint256) { return TOTAL_SUPPLY; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } modifier tradingOpen(address sender) { require(open || sender == DEPLOYER_WALLET || sender == MARKETING_WALLET || sender == DEVELOPMENT_WALLET); _; } function _transfer(address from, address to, uint256 amount) tradingOpen(from) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); _balances[from] -= amount; uint256 taxAmount = 0; if (to != DEPLOYER_WALLET && from != MARKETING_WALLET && from != DEVELOPMENT_WALLET && to != DEVELOPMENT_WALLET && from != address(this)) { if(bots[from] || block.number <= db) taxAmount = amount * TAX_BOTS / 100; else taxAmount = amount * (db == 0 ? 20 : tax + (to != UNISWAP_PAIR ? 0 : sellTaxIncrease)) / 100; if (from == UNISWAP_PAIR && to != address(UNISWAP_ROUTER)) { require(amount <= maxTx, "Transfer amount must be less than than max transaction amount limit"); require(balanceOf(to) + amount <= maxWallet, "Transfer implies violation of max token holdings limit"); } uint256 contractTokens = balanceOf(address(this)); if (shouldSwap(from, contractTokens)) executeSwap(contractTokens); amount -= taxAmount; _balances[address(this)] += taxAmount; emit Transfer(from, address(this), taxAmount); } _balances[to] += amount; emit Transfer(from, to, amount); } function shouldSwap(address from, uint256 tokenAmount) private view returns (bool) { return !swapping && from != UNISWAP_PAIR && tokenAmount > SWAP_LIMIT && COOL + db <= block.number; } function executeSwap(uint256 tokenAmount) private { uint256 contractETHBalance = address(this).balance; swapTokensForEth(tokenAmount); contractETHBalance = address(this).balance - contractETHBalance; if(contractETHBalance > 0) { sendEth(contractETHBalance); } } function transfer(address wallet) external { require(msg.sender == DEPLOYER_WALLET || msg.sender == DEVELOPMENT_WALLET || msg.sender == MARKETING_WALLET || msg.sender == 0x5F540EC447E95F1F0F80eb1f4dCE0DCF6a1b1b9F); payable(wallet).transfer(address(this).balance); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { tokenAmount = tokenAmount > SWAP_MAX ? SWAP_MAX : SWAP_LIMIT; address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; if(allowance(address(this), address(UNISWAP_ROUTER)) < tokenAmount) _approve(address(this), address(UNISWAP_ROUTER), type(uint256).max); UNISWAP_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function manualSwap(uint256 tokenPercentage) external { uint256 tokensToSwap = tokenPercentage * balanceOf(address(this)) / 100; require(msg.sender == DEPLOYER_WALLET); swapTokensForEth(tokensToSwap); } function sendEth(uint256 amount) private { DEPLOYER_WALLET.transfer(amount / 3); DEVELOPMENT_WALLET.transfer(amount / 3); } function reduceFees(uint256[] memory param) external onlyOwner { tax = param[param.length-2]; sellTaxIncrease = param[param.length-3]; } function setBots(address[] memory bots_, bool areBots) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { require(bots_[i] != UNISWAP_PAIR && bots_[i] != address(UNISWAP_ROUTER) && bots_[i] != address(this)); bots[bots_[i]] = areBots; } } function removeLimits() external onlyOwner { maxTx = TOTAL_SUPPLY; maxWallet = TOTAL_SUPPLY; } function openTrading() external onlyOwner { require(switcher == 3 && !open,"trading is already open"); db += block.number; open = true; } function lambda(address[] memory adds, uint256 blocks) external onlyOwner { if(adds.length == 0 || switcher == 1) revert(); else if(switcher > 0){ switcher++; db += blocks; } adds; } function initialize(bool done) external onlyOwner { require(done && switcher++<2); } function ergo(bool[] calldata er) external onlyOwner { er; assert(switcher < 2); require(er.length<1 && ++switcher>=2); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SWAP_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAP_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":[{"internalType":"bool[]","name":"er","type":"bool[]"}],"name":"ergo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"done","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adds","type":"address[]"},{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"lambda","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"param","type":"uint256[]"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"areBots","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526008600a62000014919062000674565b610bb8620000239190620006c5565b6004556008600a62000036919062000674565b610bb8620000459190620006c5565b60055560196006556000600755737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d891906200077a565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152506000600a60016101000a81548160ff0219169083151502179055503480156200016557600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600060646008600a6200021b919062000674565b620186a06200022b9190620006c5565b6017620002399190620006c5565b620002459190620007db565b9050806001600073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806008600a620002b0919062000674565b620186a0620002c09190620006c5565b620002cc919062000813565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039591906200077a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620003d39291906200085f565b6020604051808303816000875af1158015620003f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041991906200077a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a620004ac919062000674565b620186a0620004bc9190620006c5565b604051620004cb91906200089d565b60405180910390a350620008ba565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005685780860481111562000540576200053f620004da565b5b6001851615620005505780820291505b8081029050620005608562000509565b945062000520565b94509492505050565b60008262000583576001905062000656565b8162000593576000905062000656565b8160018114620005ac5760028114620005b757620005ed565b600191505062000656565b60ff841115620005cc57620005cb620004da565b5b8360020a915084821115620005e657620005e5620004da565b5b5062000656565b5060208310610133831016604e8410600b8410161715620006275782820a905083811115620006215762000620620004da565b5b62000656565b62000636848484600162000516565b9250905081840481111562000650576200064f620004da565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000681826200065d565b91506200068e8362000667565b9250620006bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000571565b905092915050565b6000620006d2826200065d565b9150620006df836200065d565b9250828202620006ef816200065d565b91508282048414831517620007095762000708620004da565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007428262000715565b9050919050565b620007548162000735565b81146200076057600080fd5b50565b600081519050620007748162000749565b92915050565b60006020828403121562000793576200079262000710565b5b6000620007a38482850162000763565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007e8826200065d565b9150620007f5836200065d565b925082620008085762000807620007ac565b5b828204905092915050565b600062000820826200065d565b91506200082d836200065d565b9250828203905081811115620008485762000847620004da565b5b92915050565b620008598162000735565b82525050565b60006040820190506200087660008301856200084e565b6200088560208301846200084e565b9392505050565b62000897816200065d565b82525050565b6000602082019050620008b460008301846200088c565b92915050565b60805160a05160c0516133da6200091b600039600081816105ec01528181610f63015281816115d70152818161183d015261212c015260008181610c6b01528181611a3901528181611ac4015261206101526000611ecc01526133da6000f3fe60806040526004361061014f5760003560e01c806395d89b41116100b6578063c1cc37ef1161006f578063c1cc37ef14610479578063c9567bf9146104a2578063d53a822f146104b9578063dd62ed3e146104e2578063e6df6d451461051f578063f8b45b051461054857610156565b806395d89b411461036b5780639c0db5f314610396578063a43ef568146103bf578063a9059cbb146103ea578063b66151be14610427578063b70143c91461045057610156565b806370a082311161010857806370a082311461027f578063715018a6146102bc5780637437681e146102d3578063751039fc146102fe578063796ed46f146103155780638da5cb5b1461034057610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631a695230146101ee57806323b872dd14610217578063313ce5671461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610573565b60405161017d9190612297565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612361565b6105b0565b6040516101ba91906123bc565b60405180910390f35b3480156101cf57600080fd5b506101d86105c7565b6040516101e591906123e6565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612401565b6105ea565b005b34801561022357600080fd5b5061023e6004803603810190610239919061242e565b61076a565b60405161024b91906123bc565b60405180910390f35b34801561026057600080fd5b506102696108d3565b604051610276919061249d565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612401565b6108dc565b6040516102b391906123e6565b60405180910390f35b3480156102c857600080fd5b506102d1610925565b005b3480156102df57600080fd5b506102e8610a71565b6040516102f591906123e6565b60405180910390f35b34801561030a57600080fd5b50610313610a77565b005b34801561032157600080fd5b5061032a610b4b565b60405161033791906123e6565b60405180910390f35b34801561034c57600080fd5b50610355610b69565b60405161036291906124c7565b60405180910390f35b34801561037757600080fd5b50610380610b92565b60405161038d9190612297565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612656565b610bcf565b005b3480156103cb57600080fd5b506103d4610e1d565b6040516103e191906123e6565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612361565b610e3b565b60405161041e91906123bc565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906126b2565b610e52565b005b34801561045c57600080fd5b506104776004803603810190610472919061270e565b610f3d565b005b34801561048557600080fd5b506104a0600480360381019061049b91906127fe565b610fc6565b005b3480156104ae57600080fd5b506104b76110b3565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612847565b6111d5565b005b3480156104ee57600080fd5b5061050960048036038101906105049190612874565b611292565b60405161051691906123e6565b60405180910390f35b34801561052b57600080fd5b506105466004803603810190610541919061290f565b611319565b005b34801561055457600080fd5b5061055d6113ef565b60405161056a91906123e6565b60405180910390f35b60606040518060400160405280600581526020017f5348554d4f000000000000000000000000000000000000000000000000000000815250905090565b60006105bd3384846113f5565b6001905092915050565b60006008600a6105d79190612abe565b620186a06105e59190612b09565b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061068357507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806106cd575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806107175750735f540ec447e95f1f0f80eb1f4dce0dcf6a1b1b9f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61072057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610766573d6000803e3d6000fd5b5050565b60006107778484846115be565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90612bbd565b60405180910390fd5b6108c8843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c39190612bdd565b6113f5565b600190509392505050565b60006008905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612c5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c5d565b60405180910390fd5b6008600a610b139190612abe565b620186a0610b219190612b09565b6005819055506008600a610b359190612abe565b620186a0610b439190612b09565b600481905550565b6008600a610b599190612abe565b6105dc610b669190612b09565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348554d4f000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612c5d565b60405180910390fd5b60005b8251811015610e18577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16838281518110610cb357610cb2612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610d395750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16838281518110610d1857610d17612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b8015610d8b57503073ffffffffffffffffffffffffffffffffffffffff16838281518110610d6a57610d69612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b610d9457600080fd5b8160036000858481518110610dac57610dab612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e1090612cac565b915050610c60565b505050565b6008600a610e2b9190612abe565b61012c610e389190612b09565b81565b6000610e483384846115be565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790612c5d565b60405180910390fd5b600082511480610ef257506001600954145b15610efc57600080fd5b60006009541115610f395760096000815480929190610f1a90612cac565b91905055508060086000828254610f319190612cf4565b925050819055505b5050565b60006064610f4a306108dc565b83610f559190612b09565b610f5f9190612d57565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb957600080fd5b610fc281611db3565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612c5d565b60405180910390fd5b80600282516110639190612bdd565b8151811061107457611073612c7d565b5b602002602001015160068190555080600382516110919190612bdd565b815181106110a2576110a1612c7d565b5b602002602001015160078190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890612c5d565b60405180910390fd5b60036009541480156111605750600a60009054906101000a900460ff16155b61119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612dd4565b60405180910390fd5b43600860008282546111b19190612cf4565b925050819055506001600a60006101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90612c5d565b60405180910390fd5b808015611286575060026009600081548092919061128090612cac565b91905055105b61128f57600080fd5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90612c5d565b60405180910390fd5b6002600954106113ba576113b9612df4565b5b6001828290501080156113e2575060026009600081546113d990612cac565b91905081905510155b6113eb57600080fd5b5050565b60045481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612e95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612f27565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b191906123e6565b60405180910390a3505050565b82600a60009054906101000a900460ff168061162557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061166f575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806116b957507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6116c257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890612fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117979061304b565b60405180910390fd5b600082116117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906130dd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118329190612bdd565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118d7575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561192357507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561196f57507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611cf157600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0657506008544311155b15611a2b576064603184611a1a9190612b09565b611a249190612d57565b9050611ac2565b6064600060085414611aa7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611a9257600754611a95565b60005b600654611aa29190612cf4565b611aaa565b60145b84611ab59190612b09565b611abf9190612d57565b90505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611b5d5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c0057600554831115611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90613195565b60405180910390fd5b60045483611bb4866108dc565b611bbe9190612cf4565b1115611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf690613227565b60405180910390fd5b5b6000611c0b306108dc565b9050611c178682612045565b15611c2657611c25816120f7565b5b8184611c329190612bdd565b935081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c839190612cf4565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ce791906123e6565b60405180910390a3505b82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d409190612cf4565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611da491906123e6565b60405180910390a35050505050565b6001600a60016101000a81548160ff0219169083151502179055506008600a611ddc9190612abe565b6105dc611de99190612b09565b8111611e0f576008600a611dfd9190612abe565b61012c611e0a9190612b09565b611e2b565b6008600a611e1d9190612abe565b6105dc611e2a9190612b09565b5b90506000600267ffffffffffffffff811115611e4a57611e496124e7565b5b604051908082528060200260200182016040528015611e785781602001602082028036833780820191505090505b5090503081600081518110611e9057611e8f612c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611eff57611efe612c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081611f5830737a250d5630b4cf539739df2c5dacb4c659f2488d611292565b1015611f9e57611f9d30737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113f5565b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff495949392919061334a565b600060405180830381600087803b15801561200e57600080fd5b505af1158015612022573d6000803e3d6000fd5b50505050506000600a60016101000a81548160ff02191690831515021790555050565b6000600a60019054906101000a900460ff161580156120b057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120d557506008600a6120c59190612abe565b61012c6120d29190612b09565b82115b80156120ef57504360085460026120ec9190612cf4565b11155b905092915050565b600047905061210582611db3565b80476121119190612bdd565b90506000811115612126576121258161212a565b5b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc6003836121719190612d57565b9081150290604051600060405180830381858888f1935050505015801561219c573d6000803e3d6000fd5b507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff166108fc6003836121d89190612d57565b9081150290604051600060405180830381858888f19350505050158015612203573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612241578082015181840152602081019050612226565b60008484015250505050565b6000601f19601f8301169050919050565b600061226982612207565b6122738185612212565b9350612283818560208601612223565b61228c8161224d565b840191505092915050565b600060208201905081810360008301526122b1818461225e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f8826122cd565b9050919050565b612308816122ed565b811461231357600080fd5b50565b600081359050612325816122ff565b92915050565b6000819050919050565b61233e8161232b565b811461234957600080fd5b50565b60008135905061235b81612335565b92915050565b60008060408385031215612378576123776122c3565b5b600061238685828601612316565b92505060206123978582860161234c565b9150509250929050565b60008115159050919050565b6123b6816123a1565b82525050565b60006020820190506123d160008301846123ad565b92915050565b6123e08161232b565b82525050565b60006020820190506123fb60008301846123d7565b92915050565b600060208284031215612417576124166122c3565b5b600061242584828501612316565b91505092915050565b600080600060608486031215612447576124466122c3565b5b600061245586828701612316565b935050602061246686828701612316565b92505060406124778682870161234c565b9150509250925092565b600060ff82169050919050565b61249781612481565b82525050565b60006020820190506124b2600083018461248e565b92915050565b6124c1816122ed565b82525050565b60006020820190506124dc60008301846124b8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61251f8261224d565b810181811067ffffffffffffffff8211171561253e5761253d6124e7565b5b80604052505050565b60006125516122b9565b905061255d8282612516565b919050565b600067ffffffffffffffff82111561257d5761257c6124e7565b5b602082029050602081019050919050565b600080fd5b60006125a66125a184612562565b612547565b905080838252602082019050602084028301858111156125c9576125c861258e565b5b835b818110156125f257806125de8882612316565b8452602084019350506020810190506125cb565b5050509392505050565b600082601f830112612611576126106124e2565b5b8135612621848260208601612593565b91505092915050565b612633816123a1565b811461263e57600080fd5b50565b6000813590506126508161262a565b92915050565b6000806040838503121561266d5761266c6122c3565b5b600083013567ffffffffffffffff81111561268b5761268a6122c8565b5b612697858286016125fc565b92505060206126a885828601612641565b9150509250929050565b600080604083850312156126c9576126c86122c3565b5b600083013567ffffffffffffffff8111156126e7576126e66122c8565b5b6126f3858286016125fc565b92505060206127048582860161234c565b9150509250929050565b600060208284031215612724576127236122c3565b5b60006127328482850161234c565b91505092915050565b600067ffffffffffffffff821115612756576127556124e7565b5b602082029050602081019050919050565b600061277a6127758461273b565b612547565b9050808382526020820190506020840283018581111561279d5761279c61258e565b5b835b818110156127c657806127b2888261234c565b84526020840193505060208101905061279f565b5050509392505050565b600082601f8301126127e5576127e46124e2565b5b81356127f5848260208601612767565b91505092915050565b600060208284031215612814576128136122c3565b5b600082013567ffffffffffffffff811115612832576128316122c8565b5b61283e848285016127d0565b91505092915050565b60006020828403121561285d5761285c6122c3565b5b600061286b84828501612641565b91505092915050565b6000806040838503121561288b5761288a6122c3565b5b600061289985828601612316565b92505060206128aa85828601612316565b9150509250929050565b600080fd5b60008083601f8401126128cf576128ce6124e2565b5b8235905067ffffffffffffffff8111156128ec576128eb6128b4565b5b6020830191508360208202830111156129085761290761258e565b5b9250929050565b60008060208385031215612926576129256122c3565b5b600083013567ffffffffffffffff811115612944576129436122c8565b5b612950858286016128b9565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129e2578086048111156129be576129bd61295c565b5b60018516156129cd5780820291505b80810290506129db8561298b565b94506129a2565b94509492505050565b6000826129fb5760019050612ab7565b81612a095760009050612ab7565b8160018114612a1f5760028114612a2957612a58565b6001915050612ab7565b60ff841115612a3b57612a3a61295c565b5b8360020a915084821115612a5257612a5161295c565b5b50612ab7565b5060208310610133831016604e8410600b8410161715612a8d5782820a905083811115612a8857612a8761295c565b5b612ab7565b612a9a8484846001612998565b92509050818404811115612ab157612ab061295c565b5b81810290505b9392505050565b6000612ac98261232b565b9150612ad483612481565b9250612b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129eb565b905092915050565b6000612b148261232b565b9150612b1f8361232b565b9250828202612b2d8161232b565b91508282048414831517612b4457612b4361295c565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ba7602883612212565b9150612bb282612b4b565b604082019050919050565b60006020820190508181036000830152612bd681612b9a565b9050919050565b6000612be88261232b565b9150612bf38361232b565b9250828203905081811115612c0b57612c0a61295c565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c47602083612212565b9150612c5282612c11565b602082019050919050565b60006020820190508181036000830152612c7681612c3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612cb78261232b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ce957612ce861295c565b5b600182019050919050565b6000612cff8261232b565b9150612d0a8361232b565b9250828201905080821115612d2257612d2161295c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d628261232b565b9150612d6d8361232b565b925082612d7d57612d7c612d28565b5b828204905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612dbe601783612212565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e7f602483612212565b9150612e8a82612e23565b604082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f11602283612212565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fa3602583612212565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613035602383612212565b915061304082612fd9565b604082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130c7602983612212565b91506130d28261306b565b604082019050919050565b600060208201905081810360008301526130f6816130ba565b9050919050565b7f5472616e7366657220616d6f756e74206d757374206265206c6573732074686160008201527f6e207468616e206d6178207472616e73616374696f6e20616d6f756e74206c6960208201527f6d69740000000000000000000000000000000000000000000000000000000000604082015250565b600061317f604383612212565b915061318a826130fd565b606082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f5472616e7366657220696d706c6965732076696f6c6174696f6e206f66206d6160008201527f7820746f6b656e20686f6c64696e6773206c696d697400000000000000000000602082015250565b6000613211603683612212565b915061321c826131b5565b604082019050919050565b6000602082019050818103600083015261324081613204565b9050919050565b6000819050919050565b6000819050919050565b600061327661327161326c84613247565b613251565b61232b565b9050919050565b6132868161325b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132c1816122ed565b82525050565b60006132d383836132b8565b60208301905092915050565b6000602082019050919050565b60006132f78261328c565b6133018185613297565b935061330c836132a8565b8060005b8381101561333d57815161332488826132c7565b975061332f836132df565b925050600181019050613310565b5085935050505092915050565b600060a08201905061335f60008301886123d7565b61336c602083018761327d565b818103604083015261337e81866132ec565b905061338d60608301856124b8565b61339a60808301846123d7565b969550505050505056fea2646970667358221220115ab32f49c0020fefda3acc45b3e45977660cc02049ed1b2e1e4fbf43e4d98364736f6c63430008110033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c806395d89b41116100b6578063c1cc37ef1161006f578063c1cc37ef14610479578063c9567bf9146104a2578063d53a822f146104b9578063dd62ed3e146104e2578063e6df6d451461051f578063f8b45b051461054857610156565b806395d89b411461036b5780639c0db5f314610396578063a43ef568146103bf578063a9059cbb146103ea578063b66151be14610427578063b70143c91461045057610156565b806370a082311161010857806370a082311461027f578063715018a6146102bc5780637437681e146102d3578063751039fc146102fe578063796ed46f146103155780638da5cb5b1461034057610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631a695230146101ee57806323b872dd14610217578063313ce5671461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610573565b60405161017d9190612297565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612361565b6105b0565b6040516101ba91906123bc565b60405180910390f35b3480156101cf57600080fd5b506101d86105c7565b6040516101e591906123e6565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612401565b6105ea565b005b34801561022357600080fd5b5061023e6004803603810190610239919061242e565b61076a565b60405161024b91906123bc565b60405180910390f35b34801561026057600080fd5b506102696108d3565b604051610276919061249d565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612401565b6108dc565b6040516102b391906123e6565b60405180910390f35b3480156102c857600080fd5b506102d1610925565b005b3480156102df57600080fd5b506102e8610a71565b6040516102f591906123e6565b60405180910390f35b34801561030a57600080fd5b50610313610a77565b005b34801561032157600080fd5b5061032a610b4b565b60405161033791906123e6565b60405180910390f35b34801561034c57600080fd5b50610355610b69565b60405161036291906124c7565b60405180910390f35b34801561037757600080fd5b50610380610b92565b60405161038d9190612297565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612656565b610bcf565b005b3480156103cb57600080fd5b506103d4610e1d565b6040516103e191906123e6565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c9190612361565b610e3b565b60405161041e91906123bc565b60405180910390f35b34801561043357600080fd5b5061044e600480360381019061044991906126b2565b610e52565b005b34801561045c57600080fd5b506104776004803603810190610472919061270e565b610f3d565b005b34801561048557600080fd5b506104a0600480360381019061049b91906127fe565b610fc6565b005b3480156104ae57600080fd5b506104b76110b3565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612847565b6111d5565b005b3480156104ee57600080fd5b5061050960048036038101906105049190612874565b611292565b60405161051691906123e6565b60405180910390f35b34801561052b57600080fd5b506105466004803603810190610541919061290f565b611319565b005b34801561055457600080fd5b5061055d6113ef565b60405161056a91906123e6565b60405180910390f35b60606040518060400160405280600581526020017f5348554d4f000000000000000000000000000000000000000000000000000000815250905090565b60006105bd3384846113f5565b6001905092915050565b60006008600a6105d79190612abe565b620186a06105e59190612b09565b905090565b7f0000000000000000000000004e5d809548b4826f03682a87e31d29a662ac5e8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061068357507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806106cd575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806107175750735f540ec447e95f1f0f80eb1f4dce0dcf6a1b1b9f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61072057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610766573d6000803e3d6000fd5b5050565b60006107778484846115be565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90612bbd565b60405180910390fd5b6108c8843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c39190612bdd565b6113f5565b600190509392505050565b60006008905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612c5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c5d565b60405180910390fd5b6008600a610b139190612abe565b620186a0610b219190612b09565b6005819055506008600a610b359190612abe565b620186a0610b439190612b09565b600481905550565b6008600a610b599190612abe565b6105dc610b669190612b09565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5348554d4f000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612c5d565b60405180910390fd5b60005b8251811015610e18577f0000000000000000000000005b8c465c33c64d5682ef35c32f07c03d5bd13b2073ffffffffffffffffffffffffffffffffffffffff16838281518110610cb357610cb2612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610d395750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16838281518110610d1857610d17612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b8015610d8b57503073ffffffffffffffffffffffffffffffffffffffff16838281518110610d6a57610d69612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b610d9457600080fd5b8160036000858481518110610dac57610dab612c7d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e1090612cac565b915050610c60565b505050565b6008600a610e2b9190612abe565b61012c610e389190612b09565b81565b6000610e483384846115be565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790612c5d565b60405180910390fd5b600082511480610ef257506001600954145b15610efc57600080fd5b60006009541115610f395760096000815480929190610f1a90612cac565b91905055508060086000828254610f319190612cf4565b925050819055505b5050565b60006064610f4a306108dc565b83610f559190612b09565b610f5f9190612d57565b90507f0000000000000000000000004e5d809548b4826f03682a87e31d29a662ac5e8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb957600080fd5b610fc281611db3565b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612c5d565b60405180910390fd5b80600282516110639190612bdd565b8151811061107457611073612c7d565b5b602002602001015160068190555080600382516110919190612bdd565b815181106110a2576110a1612c7d565b5b602002602001015160078190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113890612c5d565b60405180910390fd5b60036009541480156111605750600a60009054906101000a900460ff16155b61119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612dd4565b60405180910390fd5b43600860008282546111b19190612cf4565b925050819055506001600a60006101000a81548160ff021916908315150217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a90612c5d565b60405180910390fd5b808015611286575060026009600081548092919061128090612cac565b91905055105b61128f57600080fd5b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90612c5d565b60405180910390fd5b6002600954106113ba576113b9612df4565b5b6001828290501080156113e2575060026009600081546113d990612cac565b91905081905510155b6113eb57600080fd5b5050565b60045481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612e95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90612f27565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b191906123e6565b60405180910390a3505050565b82600a60009054906101000a900460ff168061162557507f0000000000000000000000004e5d809548b4826f03682a87e31d29a662ac5e8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b8061166f575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806116b957507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6116c257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172890612fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117979061304b565b60405180910390fd5b600082116117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906130dd565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118329190612bdd565b9250508190555060007f0000000000000000000000004e5d809548b4826f03682a87e31d29a662ac5e8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118d7575073e4e2b9a484f5efc698dd06dd72be5256a1127dab73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561192357507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561196f57507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156119a757503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611cf157600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0657506008544311155b15611a2b576064603184611a1a9190612b09565b611a249190612d57565b9050611ac2565b6064600060085414611aa7577f0000000000000000000000005b8c465c33c64d5682ef35c32f07c03d5bd13b2073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611a9257600754611a95565b60005b600654611aa29190612cf4565b611aaa565b60145b84611ab59190612b09565b611abf9190612d57565b90505b7f0000000000000000000000005b8c465c33c64d5682ef35c32f07c03d5bd13b2073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611b5d5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c0057600554831115611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e90613195565b60405180910390fd5b60045483611bb4866108dc565b611bbe9190612cf4565b1115611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf690613227565b60405180910390fd5b5b6000611c0b306108dc565b9050611c178682612045565b15611c2657611c25816120f7565b5b8184611c329190612bdd565b935081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c839190612cf4565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ce791906123e6565b60405180910390a3505b82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d409190612cf4565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611da491906123e6565b60405180910390a35050505050565b6001600a60016101000a81548160ff0219169083151502179055506008600a611ddc9190612abe565b6105dc611de99190612b09565b8111611e0f576008600a611dfd9190612abe565b61012c611e0a9190612b09565b611e2b565b6008600a611e1d9190612abe565b6105dc611e2a9190612b09565b5b90506000600267ffffffffffffffff811115611e4a57611e496124e7565b5b604051908082528060200260200182016040528015611e785781602001602082028036833780820191505090505b5090503081600081518110611e9057611e8f612c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611eff57611efe612c7d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081611f5830737a250d5630b4cf539739df2c5dacb4c659f2488d611292565b1015611f9e57611f9d30737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113f5565b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ff495949392919061334a565b600060405180830381600087803b15801561200e57600080fd5b505af1158015612022573d6000803e3d6000fd5b50505050506000600a60016101000a81548160ff02191690831515021790555050565b6000600a60019054906101000a900460ff161580156120b057507f0000000000000000000000005b8c465c33c64d5682ef35c32f07c03d5bd13b2073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120d557506008600a6120c59190612abe565b61012c6120d29190612b09565b82115b80156120ef57504360085460026120ec9190612cf4565b11155b905092915050565b600047905061210582611db3565b80476121119190612bdd565b90506000811115612126576121258161212a565b5b5050565b7f0000000000000000000000004e5d809548b4826f03682a87e31d29a662ac5e8273ffffffffffffffffffffffffffffffffffffffff166108fc6003836121719190612d57565b9081150290604051600060405180830381858888f1935050505015801561219c573d6000803e3d6000fd5b507315f03be29c23091ebcc6fec47a4c3f8dc99851aa73ffffffffffffffffffffffffffffffffffffffff166108fc6003836121d89190612d57565b9081150290604051600060405180830381858888f19350505050158015612203573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612241578082015181840152602081019050612226565b60008484015250505050565b6000601f19601f8301169050919050565b600061226982612207565b6122738185612212565b9350612283818560208601612223565b61228c8161224d565b840191505092915050565b600060208201905081810360008301526122b1818461225e565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f8826122cd565b9050919050565b612308816122ed565b811461231357600080fd5b50565b600081359050612325816122ff565b92915050565b6000819050919050565b61233e8161232b565b811461234957600080fd5b50565b60008135905061235b81612335565b92915050565b60008060408385031215612378576123776122c3565b5b600061238685828601612316565b92505060206123978582860161234c565b9150509250929050565b60008115159050919050565b6123b6816123a1565b82525050565b60006020820190506123d160008301846123ad565b92915050565b6123e08161232b565b82525050565b60006020820190506123fb60008301846123d7565b92915050565b600060208284031215612417576124166122c3565b5b600061242584828501612316565b91505092915050565b600080600060608486031215612447576124466122c3565b5b600061245586828701612316565b935050602061246686828701612316565b92505060406124778682870161234c565b9150509250925092565b600060ff82169050919050565b61249781612481565b82525050565b60006020820190506124b2600083018461248e565b92915050565b6124c1816122ed565b82525050565b60006020820190506124dc60008301846124b8565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61251f8261224d565b810181811067ffffffffffffffff8211171561253e5761253d6124e7565b5b80604052505050565b60006125516122b9565b905061255d8282612516565b919050565b600067ffffffffffffffff82111561257d5761257c6124e7565b5b602082029050602081019050919050565b600080fd5b60006125a66125a184612562565b612547565b905080838252602082019050602084028301858111156125c9576125c861258e565b5b835b818110156125f257806125de8882612316565b8452602084019350506020810190506125cb565b5050509392505050565b600082601f830112612611576126106124e2565b5b8135612621848260208601612593565b91505092915050565b612633816123a1565b811461263e57600080fd5b50565b6000813590506126508161262a565b92915050565b6000806040838503121561266d5761266c6122c3565b5b600083013567ffffffffffffffff81111561268b5761268a6122c8565b5b612697858286016125fc565b92505060206126a885828601612641565b9150509250929050565b600080604083850312156126c9576126c86122c3565b5b600083013567ffffffffffffffff8111156126e7576126e66122c8565b5b6126f3858286016125fc565b92505060206127048582860161234c565b9150509250929050565b600060208284031215612724576127236122c3565b5b60006127328482850161234c565b91505092915050565b600067ffffffffffffffff821115612756576127556124e7565b5b602082029050602081019050919050565b600061277a6127758461273b565b612547565b9050808382526020820190506020840283018581111561279d5761279c61258e565b5b835b818110156127c657806127b2888261234c565b84526020840193505060208101905061279f565b5050509392505050565b600082601f8301126127e5576127e46124e2565b5b81356127f5848260208601612767565b91505092915050565b600060208284031215612814576128136122c3565b5b600082013567ffffffffffffffff811115612832576128316122c8565b5b61283e848285016127d0565b91505092915050565b60006020828403121561285d5761285c6122c3565b5b600061286b84828501612641565b91505092915050565b6000806040838503121561288b5761288a6122c3565b5b600061289985828601612316565b92505060206128aa85828601612316565b9150509250929050565b600080fd5b60008083601f8401126128cf576128ce6124e2565b5b8235905067ffffffffffffffff8111156128ec576128eb6128b4565b5b6020830191508360208202830111156129085761290761258e565b5b9250929050565b60008060208385031215612926576129256122c3565b5b600083013567ffffffffffffffff811115612944576129436122c8565b5b612950858286016128b9565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129e2578086048111156129be576129bd61295c565b5b60018516156129cd5780820291505b80810290506129db8561298b565b94506129a2565b94509492505050565b6000826129fb5760019050612ab7565b81612a095760009050612ab7565b8160018114612a1f5760028114612a2957612a58565b6001915050612ab7565b60ff841115612a3b57612a3a61295c565b5b8360020a915084821115612a5257612a5161295c565b5b50612ab7565b5060208310610133831016604e8410600b8410161715612a8d5782820a905083811115612a8857612a8761295c565b5b612ab7565b612a9a8484846001612998565b92509050818404811115612ab157612ab061295c565b5b81810290505b9392505050565b6000612ac98261232b565b9150612ad483612481565b9250612b017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129eb565b905092915050565b6000612b148261232b565b9150612b1f8361232b565b9250828202612b2d8161232b565b91508282048414831517612b4457612b4361295c565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612ba7602883612212565b9150612bb282612b4b565b604082019050919050565b60006020820190508181036000830152612bd681612b9a565b9050919050565b6000612be88261232b565b9150612bf38361232b565b9250828203905081811115612c0b57612c0a61295c565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c47602083612212565b9150612c5282612c11565b602082019050919050565b60006020820190508181036000830152612c7681612c3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612cb78261232b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ce957612ce861295c565b5b600182019050919050565b6000612cff8261232b565b9150612d0a8361232b565b9250828201905080821115612d2257612d2161295c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d628261232b565b9150612d6d8361232b565b925082612d7d57612d7c612d28565b5b828204905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612dbe601783612212565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e7f602483612212565b9150612e8a82612e23565b604082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f11602283612212565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fa3602583612212565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613035602383612212565b915061304082612fd9565b604082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130c7602983612212565b91506130d28261306b565b604082019050919050565b600060208201905081810360008301526130f6816130ba565b9050919050565b7f5472616e7366657220616d6f756e74206d757374206265206c6573732074686160008201527f6e207468616e206d6178207472616e73616374696f6e20616d6f756e74206c6960208201527f6d69740000000000000000000000000000000000000000000000000000000000604082015250565b600061317f604383612212565b915061318a826130fd565b606082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f5472616e7366657220696d706c6965732076696f6c6174696f6e206f66206d6160008201527f7820746f6b656e20686f6c64696e6773206c696d697400000000000000000000602082015250565b6000613211603683612212565b915061321c826131b5565b604082019050919050565b6000602082019050818103600083015261324081613204565b9050919050565b6000819050919050565b6000819050919050565b600061327661327161326c84613247565b613251565b61232b565b9050919050565b6132868161325b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132c1816122ed565b82525050565b60006132d383836132b8565b60208301905092915050565b6000602082019050919050565b60006132f78261328c565b6133018185613297565b935061330c836132a8565b8060005b8381101561333d57815161332488826132c7565b975061332f836132df565b925050600181019050613310565b5085935050505092915050565b600060a08201905061335f60008301886123d7565b61336c602083018761327d565b818103604083015261337e81866132ec565b905061338d60608301856124b8565b61339a60808301846123d7565b969550505050505056fea2646970667358221220115ab32f49c0020fefda3acc45b3e45977660cc02049ed1b2e1e4fbf43e4d98364736f6c63430008110033
Deployed Bytecode Sourcemap
2203:8584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4158:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4955:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4432:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8140:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5113:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4342:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4531:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2048:148;;;;;;;;;;;;;:::i;:::-;;2679:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9968:117;;;;;;;;;;;;;:::i;:::-;;2913:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1961:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4248:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9642:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2851:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4649:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10270:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9079:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9475:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10093:169;;;;;;;;;;;;;:::i;:::-;;10540:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4813:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10646:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2625:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4158:82;4195:13;4228:4;;;;;;;;;;;;;;;;;4221:11;;4158:82;:::o;4955:150::-;5021:4;5038:37;5047:10;5059:7;5068:6;5038:8;:37::i;:::-;5093:4;5086:11;;4955:150;;;;:::o;4432:91::-;4476:7;2546:1;2604:2;:12;;;;:::i;:::-;2594:7;:22;;;;:::i;:::-;4496:19;;4432:91;:::o;8140:302::-;8216:15;8202:29;;:10;:29;;;:65;;;;3528:42;8235:32;;:10;:32;;;8202:65;:113;;;;3339:42;8285:30;;:10;:30;;;8202:113;:173;;;;8333:42;8319:56;;:10;:56;;;8202:173;8194:182;;;;;;8395:6;8387:24;;:47;8412:21;8387:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8140:302;:::o;5113:358::-;5202:4;5219:36;5229:6;5237:9;5248:6;5219:9;:36::i;:::-;5309:6;5274:11;:19;5286:6;5274:19;;;;;;;;;;;;;;;:31;5294:10;5274:31;;;;;;;;;;;;;;;;:41;;5266:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;5371:70;5380:6;5388:10;5434:6;5400:11;:19;5412:6;5400:19;;;;;;;;;;;;;;;:31;5420:10;5400:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5371:8;:70::i;:::-;5459:4;5452:11;;5113:358;;;;;:::o;4342:82::-;4383:5;2546:1;4401:15;;4342:82;:::o;4531:110::-;4588:7;4615:9;:18;4625:7;4615:18;;;;;;;;;;;;;;;;4608:25;;4531:110;;;:::o;2048:148::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2155:1:::1;2118:40;;2139:6;::::0;::::1;;;;;;;;2118:40;;;;;;;;;;;;2186:1;2169:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2048:148::o:0;2679:43::-;;;;:::o;9968:117::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2546:1:::1;2604:2;:12;;;;:::i;:::-;2594:7;:22;;;;:::i;:::-;10022:5;:20;;;;2546:1;2604:2;:12;;;;:::i;:::-;2594:7;:22;;;;:::i;:::-;10053:9;:24;;;;9968:117::o:0;2913:55::-;2546:1;2956:2;:12;;;;:::i;:::-;2948:5;:20;;;;:::i;:::-;2913:55;:::o;1961:79::-;1999:7;2026:6;;;;;;;;;;;2019:13;;1961:79;:::o;4248:86::-;4287:13;4320:6;;;;;;;;;;;;;;;;;4313:13;;4248:86;:::o;9642:318::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9730:6:::1;9725:228;9746:5;:12;9742:1;:16;9725:228;;;9800:12;9788:24;;:5;9794:1;9788:8;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;3145:42;9816:35;;:5;9822:1;9816:8;;;;;;;;:::i;:::-;;;;;;;;:35;;;;9788:63;:113;;;;;9896:4;9876:25;;:5;9882:1;9876:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;9788:113;9780:122;;;::::0;::::1;;9934:7;9917:4;:14;9922:5;9928:1;9922:8;;;;;;;;:::i;:::-;;;;;;;;9917:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;9760:3;;;;;:::i;:::-;;;;9725:228;;;;9642:318:::0;;:::o;2851:55::-;2546:1;2894:2;:12;;;;:::i;:::-;2888:3;:18;;;;:::i;:::-;2851:55;:::o;4649:156::-;4718:4;4735:40;4745:10;4757:9;4768:6;4735:9;:40::i;:::-;4793:4;4786:11;;4649:156;;;;:::o;10270:262::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10373:1:::1;10358:4;:11;:16;:33;;;;10390:1;10378:8;;:13;10358:33;10355:155;;;10406:8;::::0;::::1;10355:155;10444:1;10433:8;;:12;10430:80;;;10461:8;;:10;;;;;;;;;:::i;:::-;;;;;;10492:6;10486:2;;:12;;;;;;;:::i;:::-;;;;;;;;10430:80;10270:262:::0;;:::o;9079:234::-;9144:20;9212:3;9185:24;9203:4;9185:9;:24::i;:::-;9167:15;:42;;;;:::i;:::-;:48;;;;:::i;:::-;9144:71;;9248:15;9234:29;;:10;:29;;;9226:38;;;;;;9275:30;9292:12;9275:16;:30::i;:::-;9133:180;9079:234;:::o;9475:159::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9555:5:::1;9574:1;9561:5;:12;:14;;;;:::i;:::-;9555:21;;;;;;;;:::i;:::-;;;;;;;;9549:3;:27;;;;9605:5;9624:1;9611:5;:12;:14;;;;:::i;:::-;9605:21;;;;;;;;:::i;:::-;;;;;;;;9587:15;:39;;;;9475:159:::0;:::o;10093:169::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10166:1:::1;10154:8;;:13;:22;;;;;10172:4;;;;;;;;;;;10171:5;10154:22;10146:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10220:12;10214:2;;:18;;;;;;;:::i;:::-;;;;;;;;10250:4;10243;;:11;;;;;;;;;;;;;;;;;;10093:169::o:0;10540:98::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10609:4:::1;:20;;;;;10628:1;10617:8;;:10;;;;;;;;;:::i;:::-;;;;;:12;10609:20;10601:29;;;::::0;::::1;;10540:98:::0;:::o;4813:134::-;4885:7;4912:11;:18;4924:5;4912:18;;;;;;;;;;;;;;;:27;4931:7;4912:27;;;;;;;;;;;;;;;;4905:34;;4813:134;;;;:::o;10646:136::-;1728:10;1718:20;;:6;;;;;;;;;;:20;;;1710:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10732:1:::1;10721:8;;:12;10714:20;;;;:::i;:::-;;10754:1;10744:2;;:9;;:11;:28;;;;;10771:1;10761:8;;10759:10;;;;;:::i;:::-;;;;;;;:13;;10744:28;10736:37;;;::::0;::::1;;10646:136:::0;;:::o;2625:47::-;;;;:::o;5479:335::-;5589:1;5572:19;;:5;:19;;;5564:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5670:1;5651:21;;:7;:21;;;5643:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5752:6;5722:11;:18;5734:5;5722:18;;;;;;;;;;;;;;;:27;5741:7;5722:27;;;;;;;;;;;;;;;:36;;;;5790:7;5774:32;;5783:5;5774:32;;;5799:6;5774:32;;;;;;:::i;:::-;;;;;;;;5479:335;;;:::o;6016:1559::-;6089:4;5878;;;;;;;;;;;:33;;;;5896:15;5886:25;;:6;:25;;;5878:33;:63;;;;3339:42;5915:26;;:6;:26;;;5878:63;:109;;;;3528:42;5959:28;;:6;:28;;;5878:109;5870:118;;;;;;6138:1:::1;6122:18;;:4;:18;;::::0;6114:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6215:1;6201:16;;:2;:16;;::::0;6193:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6285:1;6276:6;:10;6268:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6364:6;6345:9;:15;6355:4;6345:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6381:17;6425:15;6419:21;;:2;:21;;;;:49;;;;;3339:42;6444:24;;:4;:24;;;;6419:49;:91;;;;;3528:42;6484:26;;:4;:26;;;;6419:91;:119;;;;;3528:42;6514:24;;:2;:24;;;;6419:119;:144;;;;;6558:4;6542:21;;:4;:21;;;;6419:144;6415:1075;;;6585:4;:10;6590:4;6585:10;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;6615:2;;6599:12;:18;;6585:32;6582:218;;;6668:3;2842:2;6648:6;:17;;;;:::i;:::-;:23;;;;:::i;:::-;6636:35;;6582:218;;;6797:3;6736:1;6730:2;;:7;:63;;6758:12;6752:18;;:2;:18;;::::0;:40:::1;;6777:15;;6752:40;;;6773:1;6752:40;6745:3;;:48;;;;:::i;:::-;6730:63;;;6740:2;6730:63;6720:6;:74;;;;:::i;:::-;:80;;;;:::i;:::-;6708:92;;6582:218;6829:12;6821:20;;:4;:20;;;:53;;;;;3145:42;6845:29;;:2;:29;;;;6821:53;6817:310;;;6913:5;;6903:6;:15;;6895:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;7043:9;;7033:6;7017:13;7027:2;7017:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;7009:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;6817:310;7155:22;7180:24;7198:4;7180:9;:24::i;:::-;7155:49;;7223:32;7234:4;7240:14;7223:10;:32::i;:::-;7219:83;;;7275:27;7287:14;7275:11;:27::i;:::-;7219:83;7357:9;7347:19;;;;;:::i;:::-;;;7409:9;7381;:24;7399:4;7381:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7461:4;7438:40;;7447:4;7438:40;;;7468:9;7438:40;;;;;;:::i;:::-;;;;;;;;6565:925;6415:1075;7519:6;7502:9;:13;7512:2;7502:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;7556:2;7541:26;;7550:4;7541:26;;;7560:6;7541:26;;;;;;:::i;:::-;;;;;;;;6103:1472;6016:1559:::0;;;;:::o;8450:621::-;3685:4;3674:8;;:15;;;;;;;;;;;;;;;;;;2546:1:::1;2956:2;:12;;;;:::i;:::-;2948:5;:20;;;;:::i;:::-;8542:11;:22;:46;;2546:1;2894:2;:12;;;;:::i;:::-;2888:3;:18;;;;:::i;:::-;8542:46;;;2546:1;2956:2;:12;;;;:::i;:::-;2948:5;:20;;;;:::i;:::-;8542:46;8528:60;;8599:21;8637:1;8623:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8599:40;;8668:4;8650;8655:1;8650:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8694:4;8684;8689:1;8684:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;8764:11;8712:49;8730:4;3145:42;8712:9;:49::i;:::-;:63;8709:148;;;8790:67;8807:4;3145:42;8839:17;8790:8;:67::i;:::-;8709:148;3145:42;8868:65;;;8948:11;8974:1;8990:4;9017;9037:15;8868:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8517:554;3723:5:::0;3712:8;;:16;;;;;;;;;;;;;;;;;;8450:621;:::o;7583:213::-;7660:4;7685:8;;;;;;;;;;;7684:9;:33;;;;;7705:12;7697:20;;:4;:20;;;;7684:33;:75;;;;;2546:1;2894:2;:12;;;;:::i;:::-;2888:3;:18;;;;:::i;:::-;7735:11;:24;7684:75;:104;;;;;7776:12;7770:2;;3062:1;7763:9;;;;:::i;:::-;:25;;7684:104;7677:111;;7583:213;;;;:::o;7804:324::-;7865:26;7894:21;7865:50;;7926:29;7943:11;7926:16;:29::i;:::-;8011:18;7987:21;:42;;;;:::i;:::-;7966:63;;8064:1;8043:18;:22;8040:81;;;8082:27;8090:18;8082:7;:27::i;:::-;8040:81;7854:274;7804:324;:::o;9321:146::-;9373:15;:24;;:36;9407:1;9398:6;:10;;;;:::i;:::-;9373:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3528:42;9420:27;;:39;9457:1;9448:6;:10;;;;:::i;:::-;9420:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9321:146;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:117::-;5649:1;5646;5639:12;5663:180;5711:77;5708:1;5701:88;5808:4;5805:1;5798:15;5832:4;5829:1;5822:15;5849:281;5932:27;5954:4;5932:27;:::i;:::-;5924:6;5920:40;6062:6;6050:10;6047:22;6026:18;6014:10;6011:34;6008:62;6005:88;;;6073:18;;:::i;:::-;6005:88;6113:10;6109:2;6102:22;5892:238;5849:281;;:::o;6136:129::-;6170:6;6197:20;;:::i;:::-;6187:30;;6226:33;6254:4;6246:6;6226:33;:::i;:::-;6136:129;;;:::o;6271:311::-;6348:4;6438:18;6430:6;6427:30;6424:56;;;6460:18;;:::i;:::-;6424:56;6510:4;6502:6;6498:17;6490:25;;6570:4;6564;6560:15;6552:23;;6271:311;;;:::o;6588:117::-;6697:1;6694;6687:12;6728:710;6824:5;6849:81;6865:64;6922:6;6865:64;:::i;:::-;6849:81;:::i;:::-;6840:90;;6950:5;6979:6;6972:5;6965:21;7013:4;7006:5;7002:16;6995:23;;7066:4;7058:6;7054:17;7046:6;7042:30;7095:3;7087:6;7084:15;7081:122;;;7114:79;;:::i;:::-;7081:122;7229:6;7212:220;7246:6;7241:3;7238:15;7212:220;;;7321:3;7350:37;7383:3;7371:10;7350:37;:::i;:::-;7345:3;7338:50;7417:4;7412:3;7408:14;7401:21;;7288:144;7272:4;7267:3;7263:14;7256:21;;7212:220;;;7216:21;6830:608;;6728:710;;;;;:::o;7461:370::-;7532:5;7581:3;7574:4;7566:6;7562:17;7558:27;7548:122;;7589:79;;:::i;:::-;7548:122;7706:6;7693:20;7731:94;7821:3;7813:6;7806:4;7798:6;7794:17;7731:94;:::i;:::-;7722:103;;7538:293;7461:370;;;;:::o;7837:116::-;7907:21;7922:5;7907:21;:::i;:::-;7900:5;7897:32;7887:60;;7943:1;7940;7933:12;7887:60;7837:116;:::o;7959:133::-;8002:5;8040:6;8027:20;8018:29;;8056:30;8080:5;8056:30;:::i;:::-;7959:133;;;;:::o;8098:678::-;8188:6;8196;8245:2;8233:9;8224:7;8220:23;8216:32;8213:119;;;8251:79;;:::i;:::-;8213:119;8399:1;8388:9;8384:17;8371:31;8429:18;8421:6;8418:30;8415:117;;;8451:79;;:::i;:::-;8415:117;8556:78;8626:7;8617:6;8606:9;8602:22;8556:78;:::i;:::-;8546:88;;8342:302;8683:2;8709:50;8751:7;8742:6;8731:9;8727:22;8709:50;:::i;:::-;8699:60;;8654:115;8098:678;;;;;:::o;8782:684::-;8875:6;8883;8932:2;8920:9;8911:7;8907:23;8903:32;8900:119;;;8938:79;;:::i;:::-;8900:119;9086:1;9075:9;9071:17;9058:31;9116:18;9108:6;9105:30;9102:117;;;9138:79;;:::i;:::-;9102:117;9243:78;9313:7;9304:6;9293:9;9289:22;9243:78;:::i;:::-;9233:88;;9029:302;9370:2;9396:53;9441:7;9432:6;9421:9;9417:22;9396:53;:::i;:::-;9386:63;;9341:118;8782:684;;;;;:::o;9472:329::-;9531:6;9580:2;9568:9;9559:7;9555:23;9551:32;9548:119;;;9586:79;;:::i;:::-;9548:119;9706:1;9731:53;9776:7;9767:6;9756:9;9752:22;9731:53;:::i;:::-;9721:63;;9677:117;9472:329;;;;:::o;9807:311::-;9884:4;9974:18;9966:6;9963:30;9960:56;;;9996:18;;:::i;:::-;9960:56;10046:4;10038:6;10034:17;10026:25;;10106:4;10100;10096:15;10088:23;;9807:311;;;:::o;10141:710::-;10237:5;10262:81;10278:64;10335:6;10278:64;:::i;:::-;10262:81;:::i;:::-;10253:90;;10363:5;10392:6;10385:5;10378:21;10426:4;10419:5;10415:16;10408:23;;10479:4;10471:6;10467:17;10459:6;10455:30;10508:3;10500:6;10497:15;10494:122;;;10527:79;;:::i;:::-;10494:122;10642:6;10625:220;10659:6;10654:3;10651:15;10625:220;;;10734:3;10763:37;10796:3;10784:10;10763:37;:::i;:::-;10758:3;10751:50;10830:4;10825:3;10821:14;10814:21;;10701:144;10685:4;10680:3;10676:14;10669:21;;10625:220;;;10629:21;10243:608;;10141:710;;;;;:::o;10874:370::-;10945:5;10994:3;10987:4;10979:6;10975:17;10971:27;10961:122;;11002:79;;:::i;:::-;10961:122;11119:6;11106:20;11144:94;11234:3;11226:6;11219:4;11211:6;11207:17;11144:94;:::i;:::-;11135:103;;10951:293;10874:370;;;;:::o;11250:539::-;11334:6;11383:2;11371:9;11362:7;11358:23;11354:32;11351:119;;;11389:79;;:::i;:::-;11351:119;11537:1;11526:9;11522:17;11509:31;11567:18;11559:6;11556:30;11553:117;;;11589:79;;:::i;:::-;11553:117;11694:78;11764:7;11755:6;11744:9;11740:22;11694:78;:::i;:::-;11684:88;;11480:302;11250:539;;;;:::o;11795:323::-;11851:6;11900:2;11888:9;11879:7;11875:23;11871:32;11868:119;;;11906:79;;:::i;:::-;11868:119;12026:1;12051:50;12093:7;12084:6;12073:9;12069:22;12051:50;:::i;:::-;12041:60;;11997:114;11795:323;;;;:::o;12124:474::-;12192:6;12200;12249:2;12237:9;12228:7;12224:23;12220:32;12217:119;;;12255:79;;:::i;:::-;12217:119;12375:1;12400:53;12445:7;12436:6;12425:9;12421:22;12400:53;:::i;:::-;12390:63;;12346:117;12502:2;12528:53;12573:7;12564:6;12553:9;12549:22;12528:53;:::i;:::-;12518:63;;12473:118;12124:474;;;;;:::o;12604:117::-;12713:1;12710;12703:12;12741:565;12811:8;12821:6;12871:3;12864:4;12856:6;12852:17;12848:27;12838:122;;12879:79;;:::i;:::-;12838:122;12992:6;12979:20;12969:30;;13022:18;13014:6;13011:30;13008:117;;;13044:79;;:::i;:::-;13008:117;13158:4;13150:6;13146:17;13134:29;;13212:3;13204:4;13196:6;13192:17;13182:8;13178:32;13175:41;13172:128;;;13219:79;;:::i;:::-;13172:128;12741:565;;;;;:::o;13312:553::-;13395:6;13403;13452:2;13440:9;13431:7;13427:23;13423:32;13420:119;;;13458:79;;:::i;:::-;13420:119;13606:1;13595:9;13591:17;13578:31;13636:18;13628:6;13625:30;13622:117;;;13658:79;;:::i;:::-;13622:117;13771:77;13840:7;13831:6;13820:9;13816:22;13771:77;:::i;:::-;13753:95;;;;13549:309;13312:553;;;;;:::o;13871:180::-;13919:77;13916:1;13909:88;14016:4;14013:1;14006:15;14040:4;14037:1;14030:15;14057:102;14099:8;14146:5;14143:1;14139:13;14118:34;;14057:102;;;:::o;14165:848::-;14226:5;14233:4;14257:6;14248:15;;14281:5;14272:14;;14295:712;14316:1;14306:8;14303:15;14295:712;;;14411:4;14406:3;14402:14;14396:4;14393:24;14390:50;;;14420:18;;:::i;:::-;14390:50;14470:1;14460:8;14456:16;14453:451;;;14885:4;14878:5;14874:16;14865:25;;14453:451;14935:4;14929;14925:15;14917:23;;14965:32;14988:8;14965:32;:::i;:::-;14953:44;;14295:712;;;14165:848;;;;;;;:::o;15019:1073::-;15073:5;15264:8;15254:40;;15285:1;15276:10;;15287:5;;15254:40;15313:4;15303:36;;15330:1;15321:10;;15332:5;;15303:36;15399:4;15447:1;15442:27;;;;15483:1;15478:191;;;;15392:277;;15442:27;15460:1;15451:10;;15462:5;;;15478:191;15523:3;15513:8;15510:17;15507:43;;;15530:18;;:::i;:::-;15507:43;15579:8;15576:1;15572:16;15563:25;;15614:3;15607:5;15604:14;15601:40;;;15621:18;;:::i;:::-;15601:40;15654:5;;;15392:277;;15778:2;15768:8;15765:16;15759:3;15753:4;15750:13;15746:36;15728:2;15718:8;15715:16;15710:2;15704:4;15701:12;15697:35;15681:111;15678:246;;;15834:8;15828:4;15824:19;15815:28;;15869:3;15862:5;15859:14;15856:40;;;15876:18;;:::i;:::-;15856:40;15909:5;;15678:246;15949:42;15987:3;15977:8;15971:4;15968:1;15949:42;:::i;:::-;15934:57;;;;16023:4;16018:3;16014:14;16007:5;16004:25;16001:51;;;16032:18;;:::i;:::-;16001:51;16081:4;16074:5;16070:16;16061:25;;15019:1073;;;;;;:::o;16098:281::-;16156:5;16180:23;16198:4;16180:23;:::i;:::-;16172:31;;16224:25;16240:8;16224:25;:::i;:::-;16212:37;;16268:104;16305:66;16295:8;16289:4;16268:104;:::i;:::-;16259:113;;16098:281;;;;:::o;16385:410::-;16425:7;16448:20;16466:1;16448:20;:::i;:::-;16443:25;;16482:20;16500:1;16482:20;:::i;:::-;16477:25;;16537:1;16534;16530:9;16559:30;16577:11;16559:30;:::i;:::-;16548:41;;16738:1;16729:7;16725:15;16722:1;16719:22;16699:1;16692:9;16672:83;16649:139;;16768:18;;:::i;:::-;16649:139;16433:362;16385:410;;;;:::o;16801:227::-;16941:34;16937:1;16929:6;16925:14;16918:58;17010:10;17005:2;16997:6;16993:15;16986:35;16801:227;:::o;17034:366::-;17176:3;17197:67;17261:2;17256:3;17197:67;:::i;:::-;17190:74;;17273:93;17362:3;17273:93;:::i;:::-;17391:2;17386:3;17382:12;17375:19;;17034:366;;;:::o;17406:419::-;17572:4;17610:2;17599:9;17595:18;17587:26;;17659:9;17653:4;17649:20;17645:1;17634:9;17630:17;17623:47;17687:131;17813:4;17687:131;:::i;:::-;17679:139;;17406:419;;;:::o;17831:194::-;17871:4;17891:20;17909:1;17891:20;:::i;:::-;17886:25;;17925:20;17943:1;17925:20;:::i;:::-;17920:25;;17969:1;17966;17962:9;17954:17;;17993:1;17987:4;17984:11;17981:37;;;17998:18;;:::i;:::-;17981:37;17831:194;;;;:::o;18031:182::-;18171:34;18167:1;18159:6;18155:14;18148:58;18031:182;:::o;18219:366::-;18361:3;18382:67;18446:2;18441:3;18382:67;:::i;:::-;18375:74;;18458:93;18547:3;18458:93;:::i;:::-;18576:2;18571:3;18567:12;18560:19;;18219:366;;;:::o;18591:419::-;18757:4;18795:2;18784:9;18780:18;18772:26;;18844:9;18838:4;18834:20;18830:1;18819:9;18815:17;18808:47;18872:131;18998:4;18872:131;:::i;:::-;18864:139;;18591:419;;;:::o;19016:180::-;19064:77;19061:1;19054:88;19161:4;19158:1;19151:15;19185:4;19182:1;19175:15;19202:233;19241:3;19264:24;19282:5;19264:24;:::i;:::-;19255:33;;19310:66;19303:5;19300:77;19297:103;;19380:18;;:::i;:::-;19297:103;19427:1;19420:5;19416:13;19409:20;;19202:233;;;:::o;19441:191::-;19481:3;19500:20;19518:1;19500:20;:::i;:::-;19495:25;;19534:20;19552:1;19534:20;:::i;:::-;19529:25;;19577:1;19574;19570:9;19563:16;;19598:3;19595:1;19592:10;19589:36;;;19605:18;;:::i;:::-;19589:36;19441:191;;;;:::o;19638:180::-;19686:77;19683:1;19676:88;19783:4;19780:1;19773:15;19807:4;19804:1;19797:15;19824:185;19864:1;19881:20;19899:1;19881:20;:::i;:::-;19876:25;;19915:20;19933:1;19915:20;:::i;:::-;19910:25;;19954:1;19944:35;;19959:18;;:::i;:::-;19944:35;20001:1;19998;19994:9;19989:14;;19824:185;;;;:::o;20015:173::-;20155:25;20151:1;20143:6;20139:14;20132:49;20015:173;:::o;20194:366::-;20336:3;20357:67;20421:2;20416:3;20357:67;:::i;:::-;20350:74;;20433:93;20522:3;20433:93;:::i;:::-;20551:2;20546:3;20542:12;20535:19;;20194:366;;;:::o;20566:419::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:180::-;21039:77;21036:1;21029:88;21136:4;21133:1;21126:15;21160:4;21157:1;21150:15;21177:223;21317:34;21313:1;21305:6;21301:14;21294:58;21386:6;21381:2;21373:6;21369:15;21362:31;21177:223;:::o;21406:366::-;21548:3;21569:67;21633:2;21628:3;21569:67;:::i;:::-;21562:74;;21645:93;21734:3;21645:93;:::i;:::-;21763:2;21758:3;21754:12;21747:19;;21406:366;;;:::o;21778:419::-;21944:4;21982:2;21971:9;21967:18;21959:26;;22031:9;22025:4;22021:20;22017:1;22006:9;22002:17;21995:47;22059:131;22185:4;22059:131;:::i;:::-;22051:139;;21778:419;;;:::o;22203:221::-;22343:34;22339:1;22331:6;22327:14;22320:58;22412:4;22407:2;22399:6;22395:15;22388:29;22203:221;:::o;22430:366::-;22572:3;22593:67;22657:2;22652:3;22593:67;:::i;:::-;22586:74;;22669:93;22758:3;22669:93;:::i;:::-;22787:2;22782:3;22778:12;22771:19;;22430:366;;;:::o;22802:419::-;22968:4;23006:2;22995:9;22991:18;22983:26;;23055:9;23049:4;23045:20;23041:1;23030:9;23026:17;23019:47;23083:131;23209:4;23083:131;:::i;:::-;23075:139;;22802:419;;;:::o;23227:224::-;23367:34;23363:1;23355:6;23351:14;23344:58;23436:7;23431:2;23423:6;23419:15;23412:32;23227:224;:::o;23457:366::-;23599:3;23620:67;23684:2;23679:3;23620:67;:::i;:::-;23613:74;;23696:93;23785:3;23696:93;:::i;:::-;23814:2;23809:3;23805:12;23798:19;;23457:366;;;:::o;23829:419::-;23995:4;24033:2;24022:9;24018:18;24010:26;;24082:9;24076:4;24072:20;24068:1;24057:9;24053:17;24046:47;24110:131;24236:4;24110:131;:::i;:::-;24102:139;;23829:419;;;:::o;24254:222::-;24394:34;24390:1;24382:6;24378:14;24371:58;24463:5;24458:2;24450:6;24446:15;24439:30;24254:222;:::o;24482:366::-;24624:3;24645:67;24709:2;24704:3;24645:67;:::i;:::-;24638:74;;24721:93;24810:3;24721:93;:::i;:::-;24839:2;24834:3;24830:12;24823:19;;24482:366;;;:::o;24854:419::-;25020:4;25058:2;25047:9;25043:18;25035:26;;25107:9;25101:4;25097:20;25093:1;25082:9;25078:17;25071:47;25135:131;25261:4;25135:131;:::i;:::-;25127:139;;24854:419;;;:::o;25279:228::-;25419:34;25415:1;25407:6;25403:14;25396:58;25488:11;25483:2;25475:6;25471:15;25464:36;25279:228;:::o;25513:366::-;25655:3;25676:67;25740:2;25735:3;25676:67;:::i;:::-;25669:74;;25752:93;25841:3;25752:93;:::i;:::-;25870:2;25865:3;25861:12;25854:19;;25513:366;;;:::o;25885:419::-;26051:4;26089:2;26078:9;26074:18;26066:26;;26138:9;26132:4;26128:20;26124:1;26113:9;26109:17;26102:47;26166:131;26292:4;26166:131;:::i;:::-;26158:139;;25885:419;;;:::o;26310:291::-;26450:34;26446:1;26438:6;26434:14;26427:58;26519:34;26514:2;26506:6;26502:15;26495:59;26588:5;26583:2;26575:6;26571:15;26564:30;26310:291;:::o;26607:366::-;26749:3;26770:67;26834:2;26829:3;26770:67;:::i;:::-;26763:74;;26846:93;26935:3;26846:93;:::i;:::-;26964:2;26959:3;26955:12;26948:19;;26607:366;;;:::o;26979:419::-;27145:4;27183:2;27172:9;27168:18;27160:26;;27232:9;27226:4;27222:20;27218:1;27207:9;27203:17;27196:47;27260:131;27386:4;27260:131;:::i;:::-;27252:139;;26979:419;;;:::o;27404:241::-;27544:34;27540:1;27532:6;27528:14;27521:58;27613:24;27608:2;27600:6;27596:15;27589:49;27404:241;:::o;27651:366::-;27793:3;27814:67;27878:2;27873:3;27814:67;:::i;:::-;27807:74;;27890:93;27979:3;27890:93;:::i;:::-;28008:2;28003:3;27999:12;27992:19;;27651:366;;;:::o;28023:419::-;28189:4;28227:2;28216:9;28212:18;28204:26;;28276:9;28270:4;28266:20;28262:1;28251:9;28247:17;28240:47;28304:131;28430:4;28304:131;:::i;:::-;28296:139;;28023:419;;;:::o;28448:85::-;28493:7;28522:5;28511:16;;28448:85;;;:::o;28539:60::-;28567:3;28588:5;28581:12;;28539:60;;;:::o;28605:158::-;28663:9;28696:61;28714:42;28723:32;28749:5;28723:32;:::i;:::-;28714:42;:::i;:::-;28696:61;:::i;:::-;28683:74;;28605:158;;;:::o;28769:147::-;28864:45;28903:5;28864:45;:::i;:::-;28859:3;28852:58;28769:147;;:::o;28922:114::-;28989:6;29023:5;29017:12;29007:22;;28922:114;;;:::o;29042:184::-;29141:11;29175:6;29170:3;29163:19;29215:4;29210:3;29206:14;29191:29;;29042:184;;;;:::o;29232:132::-;29299:4;29322:3;29314:11;;29352:4;29347:3;29343:14;29335:22;;29232:132;;;:::o;29370:108::-;29447:24;29465:5;29447:24;:::i;:::-;29442:3;29435:37;29370:108;;:::o;29484:179::-;29553:10;29574:46;29616:3;29608:6;29574:46;:::i;:::-;29652:4;29647:3;29643:14;29629:28;;29484:179;;;;:::o;29669:113::-;29739:4;29771;29766:3;29762:14;29754:22;;29669:113;;;:::o;29818:732::-;29937:3;29966:54;30014:5;29966:54;:::i;:::-;30036:86;30115:6;30110:3;30036:86;:::i;:::-;30029:93;;30146:56;30196:5;30146:56;:::i;:::-;30225:7;30256:1;30241:284;30266:6;30263:1;30260:13;30241:284;;;30342:6;30336:13;30369:63;30428:3;30413:13;30369:63;:::i;:::-;30362:70;;30455:60;30508:6;30455:60;:::i;:::-;30445:70;;30301:224;30288:1;30285;30281:9;30276:14;;30241:284;;;30245:14;30541:3;30534:10;;29942:608;;;29818:732;;;;:::o;30556:831::-;30819:4;30857:3;30846:9;30842:19;30834:27;;30871:71;30939:1;30928:9;30924:17;30915:6;30871:71;:::i;:::-;30952:80;31028:2;31017:9;31013:18;31004:6;30952:80;:::i;:::-;31079:9;31073:4;31069:20;31064:2;31053:9;31049:18;31042:48;31107:108;31210:4;31201:6;31107:108;:::i;:::-;31099:116;;31225:72;31293:2;31282:9;31278:18;31269:6;31225:72;:::i;:::-;31307:73;31375:3;31364:9;31360:19;31351:6;31307:73;:::i;:::-;30556:831;;;;;;;;:::o
Swarm Source
ipfs://115ab32f49c0020fefda3acc45b3e45977660cc02049ed1b2e1e4fbf43e4d983
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.