ERC-20
Overview
Max Total Supply
53,750 MSGT
Holders
96
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ERC20
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-17 */ pragma solidity ^ 0.5.1; library SafeMath { function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns(uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns(uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns(uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() internal { _owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } function owner() public view returns(address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns(bool) { return msg.sender == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; struct ExcludeAddress { bool isExist; } // Frontrans and Sniper bots will be blocked mapping(address => ExcludeAddress) public blackList; // only ICO contract and owner able to transfers before listing to uniswap mapping(address => ExcludeAddress) public whiteList; // ICO contract and Rewards wallet will be send without tax mapping(address => ExcludeAddress) public taxFree; // blocked transfers (exclude whiteList) // to avoid fake listing not from the team bool public isWhiteListOnly = true; // the address that will receive taxes and send out rewards address public rewardsWallet; // Token params string public constant name = "msgt.io"; string public constant symbol = "MSGT"; uint public constant decimals = 18; uint constant total = 53750; uint256 private _totalSupply; uint lastCheck = now; uint periodRebalance = 12 hours; // -- Token params //Taxes uint public taxPercent = 6; uint public taxPercentSell = 6; uint public taxPercentBuy = 6; address public liqAddress = address(0); // baseBalance - this is the balance of the reward wallet, to which the wallet will be rebalanced in case of exceeding +-10% uint constant public baseBalance = 3500 * 10 ** decimals; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Rebalance(uint256 balance); event Tax(uint256 taxedAmount); constructor() public { _mint(msg.sender, total * 10 ** decimals); } function totalSupply() public view returns(uint256) { return _totalSupply; } function balanceOf(address account) public view returns(uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns(bool) { _taxTransfer(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) { _taxTransfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns(bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns(bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal { 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); } function _taxTransfer(address _sender, address _recipient, uint256 _amount) internal returns(bool) { require(!blackList[_sender].isExist, 'Address blocked'); require(!isWhiteListOnly || whiteList[_sender].isExist, 'White List only'); // unlock after listing if (taxFree[_sender].isExist) { _transfer(_sender, _recipient, _amount); } else { // calc tax uint tax; if(_sender == liqAddress) {tax = taxPercentBuy;} // buy token else if(_recipient == liqAddress) {tax = taxPercentSell;} // sell token else {tax = taxPercent;} // Wallet to Wallet uint _taxedAmount = _amount.mul(tax).div(100); uint _transferedAmount = _amount.sub(_taxedAmount); _transfer(_sender, rewardsWallet, _taxedAmount); // tax to rewardsWallet _transfer(_sender, _recipient, _transferedAmount); // amount - tax to recipient emit Tax(_taxedAmount); } rebalanceRW(); } // If the balance of the reward changes from the base value by 10%, its balance is returned to the base value. // In this case, the extra tokens are burned, and the shortage is minted. function rebalanceRW () public { if (isWhiteListOnly || lastCheck > now - periodRebalance) { return; } lastCheck = now; // cached time of rebalance uint balance = balanceOf(rewardsWallet); // 10% constant if (balance < (baseBalance.mul(90)).div(100)) { // positive emit Rebalance(balance); _balances[rewardsWallet] = baseBalance; _totalSupply = _totalSupply.add(baseBalance - balance); } else if (balance > (baseBalance.mul(110)).div(100)) { // negative emit Rebalance(balance); _balances[rewardsWallet] = baseBalance; _totalSupply = _totalSupply.sub(balance - baseBalance); } } // OWNER utils function toggleWhiteList(address addr) public onlyOwner { whiteList[addr].isExist = !whiteList[addr].isExist; } function toggleTaxFeeList(address addr) public onlyOwner { taxFree[addr].isExist = !taxFree[addr].isExist; } function toggleBlackList(address addr) public onlyOwner { blackList[addr].isExist = !blackList[addr].isExist; } function toggleIsWhiteListOnly() public onlyOwner { isWhiteListOnly = !isWhiteListOnly; } function changePercentOfTax(uint percent) public onlyOwner { taxPercent = percent; } function changePercentOfTaxSell(uint percent) public onlyOwner { taxPercentSell = percent; } function changePercentOfTaxBuy(uint percent) public onlyOwner { taxPercentBuy = percent; } // When change the reward wallet, tokens are sent from the old wallet to the new one. // Thus, an extra balance is not possible when changing wallets. function changeRewardsWallet(address addr) public onlyOwner { if(rewardsWallet != address(0)){ _transfer(rewardsWallet, addr, _balances[rewardsWallet]); } taxFree[rewardsWallet].isExist = false; taxFree[addr].isExist = true; rewardsWallet = addr; } // need after listing only function blockSell(address _liqAddress) public onlyOwner { changeLiqAddress(_liqAddress); isWhiteListOnly = true; } function changeLiqAddress(address _liqAddress) public onlyOwner { liqAddress = _liqAddress; whiteList[liqAddress].isExist = true; } // Tokens of adresess which was blocked send to reward wallet function sendBlockedTokensToRw(address addr) public onlyOwner { require(blackList[addr].isExist, 'Address is not blocked'); _transfer(addr, rewardsWallet, _balances[addr]); } } contract Crowdsale { using SafeMath for uint256; address payable owner; address me = address(this); uint sat = 1e18; struct IsExist {bool isExist;} mapping(address => IsExist) public whiteList; // // *** Config *** uint startIco = 1621260000; // uint startIco = now; uint stopIco = startIco + 48 hours; uint countBy1EthIfWL = 25; // 1ETH -> 25 MSGT uint countBy1EthIfNotWL = 24; // 1 ETH -> 24 MSGT uint amountWL = 10500 * sat; // amount for WL users uint amountNotWL = 10500 * sat; // amount for not WL users uint maxTokensToOnceHandWl = 75 * sat; uint maxTokensToOnceHandNoWl = 360 * sat; // --- Config --- ERC20 token = new ERC20(); constructor() public { owner = msg.sender; token.toggleWhiteList(address(this)); token.toggleTaxFeeList(address(this)); token.toggleWhiteList(owner); token.toggleTaxFeeList(owner); token.transfer(owner, token.totalSupply() - (amountWL + amountNotWL)); token.transferOwnership(owner); } function () external payable { require(startIco < now && now < stopIco, "Period error"); uint amount = msg.value.mul(getPrice()); bool userIsWl = whiteList[msg.sender].isExist; require(token.balanceOf(msg.sender) + amount <= (userIsWl ? maxTokensToOnceHandWl : maxTokensToOnceHandNoWl), "The purchase limit of tokens has been exceeded"); require(amount <= token.balanceOf(address(this)), "Infucient token balance in ICO"); uint leftTokens = userIsWl ? amountWL : amountNotWL; require(amount <= leftTokens, "Infucient token balance in ICO for group"); token.transfer(msg.sender, amount); if(userIsWl){ amountWL -= amount; } else { amountNotWL -= amount; } } modifier onlyOw() { require(msg.sender == owner, "You is not owner"); _; } // OWNER ONLY function pushWhiteList(address[] memory addressess) public onlyOw { for (uint i = 0; i < addressess.length; i++) { whiteList[addressess[i]].isExist = true; } } function manualGetETH () public payable onlyOw { owner.transfer(address(this).balance); } function getLeftTokens () public onlyOw { token.transfer(owner, token.balanceOf(address(this))); } // run after 1h function sendAmountWlToNoWL () public onlyOw { amountNotWL += amountWL; amountWL = 0; } //--- end OWNER ONLY function getPrice() public view returns(uint) { return (whiteList[msg.sender].isExist ? countBy1EthIfWL : countBy1EthIfNotWL); } // Utils function getStartICO() public view returns(uint) { return (startIco - now) / 60; } function getOwner() public view returns(address) { return owner; } function getStopIco() public view returns(uint) { return (stopIco - now) / 60; } function tokenAddress() public view returns(address) { return address(token); } function IcoDeposit() public view returns(uint) { return token.balanceOf(address(this)) / sat; } function myBalancex10() public view returns(uint) { return token.balanceOf(msg.sender) / 1e17; } function myBalancex1000() public view returns(uint) { return token.balanceOf(msg.sender) / 1e15; } function leftAmountForWL () public view returns(uint) { return amountWL; } function leftAmountForNotWL () public view returns(uint) { return amountNotWL; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"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":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"Rebalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxedAmount","type":"uint256"}],"name":"Tax","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"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"isExist","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_liqAddress","type":"address"}],"name":"blockSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_liqAddress","type":"address"}],"name":"changeLiqAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"changePercentOfTax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"changePercentOfTaxBuy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"changePercentOfTaxSell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"changeRewardsWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isWhiteListOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liqAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"rebalanceRW","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"sendBlockedTokensToRw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxFree","outputs":[{"internalType":"bool","name":"isExist","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"taxPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"taxPercentBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"taxPercentSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"toggleBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"toggleIsWhiteListOnly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"toggleTaxFeeList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"toggleWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"isExist","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526001600660006101000a81548160ff0219169083151502179055504260085561a8c06009556006600a556006600b556006600c556000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008757600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36200013d336012600a0a61d1f6026200014360201b60201c565b62000398565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b62000203816007546200030f60201b6200271a1790919060201c565b6007819055506200026281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200030f60201b6200271a1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110156200038e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b612efd80620003a86000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636cea7f151161013057806395d89b41116100b8578063d840a96c1161007c578063d840a96c14610a6e578063dd62ed3e14610a9c578063f2b9aa1114610b14578063f2fde38b14610b70578063f7d0432114610bb457610227565b806395d89b41146108ad578063a457c2d714610930578063a9059cbb14610996578063c36235ed146109fc578063c3c5376f14610a4057610227565b8063750c7947116100ff578063750c7947146107955780637541f41c146107df5780638da5cb5b146107fd5780638f32d59b14610847578063902ca1ff1461086957610227565b80636cea7f15146106e557806370a08231146106ef578063715018a61461074757806371def5371461075157610227565b806339509351116101b35780634f431a6f116101825780634f431a6f146105c35780635b35f9c91461060757806360a856ef146106515780636818a84414610673578063682662f3146106b757610227565b8063395093511461047957806343d2977a146104df578063463cbed3146105235780634838d1651461056757610227565b806323b872dd116101fa57806323b872dd146103515780632605146d146103d7578063313ce567146103e1578063372c12b1146103ff57806338bde7911461045b57610227565b806303e2c14c1461022c57806306fdde031461024a578063095ea7b3146102cd57806318160ddd14610333575b600080fd5b610234610bd2565b6040518082815260200191505060405180910390f35b610252610bd8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610292578082015181840152602081019050610277565b50505050905090810190601f1680156102bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610319600480360360408110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c11565b604051808215151515815260200191505060405180910390f35b61033b610c28565b6040518082815260200191505060405180910390f35b6103bd6004803603606081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c32565b604051808215151515815260200191505060405180910390f35b6103df610cfe565b005b6103e9610da4565b6040518082815260200191505060405180910390f35b6104416004803603602081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da9565b604051808215151515815260200191505060405180910390f35b610463610dd4565b6040518082815260200191505060405180910390f35b6104c56004803603604081101561048f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de0565b604051808215151515815260200191505060405180910390f35b610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e85565b005b6105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fac565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d3565b604051808215151515815260200191505060405180910390f35b610605600480360360208110156105d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110fe565b005b61060f611225565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61065961124b565b604051808215151515815260200191505060405180910390f35b6106b56004803603602081101561068957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125e565b005b6106e3600480360360208110156106cd57600080fd5b8101908080359060200190929190505050611399565b005b6106ed61141d565b005b6107316004803603602081101561070557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611688565b6040518082815260200191505060405180910390f35b61074f6116d1565b005b6107936004803603602081101561076757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180a565b005b61079d6118ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e76118d1565b6040518082815260200191505060405180910390f35b6108056118d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61084f611900565b604051808215151515815260200191505060405180910390f35b6108ab6004803603602081101561087f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611957565b005b6108b5611bd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108f55780820151818401526020810190506108da565b50505050905090810190601f1680156109225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61097c6004803603604081101561094657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b6109e2600480360360408110156109ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cca565b604051808215151515815260200191505060405180910390f35b610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ce2565b005b610a6c60048036036020811015610a5657600080fd5b8101908080359060200190929190505050611e8d565b005b610a9a60048036036020811015610a8457600080fd5b8101908080359060200190929190505050611f11565b005b610afe60048036036040811015610ab257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f95565b6040518082815260200191505060405180910390f35b610b5660048036036020811015610b2a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061201c565b604051808215151515815260200191505060405180910390f35b610bb260048036036020811015610b8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612047565b005b610bbc6120cd565b6040518082815260200191505060405180910390f35b600b5481565b6040518060400160405280600781526020017f6d7367742e696f0000000000000000000000000000000000000000000000000081525081565b6000610c1e3384846120d3565b6001905092915050565b6000600754905090565b6000610c3f8484846122ca565b50610cf38433610cee85604051806060016040528060288152602001612e3360289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b6120d3565b600190509392505050565b610d06611900565b610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660009054906101000a900460ff1615600660006101000a81548160ff021916908315150217905550565b601281565b60046020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b6012600a0a610dac0281565b6000610e7b3384610e7685600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a90919063ffffffff16565b6120d3565b6001905092915050565b610e8d611900565b610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b610fb4611900565b611026576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b611106611900565b611178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b611266611900565b6112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b6113a1611900565b611413576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b600660009054906101000a900460ff168061143d57506009544203600854115b1561144757611686565b42600881905550600061147b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b90506114ac606461149e605a6012600a0a610dac026127a290919063ffffffff16565b61282890919063ffffffff16565b811015611582577f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0816040518082815260200191505060405180910390a16012600a0a610dac0260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611577816012600a0a610dac020360075461271a90919063ffffffff16565b600781905550611684565b6115b160646115a3606e6012600a0a610dac026127a290919063ffffffff16565b61282890919063ffffffff16565b811115611683577f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0816040518082815260200191505060405180910390a16012600a0a610dac0260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167c6012600a0a610dac02820360075461287290919063ffffffff16565b6007819055505b5b505b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d9611900565b61174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611812611900565b611884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61188d8161125e565b6001600660006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b61195f611900565b6119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab657611ab5600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc565b5b600060056000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555080600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600481526020017f4d5347540000000000000000000000000000000000000000000000000000000081525081565b6000611cc03384611cbb85604051806060016040528060258152602001612ea460259139600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b6120d3565b6001905092915050565b6000611cd73384846122ca565b506001905092915050565b611cea611900565b611d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f41646472657373206973206e6f7420626c6f636b65640000000000000000000081525060200191505060405180910390fd5b611e8a81600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc565b50565b611e95611900565b611f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b611f19611900565b611f8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b61204f611900565b6120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6120ca81612b76565b50565b600c5481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e806024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612dca6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4164647265737320626c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615806123f75750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b612469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5768697465204c697374206f6e6c79000000000000000000000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156124ce576124c98484846128bc565b61264b565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561253057600c549050612597565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561259057600b549050612596565b600a5490505b5b60006125bf60646125b184876127a290919063ffffffff16565b61282890919063ffffffff16565b905060006125d6828661287290919063ffffffff16565b905061260587600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128bc565b6126108787836128bc565b7f1da9a0060303acd94a78d52073d1a4429cf474a9a26cee91c84e7d28abb2baaa826040518082815260200191505060405180910390a15050505b61265361141d565b9392505050565b6000838311158290612707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126cc5780820151818401526020810190506126b1565b50505050905090810190601f1680156126f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156127b55760009050612822565b60008284029050828482816127c657fe5b041461281d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e126021913960400191505060405180910390fd5b809150505b92915050565b600061286a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cba565b905092915050565b60006128b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061265a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e5b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d816023913960400191505060405180910390fd5b612a3481604051806060016040528060268152602001612dec60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612da46026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612d66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d2b578082015181840152602081019050612d10565b50505050905090810190601f168015612d585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d7257fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820dc880ec326dd0d3fae7b07af9789f1843da07d081313ee00d015bb6959dc263a64736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102275760003560e01c80636cea7f151161013057806395d89b41116100b8578063d840a96c1161007c578063d840a96c14610a6e578063dd62ed3e14610a9c578063f2b9aa1114610b14578063f2fde38b14610b70578063f7d0432114610bb457610227565b806395d89b41146108ad578063a457c2d714610930578063a9059cbb14610996578063c36235ed146109fc578063c3c5376f14610a4057610227565b8063750c7947116100ff578063750c7947146107955780637541f41c146107df5780638da5cb5b146107fd5780638f32d59b14610847578063902ca1ff1461086957610227565b80636cea7f15146106e557806370a08231146106ef578063715018a61461074757806371def5371461075157610227565b806339509351116101b35780634f431a6f116101825780634f431a6f146105c35780635b35f9c91461060757806360a856ef146106515780636818a84414610673578063682662f3146106b757610227565b8063395093511461047957806343d2977a146104df578063463cbed3146105235780634838d1651461056757610227565b806323b872dd116101fa57806323b872dd146103515780632605146d146103d7578063313ce567146103e1578063372c12b1146103ff57806338bde7911461045b57610227565b806303e2c14c1461022c57806306fdde031461024a578063095ea7b3146102cd57806318160ddd14610333575b600080fd5b610234610bd2565b6040518082815260200191505060405180910390f35b610252610bd8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610292578082015181840152602081019050610277565b50505050905090810190601f1680156102bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610319600480360360408110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c11565b604051808215151515815260200191505060405180910390f35b61033b610c28565b6040518082815260200191505060405180910390f35b6103bd6004803603606081101561036757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c32565b604051808215151515815260200191505060405180910390f35b6103df610cfe565b005b6103e9610da4565b6040518082815260200191505060405180910390f35b6104416004803603602081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610da9565b604051808215151515815260200191505060405180910390f35b610463610dd4565b6040518082815260200191505060405180910390f35b6104c56004803603604081101561048f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de0565b604051808215151515815260200191505060405180910390f35b610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e85565b005b6105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fac565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d3565b604051808215151515815260200191505060405180910390f35b610605600480360360208110156105d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110fe565b005b61060f611225565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61065961124b565b604051808215151515815260200191505060405180910390f35b6106b56004803603602081101561068957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061125e565b005b6106e3600480360360208110156106cd57600080fd5b8101908080359060200190929190505050611399565b005b6106ed61141d565b005b6107316004803603602081101561070557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611688565b6040518082815260200191505060405180910390f35b61074f6116d1565b005b6107936004803603602081101561076757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061180a565b005b61079d6118ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107e76118d1565b6040518082815260200191505060405180910390f35b6108056118d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61084f611900565b604051808215151515815260200191505060405180910390f35b6108ab6004803603602081101561087f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611957565b005b6108b5611bd2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108f55780820151818401526020810190506108da565b50505050905090810190601f1680156109225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61097c6004803603604081101561094657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b6109e2600480360360408110156109ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cca565b604051808215151515815260200191505060405180910390f35b610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ce2565b005b610a6c60048036036020811015610a5657600080fd5b8101908080359060200190929190505050611e8d565b005b610a9a60048036036020811015610a8457600080fd5b8101908080359060200190929190505050611f11565b005b610afe60048036036040811015610ab257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f95565b6040518082815260200191505060405180910390f35b610b5660048036036020811015610b2a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061201c565b604051808215151515815260200191505060405180910390f35b610bb260048036036020811015610b8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612047565b005b610bbc6120cd565b6040518082815260200191505060405180910390f35b600b5481565b6040518060400160405280600781526020017f6d7367742e696f0000000000000000000000000000000000000000000000000081525081565b6000610c1e3384846120d3565b6001905092915050565b6000600754905090565b6000610c3f8484846122ca565b50610cf38433610cee85604051806060016040528060288152602001612e3360289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b6120d3565b600190509392505050565b610d06611900565b610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600660009054906101000a900460ff1615600660006101000a81548160ff021916908315150217905550565b601281565b60046020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b6012600a0a610dac0281565b6000610e7b3384610e7685600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a90919063ffffffff16565b6120d3565b6001905092915050565b610e8d611900565b610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b610fb4611900565b611026576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b611106611900565b611178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900460ff1681565b611266611900565b6112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b6113a1611900565b611413576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b600660009054906101000a900460ff168061143d57506009544203600854115b1561144757611686565b42600881905550600061147b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611688565b90506114ac606461149e605a6012600a0a610dac026127a290919063ffffffff16565b61282890919063ffffffff16565b811015611582577f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0816040518082815260200191505060405180910390a16012600a0a610dac0260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611577816012600a0a610dac020360075461271a90919063ffffffff16565b600781905550611684565b6115b160646115a3606e6012600a0a610dac026127a290919063ffffffff16565b61282890919063ffffffff16565b811115611683577f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0816040518082815260200191505060405180910390a16012600a0a610dac0260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167c6012600a0a610dac02820360075461287290919063ffffffff16565b6007819055505b5b505b565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116d9611900565b61174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611812611900565b611884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61188d8161125e565b6001600660006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b61195f611900565b6119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab657611ab5600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc565b5b600060056000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555080600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060400160405280600481526020017f4d5347540000000000000000000000000000000000000000000000000000000081525081565b6000611cc03384611cbb85604051806060016040528060258152602001612ea460259139600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b6120d3565b6001905092915050565b6000611cd73384846122ca565b506001905092915050565b611cea611900565b611d5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611e1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f41646472657373206973206e6f7420626c6f636b65640000000000000000000081525060200191505060405180910390fd5b611e8a81600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bc565b50565b611e95611900565b611f07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b611f19611900565b611f8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60056020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b61204f611900565b6120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6120ca81612b76565b50565b600c5481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e806024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612dca6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561238f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4164647265737320626c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615806123f75750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b612469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5768697465204c697374206f6e6c79000000000000000000000000000000000081525060200191505060405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156124ce576124c98484846128bc565b61264b565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561253057600c549050612597565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561259057600b549050612596565b600a5490505b5b60006125bf60646125b184876127a290919063ffffffff16565b61282890919063ffffffff16565b905060006125d6828661287290919063ffffffff16565b905061260587600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128bc565b6126108787836128bc565b7f1da9a0060303acd94a78d52073d1a4429cf474a9a26cee91c84e7d28abb2baaa826040518082815260200191505060405180910390a15050505b61265361141d565b9392505050565b6000838311158290612707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126cc5780820151818401526020810190506126b1565b50505050905090810190601f1680156126f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156127b55760009050612822565b60008284029050828482816127c657fe5b041461281d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e126021913960400191505060405180910390fd5b809150505b92915050565b600061286a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612cba565b905092915050565b60006128b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061265a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e5b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d816023913960400191505060405180910390fd5b612a3481604051806060016040528060268152602001612dec60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265a9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612da46026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612d66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d2b578082015181840152602081019050612d10565b50505050905090810190601f168015612d585780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d7257fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820dc880ec326dd0d3fae7b07af9789f1843da07d081313ee00d015bb6959dc263a64736f6c63430005110032
Deployed Bytecode Sourcemap
2717:8430:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2717:8430:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3939:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3601:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3601:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5109:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5109:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4587:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5266:302;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5266:302:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9622:103;;;:::i;:::-;;3692:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3162:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3162:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4193:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5576:205;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5576:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9361:122;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9361:122:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9491:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9491:125:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3024:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3024:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9230:125;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9230:125:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3543:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3437:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10720:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10720:154:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9733:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9733:98:0;;;;;;;;;;;;;;;;;:::i;:::-;;8454:748;;;:::i;:::-;;4685:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4685:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2216:140;;;:::i;:::-;;10576:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10576:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4018:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3906:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1917:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2117:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10222:314;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10222:314:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3647:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3647:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5789:256;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5789:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4802:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4802:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10947:197;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10947:197:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;9949:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9949:104:0;;;;;;;;;;;;;;;;;:::i;:::-;;9837:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9837:106:0;;;;;;;;;;;;;;;;;:::i;:::-;;4968:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4968:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3285:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3285:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2364:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2364:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3976:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3939:30;;;;:::o;3601:39::-;;;;;;;;;;;;;;;;;;;:::o;5109:149::-;5174:4;5191:37;5200:10;5212:7;5221:6;5191:8;:37::i;:::-;5246:4;5239:11;;5109:149;;;;:::o;4587:90::-;4630:7;4657:12;;4650:19;;4587:90;:::o;5266:302::-;5354:4;5371:39;5384:6;5392:9;5403:6;5371:12;:39::i;:::-;;5421:117;5430:6;5438:10;5450:87;5486:6;5450:87;;;;;;;;;;;;;;;;;:11;:19;5462:6;5450:19;;;;;;;;;;;;;;;:31;5470:10;5450:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;5421:8;:117::i;:::-;5556:4;5549:11;;5266:302;;;;;:::o;9622:103::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9702:15;;;;;;;;;;;9701:16;9683:15;;:34;;;;;;;;;;;;;;;;;;9622:103::o;3692:34::-;3724:2;3692:34;:::o;3162:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4193:56::-;3724:2;4235;:14;4228:4;:21;4193:56;:::o;5576:205::-;5655:4;5672:79;5681:10;5693:7;5702:48;5739:10;5702:11;:23;5714:10;5702:23;;;;;;;;;;;;;;;:32;5726:7;5702:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;5672:8;:79::i;:::-;5769:4;5762:11;;5576:205;;;;:::o;9361:122::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9454:7;:13;9462:4;9454:13;;;;;;;;;;;;;;;:21;;;;;;;;;;;;9453:22;9429:7;:13;9437:4;9429:13;;;;;;;;;;;;;;;:21;;;:46;;;;;;;;;;;;;;;;;;9361:122;:::o;9491:125::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9585:9;:15;9595:4;9585:15;;;;;;;;;;;;;;;:23;;;;;;;;;;;;9584:24;9558:9;:15;9568:4;9558:15;;;;;;;;;;;;;;;:23;;;:50;;;;;;;;;;;;;;;;;;9491:125;:::o;3024:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9230:125::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9324:9;:15;9334:4;9324:15;;;;;;;;;;;;;;;:23;;;;;;;;;;;;9323:24;9297:9;:15;9307:4;9297:15;;;;;;;;;;;;;;;:23;;;:50;;;;;;;;;;;;;;;;;;9230:125;:::o;3543:28::-;;;;;;;;;;;;;:::o;3437:34::-;;;;;;;;;;;;;:::o;10720:154::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10808:11;10795:10;;:24;;;;;;;;;;;;;;;;;;10862:4;10830:9;:21;10840:10;;;;;;;;;;;10830:21;;;;;;;;;;;;;;;:29;;;:36;;;;;;;;;;;;;;;;;;10720:154;:::o;9733:98::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:7;9803:10;:20;;;;9733:98;:::o;8454:748::-;8500:15;;;;;;;;;;;:52;;;;8537:15;;8531:3;:21;8519:9;;:33;8500:52;8496:91;;;8569:7;;8496:91;8611:3;8599:9;:15;;;;8653:12;8668:24;8678:13;;;;;;;;;;;8668:9;:24::i;:::-;8653:39;;8742:30;8768:3;8743:19;8759:2;3724;4235;:14;4228:4;:21;8743:15;;:19;;;;:::i;:::-;8742:25;;:30;;;;:::i;:::-;8732:7;:40;8728:467;;;8806:18;8816:7;8806:18;;;;;;;;;;;;;;;;;;3724:2;4235;:14;4228:4;:21;8839:9;:24;8849:13;;;;;;;;;;;8839:24;;;;;;;;;;;;;;;:38;;;;8907:39;8938:7;3724:2;4235;:14;4228:4;:21;8924;8907:12;;:16;;:39;;;;:::i;:::-;8892:12;:54;;;;8728:467;;;8978:31;9005:3;8979:20;8995:3;3724:2;4235;:14;4228:4;:21;8979:15;;:20;;;;:::i;:::-;8978:26;;:31;;;;:::i;:::-;8968:7;:41;8964:231;;;9043:18;9053:7;9043:18;;;;;;;;;;;;;;;;;;3724:2;4235;:14;4228:4;:21;9076:9;:24;9086:13;;;;;;;;;;;9076:24;;;;;;;;;;;;;;;:38;;;;9144:39;3724:2;4235;:14;4228:4;:21;9161:7;:21;9144:12;;:16;;:39;;;;:::i;:::-;9129:12;:54;;;;8964:231;8728:467;8454:748;;:::o;4685:109::-;4741:7;4768:9;:18;4778:7;4768:18;;;;;;;;;;;;;;;;4761:25;;4685:109;;;:::o;2216:140::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2315:1;2278:40;;2299:6;;;;;;;;;;;2278:40;;;;;;;;;;;;2346:1;2329:6;;:19;;;;;;;;;;;;;;;;;;2216:140::o;10576:138::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10644:29;10661:11;10644:16;:29::i;:::-;10702:4;10684:15;;:22;;;;;;;;;;;;;;;;;;10576:138;:::o;4018:38::-;;;;;;;;;;;;;:::o;3906:26::-;;;;:::o;1917:78::-;1954:7;1981:6;;;;;;;;;;;1974:13;;1917:78;:::o;2117:91::-;2156:4;2194:6;;;;;;;;;;;2180:20;;:10;:20;;;2173:27;;2117:91;:::o;10222:314::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10321:1;10296:27;;:13;;;;;;;;;;;:27;;;10293:117;;10339:56;10349:13;;;;;;;;;;;10364:4;10370:9;:24;10380:13;;;;;;;;;;;10370:24;;;;;;;;;;;;;;;;10339:9;:56::i;:::-;10293:117;10453:5;10420:7;:22;10428:13;;;;;;;;;;;10420:22;;;;;;;;;;;;;;;:30;;;:38;;;;;;;;;;;;;;;;;;10493:4;10469:7;:13;10477:4;10469:13;;;;;;;;;;;;;;;:21;;;:28;;;;;;;;;;;;;;;;;;10524:4;10508:13;;:20;;;;;;;;;;;;;;;;;;10222:314;:::o;3647:38::-;;;;;;;;;;;;;;;;;;;:::o;5789:256::-;5873:4;5890:125;5899:10;5911:7;5920:94;5957:15;5920:94;;;;;;;;;;;;;;;;;:11;:23;5932:10;5920:23;;;;;;;;;;;;;;;:32;5944:7;5920:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;5890:8;:125::i;:::-;6033:4;6026:11;;5789:256;;;;:::o;4802:158::-;4870:4;4887:43;4900:10;4912:9;4923:6;4887:12;:43::i;:::-;;4948:4;4941:11;;4802:158;;;;:::o;10947:197::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11028:9;:15;11038:4;11028:15;;;;;;;;;;;;;;;:23;;;;;;;;;;;;11020:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11089:47;11099:4;11105:13;;;;;;;;;;;11120:9;:15;11130:4;11120:15;;;;;;;;;;;;;;;;11089:9;:47::i;:::-;10947:197;:::o;9949:104::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10038:7;10022:13;:23;;;;9949:104;:::o;9837:106::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9928:7;9911:14;:24;;;;9837:106;:::o;4968:133::-;5039:7;5066:11;:18;5078:5;5066:18;;;;;;;;;;;;;;;:27;5085:7;5066:27;;;;;;;;;;;;;;;;5059:34;;4968:133;;;;:::o;3285:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2364:109::-;2043:9;:7;:9::i;:::-;2035:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:28;2456:8;2437:18;:28::i;:::-;2364:109;:::o;3976:29::-;;;;:::o;6848:338::-;6959:1;6942:19;;:5;:19;;;;6934:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7040:1;7021:21;;:7;:21;;;;7013:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7124:6;7094:11;:18;7106:5;7094:18;;;;;;;;;;;;;;;:27;7113:7;7094:27;;;;;;;;;;;;;;;:36;;;;7162:7;7146:32;;7155:5;7146:32;;;7171:6;7146:32;;;;;;;;;;;;;;;;;;6848:338;;;:::o;7194:1057::-;7287:4;7313:9;:18;7323:7;7313:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;7312:27;7304:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7379:15;;;;;;;;;;;7378:16;:46;;;;7398:9;:18;7408:7;7398:18;;;;;;;;;;;;;;;:26;;;;;;;;;;;;7378:46;7370:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7485:7;:16;7493:7;7485:16;;;;;;;;;;;;;;;:24;;;;;;;;;;;;7481:737;;;7526:39;7536:7;7545:10;7557:7;7526:9;:39::i;:::-;7481:737;;;7623:8;7660:10;;;;;;;;;;;7649:21;;:7;:21;;;7646:184;;;7679:13;;7673:19;;7646:184;;;7743:10;;;;;;;;;;;7729:24;;:10;:24;;;7726:104;;;7762:14;;7756:20;;7726:104;;;7818:10;;7812:16;;7726:104;7646:184;7878:17;7898:25;7919:3;7898:16;7910:3;7898:7;:11;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;7878:45;;7938:22;7963:25;7975:12;7963:7;:11;;:25;;;;:::i;:::-;7938:50;;8005:47;8015:7;8024:13;;;;;;;;;;;8039:12;8005:9;:47::i;:::-;8091:49;8101:7;8110:10;8122:17;8091:9;:49::i;:::-;8189:17;8193:12;8189:17;;;;;;;;;;;;;;;;;;7481:737;;;;8230:13;:11;:13::i;:::-;7194:1057;;;;;:::o;385:191::-;470:7;503:1;498;:6;;506:12;490:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;490:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;530:9;546:1;542;:5;530:17;;567:1;560:8;;;385:191;;;;;:::o;54:180::-;111:7;131:9;147:1;143;:5;131:17;;172:1;167;:6;;159:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;225:1;218:8;;;54:180;;;;:::o;584:249::-;641:7;670:1;665;:6;661:47;;;695:1;688:8;;;;661:47;720:9;736:1;732;:5;720:17;;765:1;760;756;:5;;;;;;:10;748:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:1;817:8;;;584:249;;;;;:::o;841:131::-;898:7;925:39;929:1;932;925:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;918:46;;841:131;;;;:::o;242:135::-;299:7;326:43;330:1;333;326:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;319:50;;242:135;;;;:::o;6053:471::-;6169:1;6151:20;;:6;:20;;;;6143:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6253:1;6232:23;;:9;:23;;;;6224:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6328;6350:6;6328:71;;;;;;;;;;;;;;;;;:9;:17;6338:6;6328:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6308:9;:17;6318:6;6308:17;;;;;;;;;;;;;;;:91;;;;6433:32;6458:6;6433:9;:20;6443:9;6433:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6410:9;:20;6420:9;6410:20;;;;;;;;;;;;;;;:55;;;;6498:9;6481:35;;6490:6;6481:35;;;6509:6;6481:35;;;;;;;;;;;;;;;;;;6053:471;;;:::o;2481:229::-;2575:1;2555:22;;:8;:22;;;;2547:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2665:8;2636:38;;2657:6;;;;;;;;;;;2636:38;;;;;;;;;;;;2694:8;2685:6;;:17;;;;;;;;;;;;;;;;;;2481:229;:::o;980:344::-;1065:7;1164:1;1160;:5;1167:12;1152:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1152:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:9;1207:1;1203;:5;;;;;;1191:17;;1315:1;1308:8;;;980:344;;;;;:::o
Swarm Source
bzzr://dc880ec326dd0d3fae7b07af9789f1843da07d081313ee00d015bb6959dc263a
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.