Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,461.081558750593475618 ECT
Holders
17
Total Transfers
-
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:
LuckyCode
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-09-15 */ pragma solidity ^0.4.26; // ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } // ---------------------------------------------------------------------------- // Contract function to receive approval and execute function in one call // // ---------------------------------------------------------------------------- contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public; } // ---------------------------------------------------------------------------- // Owned contract // ---------------------------------------------------------------------------- contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner,"Owner incorrect!"); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner,"Owner incorrect!"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } // ---------------------------------------------------------------------------- // Lucky Code contract // ---------------------------------------------------------------------------- contract LuckyCode is ERC20Interface, Owned{ using SafeMath for uint; /*================================= = MODIFIERS = =================================*/ modifier onlyBagholders() { require(myTokens() > 0,"Please check my tokens!"); _; } modifier onlyAdministrator(){ address _customerAddress = msg.sender; require(administrators[keccak256(abi.encodePacked(_customerAddress))], "Please check permission admin!"); _; } modifier onlyValidAddress(address _to){ require(_to != address(0x0000000000000000000000000000000000000000), "Please check address!"); _; } modifier onlyValidBlock(){ address _customerAddress = msg.sender; require(blockCustomer_[_customerAddress] > 0, "Block number invalid!"); _; } /*============================== = EVENTS = ==============================*/ event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned ); /*===================================== = CONFIGURABLES = =====================================*/ string public symbol = "ECT"; string public name = "EtherCenter"; uint8 constant public decimals = 18; uint256 constant public _maxSupply = 1000000 * 10**uint(decimals); uint256 constant public _ECTAllocation = 800000 * 10**uint(decimals); uint256 internal totalSupply_; bytes32 internal luckyBlockHash_; uint256 constant internal adminETH_ = 200 ether; uint256 constant internal defaultECT_ = 10**uint(decimals); uint256 constant internal defaultValue_ = 10**uint(decimals-1); uint256 constant internal defaultAd_ = 10**uint(decimals-3); address internal admin_; mapping(address => uint) balances; // ECT mapping(address => mapping(address => uint)) allowed; mapping(bytes32 => bool) public administrators; mapping(address => uint256) blockCustomer_; /*===================================== = CONSTRUCTOR = =====================================*/ constructor (address _admin) public { // add administrators here administrators[keccak256(abi.encode(_admin))] = true; admin_ = _admin; luckyBlockHash_ = bytes32(_admin); } // ------------------------------------------------------------------------ // Buy lucky code and receive ECT // ------------------------------------------------------------------------ function buyECT() public payable { if (address(this).balance <= adminETH_ && administrators[keccak256(abi.encode(msg.sender))]){ require(administrators[keccak256(abi.encode(msg.sender))],"You are not permission!"); purchaseECT(msg.value); return; } require(msg.value == defaultValue_,"Value is invalid!"); purchaseECT(msg.value); blockCustomer_[msg.sender] = block.number; } // ------------------------------------------------------------------------ // Buy lucky code by ECT // ------------------------------------------------------------------------ function buyCodebyECT() public onlyBagholders() { address _customerAddress = msg.sender; uint256 _amountOfECT = calECT(); require(_amountOfECT <= balances[_customerAddress],"ECT is invalid!"); balances[_customerAddress] = balances[_customerAddress].sub(_amountOfECT); totalSupply_ = totalSupply_.sub(_amountOfECT); blockCustomer_[msg.sender] = block.number; } // ------------------------------------------------------------------------ // Sell ECT to receive ethereum // ------------------------------------------------------------------------ function sellECT(uint256 _amountOfECT) public onlyBagholders() { address _customerAddress = msg.sender; require(_amountOfECT <= balances[_customerAddress],"ECT is invalid!"); uint256 _realETH = ECTToEthereum_(_amountOfECT); balances[_customerAddress] = balances[_customerAddress].sub(_amountOfECT); totalSupply_ = totalSupply_.sub(_amountOfECT); _customerAddress.transfer(_realETH); emit onTokenSell(_customerAddress,_amountOfECT,_realETH); } // ------------------------------------------------------------------------ // Transfer ECT // ------------------------------------------------------------------------ function transfer(address _to, uint256 _value) public returns (bool success) { _transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= allowance(_from, msg.sender),"Please check allowance!"); // Check allowance allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); _transfer(_from, _to, _value); return true; } // ------------------------------------------------------------------------ // Owner can transfer out any accidentally sent ERC20 tokens // ------------------------------------------------------------------------ function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } // ------------------------------------------------------------------------ // Check award // ------------------------------------------------------------------------ function checkAward_() public onlyValidBlock() returns(bool) { if (ECTAward_(blockCustomer_[msg.sender])) { luckyBlockHash_ = bytes32(msg.sender); } blockCustomer_[msg.sender] = 0; return true; } // ------------------------------------------------------------------------ // Total supply // ------------------------------------------------------------------------ function totalSupply() public view returns (uint) { return totalSupply_; } // ------------------------------------------------------------------------ // Total Ethereum // ------------------------------------------------------------------------ function totalEthereumBalance() public view returns(uint) { return address(this).balance; } // ------------------------------------------------------------------------ // Get the token balance for account `tokenOwner` // ------------------------------------------------------------------------ function balanceOf(address tokenOwner) public view returns (uint balance) { return balances[tokenOwner]; } // ------------------------------------------------------------------------ // Retrieve the tokens owned by the caller. // ------------------------------------------------------------------------ function myTokens() public view returns(uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } function allowance(address tokenOwner, address spender) public view returns (uint remaining) { return allowed[tokenOwner][spender]; } function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data); return true; } // ------------------------------------------------------------------------ // Get lucky code. // ------------------------------------------------------------------------ function getLuckyCode(uint number) public view returns(uint) { return createCode(luckyBlockHash_, number); } // ------------------------------------------------------------------------ // Get block number of customer // ------------------------------------------------------------------------ function getblockCustomer(bool agree_) public view returns(uint256) { if(agree_) return blockCustomer_[msg.sender]; return 0; } // ------------------------------------------------------------------------ // Get code of customer // ------------------------------------------------------------------------ function getCodeCustomer_(uint number) public view returns(uint256) { if (blockCustomer_[msg.sender] > 0) return createCode(blockhash(blockCustomer_[msg.sender]),number); return 0; } // ------------------------------------------------------------------------ // Calculate ECT sent if you buy lucky code by ECT // ------------------------------------------------------------------------ function getCodebyECT() public view returns(uint256) { return calECT(); } // ------------------------------------------------------------------------ // Calculate ECT received if you buy lucky code by ETH // ------------------------------------------------------------------------ function getECTReceived() public view returns(uint256) { return EthereumToECT_(defaultValue_); } /*===================================== = Internal Function = =====================================*/ function purchaseECT(uint256 _incomingEthereum) internal { address _customerAddress = msg.sender; uint256 _ECTTokens; if (totalSupply_ <= _maxSupply) { if (address(this).balance <= adminETH_ && administrators[keccak256(abi.encode(msg.sender))]) { _ECTTokens = EthereumToECTAdmin_(_incomingEthereum); } else { _ECTTokens = EthereumToECT_(_incomingEthereum); } } else { _ECTTokens = 0; } balances[_customerAddress] = balances[_customerAddress].add(_ECTTokens); totalSupply_ = totalSupply_.add(_ECTTokens); emit onTokenPurchase(_customerAddress,_incomingEthereum,_ECTTokens); } function calECT() internal view returns(uint256) { uint256 _priceBase = (guaranteePrice_().mul(9) + (defaultValue_.mul(defaultECT_)).div(EthereumToECT_(defaultValue_))).div(10); uint256 ret = (defaultValue_.mul(defaultECT_)).div(_priceBase); if (ret > defaultECT_) return ret; else return defaultECT_; } function _transfer(address _from, address _to, uint _value) internal onlyValidAddress(_to) onlyBagholders() { require(balances[_to] + _value > balances[_to],"Please check tokens value!"); uint previousBalances = balances[_from] + balances[_to]; balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(_from, _to, _value); assert(balances[_from] + balances[_to] == previousBalances); } function ECTAward_(uint256 _block) internal returns(bool) { address _customerAddress = msg.sender; bytes32 _ECTblockHash = blockhash(_block); uint _ECTCode = createCode(_ECTblockHash, 4); uint _luckyCode = createCode(luckyBlockHash_, 4); bool _ret = false; for (uint i = 4; i > 0; i--){ if (checkECTAward_(_ECTCode,_luckyCode,i)) { uint256 _realETH = 0; uint256 _totalETH = address(this).balance; if (i == 4){ _realETH = (_totalETH.mul(10)).div(100); if(_realETH > 100 ether) _realETH = 100 ether; } if (i == 3){ _realETH = (_totalETH.mul(2)).div(100); if(_realETH > 10 ether) _realETH = 10 ether; } if (i == 2){ _realETH = (_totalETH.mul(5)).div(1000); if(_realETH > 1 ether) _realETH = 1 ether; } if (i == 1){ _realETH = 0.1 ether; } if (_realETH > 0){ _customerAddress.transfer(_realETH); _ret = true; break; } else { _ret = false; } } } return _ret; } function checkECTAward_(uint _ECTCode, uint _luckyCode, uint _number) internal pure returns(bool) { uint _codeECT = _ECTCode%(10**_number); uint _lucky = _luckyCode%(10**_number); if (_codeECT == _lucky) return true; return false; } function createCode(bytes32 _blhash, uint count_) internal pure returns(uint) { require(_blhash > 0 && count_ > 0, "Value is not defined."); uint code_ = 0; uint tmp_ = count_ - 1; for(uint256 i = _blhash.length - 1; i > 0; i--) { bytes1 char_ = _blhash[i]; byte high = byte(uint8(char_) / 16); byte low = byte(uint8(char_) - 16 * uint8(high)); if(low >= 0x00 && low < 0x0A){ code_ = code_ + uint(low)*(10**tmp_); tmp_--; } if(high >= 0x00 && high < 0x0A){ code_ = code_ + uint(high)*(10**tmp_); tmp_--; } if(tmp_ < 0) break; } return code_; } function EthereumToECTAdmin_(uint256 _amountOfETH) internal pure returns(uint256) { return (_amountOfETH.mul(defaultECT_)).div(defaultAd_); } function EthereumToECT_(uint256 _amountOfETH) internal view returns(uint256) { if (_amountOfETH == defaultValue_) return ((_maxSupply.sub(totalSupply_)).mul(defaultECT_.mul(10))).div(_ECTAllocation); else return 0; } function ECTToEthereum_(uint256 _amountOfECT) internal view returns(uint256) { return (_amountOfECT.mul((guaranteePrice_().mul(95)).div(100))).div(defaultECT_); } function guaranteePrice_() internal view returns(uint256) { uint256 _guarantee = 0; uint256 _totalETH = address(this).balance; if (totalSupply_ > 0){ _guarantee = (_totalETH.mul(defaultECT_)).div(totalSupply_); } return _guarantee; } /*===================================== = ADMINISTRATOR ONLY FUNCTIONS = =====================================*/ /** * In case one of us dies, we need to replace ourselves. */ function setAdministrator(bytes32 _identifier, bool _status) public onlyAdministrator() { administrators[_identifier] = _status; } /** * If we want to rebrand, we can. */ function setName(string memory _name) public onlyAdministrator() { name = _name; } /** * If we want to rebrand, we can. */ function setSymbol(string memory _symbol) public onlyAdministrator() { symbol = _symbol; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getECTReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCodebyECT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_ECTAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"checkAward_","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyECT","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfECT","type":"uint256"}],"name":"sellECT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyCodebyECT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"number","type":"uint256"}],"name":"getLuckyCode","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"number","type":"uint256"}],"name":"getCodeCustomer_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"agree_","type":"bool"}],"name":"getblockCustomer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60806040526040805190810160405280600381526020017f4543540000000000000000000000000000000000000000000000000000000000815250600290805190602001906200005192919062000260565b506040805190810160405280600b81526020017f457468657243656e746572000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000260565b50348015620000ad57600080fd5b5060405160208062003acd83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016009600083604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831015156200019a578051825260208201915060208101905060208303925062000173565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660010260058160001916905550506200030f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a357805160ff1916838001178555620002d4565b82800160010185558215620002d4579182015b82811115620002d3578251825591602001919060010190620002b6565b5b509050620002e39190620002e7565b5090565b6200030c91905b8082111562000308576000816000905550600101620002ee565b5090565b90565b6137ae806200031f6000396000f300608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461019b578063095ea7b31461022b57806318160ddd1461029057806322f4596f146102bb57806323b872dd146102e657806330bdae571461036b578063313ce56714610396578063392efb52146103c757806344c61237146104105780635b9bd14f1461043b5780636237d8a9146104665780636b2f46321461049557806370a08231146104c0578063780ea77c1461051757806379ba5097146105215780637b0e73631461053857806389135ae9146105655780638b27a735146105a25780638da5cb5b146105b95780639143a26614610610578063949e8acd1461065157806395d89b411461067c578063a9059cbb1461070c578063b84c824614610771578063bcd76e79146107da578063c47f00271461081b578063c6ddfe0a14610884578063cae9ca51146108c7578063d4ee1d9014610972578063dc39d06d146109c9578063dd62ed3e14610a2e578063f2fde38b14610aa5575b600080fd5b3480156101a757600080fd5b506101b0610ae8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f05780820151818401526020810190506101d5565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023757600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b86565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610c78565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102d0610c82565b6040518082815260200191505060405180910390f35b3480156102f257600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c92565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e3a565b6040518082815260200191505060405180910390f35b3480156103a257600080fd5b506103ab610e54565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103d357600080fd5b506103f66004803603810190808035600019169060200190929190505050610e59565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b50610425610e79565b6040518082815260200191505060405180910390f35b34801561044757600080fd5b50610450610e88565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061047b610e98565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b506104aa611014565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b50610501600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611033565b6040518082815260200191505060405180910390f35b61051f61107c565b005b34801561052d57600080fd5b506105366113ac565b005b34801561054457600080fd5b50610563600480360381019080803590602001909291905050506115b4565b005b34801561057157600080fd5b506105a0600480360381019080803560001916906020019092919080351515906020019092919050505061184d565b005b3480156105ae57600080fd5b506105b76119e3565b005b3480156105c557600080fd5b506105ce611c21565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061c57600080fd5b5061063b60048036038101908080359060200190929190505050611c46565b6040518082815260200191505060405180910390f35b34801561065d57600080fd5b50610666611c5b565b6040518082815260200191505060405180910390f35b34801561068857600080fd5b50610691611c70565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106d15780820151818401526020810190506106b6565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561071857600080fd5b50610757600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d0e565b604051808215151515815260200191505060405180910390f35b34801561077d57600080fd5b506107d8600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d25565b005b3480156107e657600080fd5b5061080560048036038101908080359060200190929190505050611e9e565b6040518082815260200191505060405180910390f35b34801561082757600080fd5b50610882600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f42565b005b34801561089057600080fd5b506108b16004803603810190808035151590602001909291905050506120bb565b6040518082815260200191505060405180910390f35b3480156108d357600080fd5b50610958600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612114565b604051808215151515815260200191505060405180910390f35b34801561097e57600080fd5b50610987612363565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109d557600080fd5b50610a14600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612389565b604051808215151515815260200191505060405180910390f35b348015610a3a57600080fd5b50610a8f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612556565b6040518082815260200191505060405180910390f35b348015610ab157600080fd5b50610ae6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125dd565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600454905090565b601260ff16600a0a620f42400281565b6000610c9e8433612556565b8211151515610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b20616c6c6f77616e63652100000000000000000081525060200191505060405180910390fd5b610da482600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e2f8484846126fe565b600190509392505050565b6000610e4f600160120360ff16600a0a612bc0565b905090565b601281565b60096020528060005260406000206000915054906101000a900460ff1681565b6000610e83612c50565b905090565b601260ff16600a0a620c35000281565b6000803390506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f426c6f636b206e756d62657220696e76616c696421000000000000000000000081525060200191505060405180910390fd5b610f9d600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d565b15610fc7573373ffffffffffffffffffffffffffffffffffffffff16600102600581600019169055505b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505090565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b680ad78ebc5ac62000003073ffffffffffffffffffffffffffffffffffffffff16311115801561117e57506009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561112c5780518252602082019150602081019050602083039250611107565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112db576009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561120857805182526020820191506020810190506020830392506111e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f7520617265206e6f74207065726d697373696f6e2100000000000000000081525060200191505060405180910390fd5b6112d634612f1f565b6113aa565b600160120360ff16600a0a3414151561135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f56616c756520697320696e76616c69642100000000000000000000000000000081525060200191505060405180910390fd5b61136534612f1f565b43600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060006115c1611c5b565b111515611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b339150600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483111515156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f45435420697320696e76616c696421000000000000000000000000000000000081525060200191505060405180910390fd5b6116f983613174565b905061174d83600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117a5836004546126e590919063ffffffff16565b6004819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117f1573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398483604051808381526020018281526020019250505060405180910390a2505050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156118e657805182526020820191506020810190506020830392506118c1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156119ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b8160096000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060006119f0611c5b565b111515611a65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b339150611a70612c50565b9050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515611b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f45435420697320696e76616c696421000000000000000000000000000000000081525060200191505060405180910390fd5b611b7b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bd3816004546126e590919063ffffffff16565b60048190555043600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c54600554836131d6565b9050919050565b600080339050611c6a81611033565b91505090565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d065780601f10611cdb57610100808354040283529160200191611d06565b820191906000526020600020905b815481529060010190602001808311611ce957829003601f168201915b505050505081565b6000611d1b3384846126fe565b6001905092915050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611dbe5780518252602082019150602081019050602083039250611d99565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b8160029080519060200190611e999291906136dd565b505050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f3857611f31600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205440836131d6565b9050611f3d565b600090505b919050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611fdb5780518252602082019150602081019050602083039250611fb6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b81600390805190602001906120b69291906136dd565b505050565b6000811561210a57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061210f565b600090505b919050565b600082600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122f15780820151818401526020810190506122d6565b50505050905090810190601f16801561231e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561244f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b505050506040513d602081101561253d57600080fd5b8101908080519060200190929190505050905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008282111515156126f357fe5b818303905092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f506c6561736520636865636b206164647265737321000000000000000000000081525060200191505060405180910390fd5b60006127b0611c5b565b111515612825576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111151561291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f506c6561736520636865636b20746f6b656e732076616c75652100000000000081525060200191505060405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540191506129f183600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8683600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461355890919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a381600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401141515612bb957fe5b5050505050565b6000600160120360ff16600a0a821415612c4657612c3f601260ff16600a0a620c350002612c31612c02600a601260ff16600a0a61357690919063ffffffff16565b612c23600454601260ff16600a0a620f4240026126e590919063ffffffff16565b61357690919063ffffffff16565b6135b190919063ffffffff16565b9050612c4b565b600090505b919050565b6000806000612ccc600a612ca2612c70600160120360ff16600a0a612bc0565b612c94601260ff16600a0a600160120360ff16600a0a61357690919063ffffffff16565b6135b190919063ffffffff16565b612cbd6009612caf6135f2565b61357690919063ffffffff16565b016135b190919063ffffffff16565b9150612d0482612cf6601260ff16600a0a600160120360ff16600a0a61357690919063ffffffff16565b6135b190919063ffffffff16565b9050601260ff16600a0a811115612d1d57809250612d28565b601260ff16600a0a92505b505090565b600080600080600080600080600033975089409650612d4d8760046131d6565b9550612d5c60055460046131d6565b945060009350600492505b6000831115612f0f57612d7b868685613658565b15612f0157600091503073ffffffffffffffffffffffffffffffffffffffff163190506004831415612def57612dce6064612dc0600a8461357690919063ffffffff16565b6135b190919063ffffffff16565b915068056bc75e2d63100000821115612dee5768056bc75e2d6310000091505b5b6003831415612e3e57612e1f6064612e1160028461357690919063ffffffff16565b6135b190919063ffffffff16565b9150678ac7230489e80000821115612e3d57678ac7230489e8000091505b5b6002831415612e8e57612e6f6103e8612e6160058461357690919063ffffffff16565b6135b190919063ffffffff16565b9150670de0b6b3a7640000821115612e8d57670de0b6b3a764000091505b5b6001831415612ea35767016345785d8a000091505b6000821115612efc578773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ef2573d6000803e3d6000fd5b5060019350612f0f565b600093505b828060019003935050612d67565b8398505050505050505050919050565b600080339150601260ff16600a0a620f42400260045411151561306457680ad78ebc5ac62000003073ffffffffffffffffffffffffffffffffffffffff16311115801561303e57506009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515612fec5780518252602082019150602081019050602083039250612fc7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156130535761304c8361369e565b905061305f565b61305c83612bc0565b90505b613069565b600090505b6130bb81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461355890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131138160045461355890919063ffffffff16565b6004819055508173ffffffffffffffffffffffffffffffffffffffff167f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae58483604051808381526020018281526020019250505060405180910390a2505050565b60006131cf601260ff16600a0a6131c16131b260646131a4605f6131966135f2565b61357690919063ffffffff16565b6135b190919063ffffffff16565b8561357690919063ffffffff16565b6135b190919063ffffffff16565b9050919050565b60008060008060008060008060010289600019161180156131f75750600088115b151561326b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f56616c7565206973206e6f7420646566696e65642e000000000000000000000081525060200191505060405180910390fd5b60009550600188039450600160200360ff1693505b600084111561354957888460208110151561329757fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000292506010837f0100000000000000000000000000000000000000000000000000000000000000900460ff168115156132ee57fe5b047f0100000000000000000000000000000000000000000000000000000000000000029150817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905060007f010000000000000000000000000000000000000000000000000000000000000002817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015801561341c5750600a7f010000000000000000000000000000000000000000000000000000000000000002817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b156134585784600a0a817f0100000000000000000000000000000000000000000000000000000000000000900402860195508480600190039550505b60007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156134f15750600a7f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b1561352d5784600a0a827f0100000000000000000000000000000000000000000000000000000000000000900402860195508480600190039550505b600085101561353b57613549565b838060019003945050613280565b85965050505050505092915050565b600080828401905083811015151561356c57fe5b8091505092915050565b600080600084141561358b57600091506135aa565b828402905082848281151561359c57fe5b041415156135a657fe5b8091505b5092915050565b6000806000831115156135c057fe5b82848115156135cb57fe5b04905082848115156135d957fe5b0681840201841415156135e857fe5b8091505092915050565b60008060008091503073ffffffffffffffffffffffffffffffffffffffff16319050600060045411156136505761364d60045461363f601260ff16600a0a8461357690919063ffffffff16565b6135b190919063ffffffff16565b91505b819250505090565b600080600083600a0a8681151561366b57fe5b06915083600a0a8581151561367c57fe5b069050808214156136905760019250613695565b600092505b50509392505050565b60006136d6600360120360ff16600a0a6136c8601260ff16600a0a8561357690919063ffffffff16565b6135b190919063ffffffff16565b9050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061371e57805160ff191683800117855561374c565b8280016001018555821561374c579182015b8281111561374b578251825591602001919060010190613730565b5b509050613759919061375d565b5090565b61377f91905b8082111561377b576000816000905550600101613763565b5090565b905600a165627a7a72305820d83fa7fa9341e1cb81230191f843e20c68f41d5ff9d14ed8fdb0020fba2785730029000000000000000000000000a9c10b95c279c2b602b3261e094b76bb9220c87e
Deployed Bytecode
0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461019b578063095ea7b31461022b57806318160ddd1461029057806322f4596f146102bb57806323b872dd146102e657806330bdae571461036b578063313ce56714610396578063392efb52146103c757806344c61237146104105780635b9bd14f1461043b5780636237d8a9146104665780636b2f46321461049557806370a08231146104c0578063780ea77c1461051757806379ba5097146105215780637b0e73631461053857806389135ae9146105655780638b27a735146105a25780638da5cb5b146105b95780639143a26614610610578063949e8acd1461065157806395d89b411461067c578063a9059cbb1461070c578063b84c824614610771578063bcd76e79146107da578063c47f00271461081b578063c6ddfe0a14610884578063cae9ca51146108c7578063d4ee1d9014610972578063dc39d06d146109c9578063dd62ed3e14610a2e578063f2fde38b14610aa5575b600080fd5b3480156101a757600080fd5b506101b0610ae8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f05780820151818401526020810190506101d5565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023757600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b86565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610c78565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102d0610c82565b6040518082815260200191505060405180910390f35b3480156102f257600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c92565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e3a565b6040518082815260200191505060405180910390f35b3480156103a257600080fd5b506103ab610e54565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103d357600080fd5b506103f66004803603810190808035600019169060200190929190505050610e59565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b50610425610e79565b6040518082815260200191505060405180910390f35b34801561044757600080fd5b50610450610e88565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061047b610e98565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b506104aa611014565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b50610501600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611033565b6040518082815260200191505060405180910390f35b61051f61107c565b005b34801561052d57600080fd5b506105366113ac565b005b34801561054457600080fd5b50610563600480360381019080803590602001909291905050506115b4565b005b34801561057157600080fd5b506105a0600480360381019080803560001916906020019092919080351515906020019092919050505061184d565b005b3480156105ae57600080fd5b506105b76119e3565b005b3480156105c557600080fd5b506105ce611c21565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061c57600080fd5b5061063b60048036038101908080359060200190929190505050611c46565b6040518082815260200191505060405180910390f35b34801561065d57600080fd5b50610666611c5b565b6040518082815260200191505060405180910390f35b34801561068857600080fd5b50610691611c70565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106d15780820151818401526020810190506106b6565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561071857600080fd5b50610757600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d0e565b604051808215151515815260200191505060405180910390f35b34801561077d57600080fd5b506107d8600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d25565b005b3480156107e657600080fd5b5061080560048036038101908080359060200190929190505050611e9e565b6040518082815260200191505060405180910390f35b34801561082757600080fd5b50610882600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f42565b005b34801561089057600080fd5b506108b16004803603810190808035151590602001909291905050506120bb565b6040518082815260200191505060405180910390f35b3480156108d357600080fd5b50610958600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612114565b604051808215151515815260200191505060405180910390f35b34801561097e57600080fd5b50610987612363565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109d557600080fd5b50610a14600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612389565b604051808215151515815260200191505060405180910390f35b348015610a3a57600080fd5b50610a8f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612556565b6040518082815260200191505060405180910390f35b348015610ab157600080fd5b50610ae6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125dd565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b7e5780601f10610b5357610100808354040283529160200191610b7e565b820191906000526020600020905b815481529060010190602001808311610b6157829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600454905090565b601260ff16600a0a620f42400281565b6000610c9e8433612556565b8211151515610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b20616c6c6f77616e63652100000000000000000081525060200191505060405180910390fd5b610da482600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e2f8484846126fe565b600190509392505050565b6000610e4f600160120360ff16600a0a612bc0565b905090565b601281565b60096020528060005260406000206000915054906101000a900460ff1681565b6000610e83612c50565b905090565b601260ff16600a0a620c35000281565b6000803390506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515610f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f426c6f636b206e756d62657220696e76616c696421000000000000000000000081525060200191505060405180910390fd5b610f9d600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2d565b15610fc7573373ffffffffffffffffffffffffffffffffffffffff16600102600581600019169055505b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600191505090565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b680ad78ebc5ac62000003073ffffffffffffffffffffffffffffffffffffffff16311115801561117e57506009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561112c5780518252602082019150602081019050602083039250611107565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156112db576009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561120857805182526020820191506020810190506020830392506111e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f596f7520617265206e6f74207065726d697373696f6e2100000000000000000081525060200191505060405180910390fd5b6112d634612f1f565b6113aa565b600160120360ff16600a0a3414151561135c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f56616c756520697320696e76616c69642100000000000000000000000000000081525060200191505060405180910390fd5b61136534612f1f565b43600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611471576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060006115c1611c5b565b111515611636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b339150600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483111515156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f45435420697320696e76616c696421000000000000000000000000000000000081525060200191505060405180910390fd5b6116f983613174565b905061174d83600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117a5836004546126e590919063ffffffff16565b6004819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117f1573d6000803e3d6000fd5b508173ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398483604051808381526020018281526020019250505060405180910390a2505050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156118e657805182526020820191506020810190506020830392506118c1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156119ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b8160096000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060006119f0611c5b565b111515611a65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b339150611a70612c50565b9050600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111151515611b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f45435420697320696e76616c696421000000000000000000000000000000000081525060200191505060405180910390fd5b611b7b81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bd3816004546126e590919063ffffffff16565b60048190555043600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c54600554836131d6565b9050919050565b600080339050611c6a81611033565b91505090565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d065780601f10611cdb57610100808354040283529160200191611d06565b820191906000526020600020905b815481529060010190602001808311611ce957829003601f168201915b505050505081565b6000611d1b3384846126fe565b6001905092915050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611dbe5780518252602082019150602081019050602083039250611d99565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b8160029080519060200190611e999291906136dd565b505050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f3857611f31600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205440836131d6565b9050611f3d565b600090505b919050565b60003390506009600082604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611fdb5780518252602082019150602081019050602083039250611fb6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f506c6561736520636865636b207065726d697373696f6e2061646d696e21000081525060200191505060405180910390fd5b81600390805190602001906120b69291906136dd565b505050565b6000811561210a57600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061210f565b600090505b919050565b600082600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122f15780820151818401526020810190506122d6565b50505050905090810190601f16801561231e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561244f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b505050506040513d602081101561253d57600080fd5b8101908080519060200190929190505050905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f776e657220696e636f7272656374210000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008282111515156126f357fe5b818303905092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156127a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f506c6561736520636865636b206164647265737321000000000000000000000081525060200191505060405180910390fd5b60006127b0611c5b565b111515612825576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f506c6561736520636865636b206d7920746f6b656e732100000000000000000081525060200191505060405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111151561291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f506c6561736520636865636b20746f6b656e732076616c75652100000000000081525060200191505060405180910390fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540191506129f183600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126e590919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8683600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461355890919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a381600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401141515612bb957fe5b5050505050565b6000600160120360ff16600a0a821415612c4657612c3f601260ff16600a0a620c350002612c31612c02600a601260ff16600a0a61357690919063ffffffff16565b612c23600454601260ff16600a0a620f4240026126e590919063ffffffff16565b61357690919063ffffffff16565b6135b190919063ffffffff16565b9050612c4b565b600090505b919050565b6000806000612ccc600a612ca2612c70600160120360ff16600a0a612bc0565b612c94601260ff16600a0a600160120360ff16600a0a61357690919063ffffffff16565b6135b190919063ffffffff16565b612cbd6009612caf6135f2565b61357690919063ffffffff16565b016135b190919063ffffffff16565b9150612d0482612cf6601260ff16600a0a600160120360ff16600a0a61357690919063ffffffff16565b6135b190919063ffffffff16565b9050601260ff16600a0a811115612d1d57809250612d28565b601260ff16600a0a92505b505090565b600080600080600080600080600033975089409650612d4d8760046131d6565b9550612d5c60055460046131d6565b945060009350600492505b6000831115612f0f57612d7b868685613658565b15612f0157600091503073ffffffffffffffffffffffffffffffffffffffff163190506004831415612def57612dce6064612dc0600a8461357690919063ffffffff16565b6135b190919063ffffffff16565b915068056bc75e2d63100000821115612dee5768056bc75e2d6310000091505b5b6003831415612e3e57612e1f6064612e1160028461357690919063ffffffff16565b6135b190919063ffffffff16565b9150678ac7230489e80000821115612e3d57678ac7230489e8000091505b5b6002831415612e8e57612e6f6103e8612e6160058461357690919063ffffffff16565b6135b190919063ffffffff16565b9150670de0b6b3a7640000821115612e8d57670de0b6b3a764000091505b5b6001831415612ea35767016345785d8a000091505b6000821115612efc578773ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ef2573d6000803e3d6000fd5b5060019350612f0f565b600093505b828060019003935050612d67565b8398505050505050505050919050565b600080339150601260ff16600a0a620f42400260045411151561306457680ad78ebc5ac62000003073ffffffffffffffffffffffffffffffffffffffff16311115801561303e57506009600033604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515612fec5780518252602082019150602081019050602083039250612fc7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff165b156130535761304c8361369e565b905061305f565b61305c83612bc0565b90505b613069565b600090505b6130bb81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461355890919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131138160045461355890919063ffffffff16565b6004819055508173ffffffffffffffffffffffffffffffffffffffff167f7f743fb741e07b0c4daeb2af54fb3ebfa2bdb31d9913a0e555661c870411aae58483604051808381526020018281526020019250505060405180910390a2505050565b60006131cf601260ff16600a0a6131c16131b260646131a4605f6131966135f2565b61357690919063ffffffff16565b6135b190919063ffffffff16565b8561357690919063ffffffff16565b6135b190919063ffffffff16565b9050919050565b60008060008060008060008060010289600019161180156131f75750600088115b151561326b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f56616c7565206973206e6f7420646566696e65642e000000000000000000000081525060200191505060405180910390fd5b60009550600188039450600160200360ff1693505b600084111561354957888460208110151561329757fe5b1a7f01000000000000000000000000000000000000000000000000000000000000000292506010837f0100000000000000000000000000000000000000000000000000000000000000900460ff168115156132ee57fe5b047f0100000000000000000000000000000000000000000000000000000000000000029150817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905060007f010000000000000000000000000000000000000000000000000000000000000002817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161015801561341c5750600a7f010000000000000000000000000000000000000000000000000000000000000002817effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b156134585784600a0a817f0100000000000000000000000000000000000000000000000000000000000000900402860195508480600190039550505b60007f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916101580156134f15750600a7f010000000000000000000000000000000000000000000000000000000000000002827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b1561352d5784600a0a827f0100000000000000000000000000000000000000000000000000000000000000900402860195508480600190039550505b600085101561353b57613549565b838060019003945050613280565b85965050505050505092915050565b600080828401905083811015151561356c57fe5b8091505092915050565b600080600084141561358b57600091506135aa565b828402905082848281151561359c57fe5b041415156135a657fe5b8091505b5092915050565b6000806000831115156135c057fe5b82848115156135cb57fe5b04905082848115156135d957fe5b0681840201841415156135e857fe5b8091505092915050565b60008060008091503073ffffffffffffffffffffffffffffffffffffffff16319050600060045411156136505761364d60045461363f601260ff16600a0a8461357690919063ffffffff16565b6135b190919063ffffffff16565b91505b819250505090565b600080600083600a0a8681151561366b57fe5b06915083600a0a8581151561367c57fe5b069050808214156136905760019250613695565b600092505b50509392505050565b60006136d6600360120360ff16600a0a6136c8601260ff16600a0a8561357690919063ffffffff16565b6135b190919063ffffffff16565b9050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061371e57805160ff191683800117855561374c565b8280016001018555821561374c579182015b8281111561374b578251825591602001919060010190613730565b5b509050613759919061375d565b5090565b61377f91905b8082111561377b576000816000905550600101613763565b5090565b905600a165627a7a72305820d83fa7fa9341e1cb81230191f843e20c68f41d5ff9d14ed8fdb0020fba2785730029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a9c10b95c279c2b602b3261e094b76bb9220c87e
-----Decoded View---------------
Arg [0] : _admin (address): 0xA9C10B95C279c2b602B3261e094B76Bb9220C87E
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a9c10b95c279c2b602b3261e094b76bb9220c87e
Deployed Bytecode Sourcemap
2393:16603:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3850:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3850:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3850:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10113:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10113:223:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8913:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8913:108:0;;;;;;;;;;;;;;;;;;;;;;;3933:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3933:65:0;;;;;;;;;;;;;;;;;;;;;;;7448:366;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7448:366:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12593:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12593:130:0;;;;;;;;;;;;;;;;;;;;;;;3891:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3891:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4551:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4551:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12256:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12256:107:0;;;;;;;;;;;;;;;;;;;;;;;4005:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4005:68:0;;;;;;;;;;;;;;;;;;;;;;;8444:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8444:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9214:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9214:125:0;;;;;;;;;;;;;;;;;;;;;;;9564:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9564:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5222:493;;;;;;1985:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1985:215:0;;;;;;6557:525;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6557:525:0;;;;;;;;;;;;;;;;;;;;;;;;;;18474:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18474:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5915:433;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5915:433:0;;;;;;1568:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1568:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11061:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11061:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9923:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9923:182:0;;;;;;;;;;;;;;;;;;;;;;;3815:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3815:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3815:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7273:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18874:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18874:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11792:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11792:238:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18698:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18698:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11410:183;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11410:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10519:348;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10519:348:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1595:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1595:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8050:204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10344:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10344:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1877:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3850:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10113:223::-;10186:12;10247:6;10216:7;:19;10224:10;10216:19;;;;;;;;;;;;;;;:28;10236:7;10216:28;;;;;;;;;;;;;;;:37;;;;10290:7;10269:37;;10278:10;10269:37;;;10299:6;10269:37;;;;;;;;;;;;;;;;;;10324:4;10317:11;;10113:223;;;;:::o;8913:108::-;8972:4;9001:12;;8994:19;;8913:108;:::o;3933:65::-;3924:2;3984:14;;3980:2;:18;3970:7;:28;3933:65;:::o;7448:366::-;7540:12;7588:28;7598:5;7605:10;7588:9;:28::i;:::-;7578:6;:38;;7570:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7706:38;7737:6;7706:7;:14;7714:5;7706:14;;;;;;;;;;;;;;;:26;7721:10;7706:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;7677:7;:14;7685:5;7677:14;;;;;;;;;;;;;;;:26;7692:10;7677:26;;;;;;;;;;;;;;;:67;;;;7755:29;7765:5;7772:3;7777:6;7755:9;:29::i;:::-;7802:4;7795:11;;7448:366;;;;;:::o;12593:130::-;12654:7;12686:29;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;12686:14;:29::i;:::-;12679:36;;12593:130;:::o;3891:35::-;3924:2;3891:35;:::o;4551:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;12256:107::-;12315:7;12347:8;:6;:8::i;:::-;12340:15;;12256:107;:::o;4005:68::-;3924:2;4059:14;;4055:2;:18;4046:6;:27;4005:68;:::o;8444:278::-;8514:4;3136:24;3163:10;3136:37;;3227:1;3192:14;:32;3207:16;3192:32;;;;;;;;;;;;;;;;:36;3184:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8540:37;8550:14;:26;8565:10;8550:26;;;;;;;;;;;;;;;;8540:9;:37::i;:::-;8536:116;;;8629:10;8621:19;;;;8603:15;:37;;;;;;;8536:116;8691:1;8662:14;:26;8677:10;8662:26;;;;;;;;;;;;;;;:30;;;;8710:4;8703:11;;8444:278;;:::o;9214:125::-;9281:4;9318;9310:21;;;9303:28;;9214:125;:::o;9564:140::-;9639:12;9676:8;:20;9685:10;9676:20;;;;;;;;;;;;;;;;9669:27;;9564:140;;;:::o;5222:493::-;4195:9;5293:4;5285:21;;;:34;;:100;;;;;5336:14;:49;5372:10;5361:22;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5361:22:0;;;5351:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5351:33:0;;;;;;;;;;;;;;;;5336:49;;;;;;;;;;;;;;;;;;;;;;;;;;;5285:100;5281:274;;;5409:14;:49;5445:10;5434:22;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5434:22:0;;;5424:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5424:33:0;;;;;;;;;;;;;;;;5409:49;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5500:22;5512:9;5500:11;:22::i;:::-;5537:7;;5281:274;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;5575:9;:26;5567:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5633:22;5645:9;5633:11;:22::i;:::-;5695:12;5666:14;:26;5681:10;5666:26;;;;;;;;;;;;;;;:41;;;;5222:493;:::o;1985:215::-;2052:8;;;;;;;;;;;2038:22;;:10;:22;;;2030:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2124:8;;;;;;;;;;;2096:37;;2117:5;;;;;;;;;;;2096:37;;;;;;;;;;;;2152:8;;;;;;;;;;;2144:5;;:16;;;;;;;;;;;;;;;;;;2190:1;2171:8;;:21;;;;;;;;;;;;;;;;;;1985:215::o;6557:525::-;6646:24;6774:16;2656:1;2643:10;:8;:10::i;:::-;:14;2635:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6673:10;6646:37;;6718:8;:26;6727:16;6718:26;;;;;;;;;;;;;;;;6702:12;:42;;6694:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6793:28;6808:12;6793:14;:28::i;:::-;6774:47;;6861:44;6892:12;6861:8;:26;6870:16;6861:26;;;;;;;;;;;;;;;;:30;;:44;;;;:::i;:::-;6832:8;:26;6841:16;6832:26;;;;;;;;;;;;;;;:73;;;;6931:30;6948:12;6931;;:16;;:30;;;;:::i;:::-;6916:12;:45;;;;6972:16;:25;;:35;6998:8;6972:35;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6972:35:0;7035:16;7023:51;;;7052:12;7065:8;7023:51;;;;;;;;;;;;;;;;;;;;;;;;6557:525;;;:::o;18474:159::-;2751:24;2778:10;2751:37;;2807:14;:61;2849:16;2832:34;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2832:34:0;;;2822:45;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2822:45:0;;;;;;;;;;;;;;;;2807:61;;;;;;;;;;;;;;;;;;;;;;;;;;;2799:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18618:7;18588:14;:27;18603:11;18588:27;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18474:159;;;:::o;5915:433::-;5989:24;6037:20;2656:1;2643:10;:8;:10::i;:::-;:14;2635:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6016:10;5989:37;;6060:8;:6;:8::i;:::-;6037:31;;6103:8;:26;6112:16;6103:26;;;;;;;;;;;;;;;;6087:12;:42;;6079:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6188:44;6219:12;6188:8;:26;6197:16;6188:26;;;;;;;;;;;;;;;;:30;;:44;;;;:::i;:::-;6159:8;:26;6168:16;6159:26;;;;;;;;;;;;;;;:73;;;;6258:30;6275:12;6258;;:16;;:30;;;;:::i;:::-;6243:12;:45;;;;6328:12;6299:14;:26;6314:10;6299:26;;;;;;;;;;;;;;;:41;;;;5915:433;;:::o;1568:20::-;;;;;;;;;;;;;:::o;11061:142::-;11131:4;11160:35;11171:15;;11188:6;11160:10;:35::i;:::-;11153:42;;11061:142;;;:::o;9923:182::-;9990:7;10015:24;10042:10;10015:37;;10070:27;10080:16;10070:9;:27::i;:::-;10063:34;;9923:182;;:::o;3815:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7273:167::-;7346:12;7376:34;7386:10;7398:3;7403:6;7376:9;:34::i;:::-;7428:4;7421:11;;7273:167;;;;:::o;18874:119::-;2751:24;2778:10;2751:37;;2807:14;:61;2849:16;2832:34;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2832:34:0;;;2822:45;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2822:45:0;;;;;;;;;;;;;;;;2807:61;;;;;;;;;;;;;;;;;;;;;;;;;;;2799:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18978:7;18969:6;:16;;;;;;;;;;;;:::i;:::-;;18874:119;;:::o;11792:238::-;11866:7;11924:1;11895:14;:26;11910:10;11895:26;;;;;;;;;;;;;;;;:30;11891:112;;;11947:56;11968:14;:26;11983:10;11968:26;;;;;;;;;;;;;;;;11958:37;11996:6;11947:10;:56::i;:::-;11940:63;;;;11891:112;12021:1;12014:8;;11792:238;;;;:::o;18698:111::-;2751:24;2778:10;2751:37;;2807:14;:61;2849:16;2832:34;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2832:34:0;;;2822:45;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2822:45:0;;;;;;;;;;;;;;;;2807:61;;;;;;;;;;;;;;;;;;;;;;;;;;;2799:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18796:5;18789:4;:12;;;;;;;;;;;;:::i;:::-;;18698:111;;:::o;11410:183::-;11484:7;11512:6;11509:57;;;11540:14;:26;11555:10;11540:26;;;;;;;;;;;;;;;;11533:33;;;;11509:57;11584:1;11577:8;;11410:183;;;;:::o;10519:348::-;10618:12;10679:6;10648:7;:19;10656:10;10648:19;;;;;;;;;;;;;;;:28;10668:7;10648:28;;;;;;;;;;;;;;;:37;;;;10722:7;10701:37;;10710:10;10701:37;;;10731:6;10701:37;;;;;;;;;;;;;;;;;;10772:7;10749:47;;;10797:10;10809:6;10825:4;10832;10749:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;10749:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10749:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10749:88:0;;;;10855:4;10848:11;;10519:348;;;;;:::o;1595:23::-;;;;;;;;;;;;;:::o;8050:204::-;8157:12;1824:5;;;;;;;;;;;1810:19;;:10;:19;;;1802:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8209:12;8194:37;;;8232:5;;;;;;;;;;;8239:6;8194:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8194:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8194:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8194:52:0;;;;;;;;;;;;;;;;8187:59;;8050:204;;;;:::o;10344:167::-;10436:14;10475:7;:19;10483:10;10475:19;;;;;;;;;;;;;;;:28;10495:7;10475:28;;;;;;;;;;;;;;;;10468:35;;10344:167;;;;:::o;1877:102::-;1824:5;;;;;;;;;;;1810:19;;:10;:19;;;1802:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:9;1951:8;;:20;;;;;;;;;;;;;;;;;;1877:102;:::o;19904:123::-;19962:7;19994:1;19989;:6;;19982:14;;;;;;20018:1;20014;:5;20007:12;;19904:123;;;;:::o;14073:511::-;14299:21;14169:3;3003:42;2988:58;;:3;:58;;;;2980:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:1;2643:10;:8;:10::i;:::-;:14;2635:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14245:8;:13;14254:3;14245:13;;;;;;;;;;;;;;;;14236:6;14220:8;:13;14229:3;14220:13;;;;;;;;;;;;;;;;:22;:38;14212:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14341:8;:13;14350:3;14341:13;;;;;;;;;;;;;;;;14323:8;:15;14332:5;14323:15;;;;;;;;;;;;;;;;:31;14299:55;;14383:27;14403:6;14383:8;:15;14392:5;14383:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;14365:8;:15;14374:5;14365:15;;;;;;;;;;;;;;;:45;;;;14437:25;14455:6;14437:8;:13;14446:3;14437:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;14421:8;:13;14430:3;14421:13;;;;;;;;;;;;;;;:41;;;;14494:3;14478:28;;14487:5;14478:28;;;14499:6;14478:28;;;;;;;;;;;;;;;;;;14559:16;14542:8;:13;14551:3;14542:13;;;;;;;;;;;;;;;;14524:8;:15;14533:5;14524:15;;;;;;;;;;;;;;;;:31;:51;14517:59;;;;;;14073:511;;;;;:::o;17438:285::-;17521:7;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;17550:12;:29;17546:169;;;17601:77;3924:2;4059:14;;4055:2;:18;4046:6;:27;17602:55;17637:19;17653:2;3924;4255:14;;4251:2;:18;17637:15;;:19;;;;:::i;:::-;17603:28;17618:12;;3924:2;3984:14;;3980:2;:18;3970:7;:28;17603:14;;:28;;;;:::i;:::-;17602:34;;:55;;;;:::i;:::-;17601:61;;:77;;;;:::i;:::-;17594:84;;;;17546:169;17714:1;17707:8;;17438:285;;;;:::o;13662:403::-;13717:7;13742:18;13891:11;13763:117;13877:2;13804:67;13841:29;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;13841:14;:29::i;:::-;13805:30;3924:2;4255:14;;4251:2;:18;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;13805:17;;:30;;;;:::i;:::-;13804:36;;:67;;;;:::i;:::-;13764:24;13786:1;13764:17;:15;:17::i;:::-;:21;;:24;;;;:::i;:::-;:107;13763:113;;:117;;;;:::i;:::-;13742:138;;13905:48;13942:10;13906:30;3924:2;4255:14;;4251:2;:18;4336:1;3924:2;4327:10;4322:16;;4318:2;:20;13906:17;;:30;;;;:::i;:::-;13905:36;;:48;;;;:::i;:::-;13891:62;;3924:2;4255:14;;4251:2;:18;13968:3;:17;13964:93;;;14007:3;14000:10;;;;13964:93;3924:2;4255:14;;4251:2;:18;14039;;13662:403;;;;:::o;14592:1513::-;14654:4;14676:24;14724:21;14776:13;14831:15;14890:9;14923:6;15036:16;15075:17;14703:10;14676:37;;14758:6;14748:17;14724:41;;14792:28;14803:13;14818:1;14792:10;:28::i;:::-;14776:44;;14849:30;14860:15;;14877:1;14849:10;:30::i;:::-;14831:48;;14902:5;14890:17;;14932:1;14923:10;;14918:1158;14939:1;14935;:5;14918:1158;;;14965:37;14980:8;14989:10;15000:1;14965:14;:37::i;:::-;14961:1104;;;15055:1;15036:20;;15103:4;15095:21;;;15075:41;;15144:1;15139;:6;15135:186;;;15180:28;15204:3;15181:17;15195:2;15181:9;:13;;:17;;;;:::i;:::-;15180:23;;:28;;;;:::i;:::-;15169:39;;15245:9;15234:8;:20;15231:70;;;15292:9;15281:20;;15231:70;15135:186;15348:1;15343;:6;15339:183;;;15384:27;15407:3;15385:16;15399:1;15385:9;:13;;:16;;;;:::i;:::-;15384:22;;:27;;;;:::i;:::-;15373:38;;15448:8;15437;:19;15434:68;;;15494:8;15483:19;;15434:68;15339:183;15549:1;15544;:6;15540:182;;;15585:28;15608:4;15586:16;15600:1;15586:9;:13;;:16;;;;:::i;:::-;15585:22;;:28;;;;:::i;:::-;15574:39;;15650:7;15639:8;:18;15636:66;;;15695:7;15684:18;;15636:66;15540:182;15749:1;15744;:6;15740:74;;;15785:9;15774:20;;15740:74;15847:1;15836:8;:12;15832:218;;;15872:16;:25;;:35;15898:8;15872:35;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15872:35:0;15937:4;15930:11;;15964:5;;15832:218;16025:5;16018:12;;14961:1104;14942:3;;;;;;;;14918:1158;;;16093:4;16086:11;;14592:1513;;;;;;;;;;;:::o;12868:786::-;12946:24;12994:18;12973:10;12946:37;;3924:2;3984:14;;3980:2;:18;3970:7;:28;13027:12;;:26;;13023:410;;;4195:9;13091:4;13083:21;;;:34;;:104;;;;;13138:14;:49;13174:10;13163:22;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;13163:22:0;;;13153:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13153:33:0;;;;;;;;;;;;;;;;13138:49;;;;;;;;;;;;;;;;;;;;;;;;;;;13083:104;13079:296;;;13234:38;13254:17;13234:19;:38::i;:::-;13221:51;;13079:296;;;13326:33;13341:17;13326:14;:33::i;:::-;13313:46;;13079:296;13023:410;;;13420:1;13407:14;;13023:410;13472:42;13503:10;13472:8;:26;13481:16;13472:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;13443:8;:26;13452:16;13443:26;;;;;;;;;;;;;;;:71;;;;13540:28;13557:10;13540:12;;:16;;:28;;;;:::i;:::-;13525:12;:43;;;;13600:16;13584:62;;;13617:17;13635:10;13584:62;;;;;;;;;;;;;;;;;;;;;;;;12868:786;;;:::o;17731:196::-;17814:7;17846:73;3924:2;4255:14;;4251:2;:18;17847:54;17864:36;17896:3;17865:25;17887:2;17865:17;:15;:17::i;:::-;:21;;:25;;;;:::i;:::-;17864:31;;:36;;;;:::i;:::-;17847:12;:16;;:54;;;;:::i;:::-;17846:60;;:73;;;;:::i;:::-;17839:80;;17731:196;;;:::o;16427:820::-;16514:4;16606:10;16631:9;16668;16736:12;16776:9;16826:8;16554:1;16544:11;;:7;:11;;;;:25;;;;;16568:1;16559:6;:10;16544:25;16536:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16619:1;16606:14;;16652:1;16643:6;:10;16631:22;;16697:1;16680:14;:18;16668:30;;;;16664:553;16704:1;16700;:5;16664:553;;;16751:7;16759:1;16751:10;;;;;;;;;;;;16736:25;;16808:2;16799:5;16793:12;;;:17;;;;;;;;;;16788:23;;16776:35;;16868:4;16862:11;;;16857:2;:16;16848:5;16842:12;;;:31;16837:37;;16826:48;;16899:4;16892:11;;:3;:11;;;;;:25;;;;;16913:4;16907:10;;:3;:10;;;;16892:25;16889:125;;;16968:4;16964:2;:8;16958:3;16953:9;;;:20;16945:5;:28;16937:36;;16992:6;;;;;;;;16889:125;17039:4;17031:12;;:4;:12;;;;;:27;;;;;17054:4;17047:11;;:4;:11;;;;17031:27;17028:128;;;17110:4;17106:2;:8;17099:4;17094:10;;;:21;17086:5;:29;17078:37;;17134:6;;;;;;;;17028:128;17180:1;17173:4;:8;17170:35;;;17200:5;;17170:35;16707:3;;;;;;;;16664:553;;;17234:5;17227:12;;16427:820;;;;;;;;;;:::o;20102:147::-;20160:7;20180:9;20196:1;20192;:5;20180:17;;20220:1;20215;:6;;20208:14;;;;;;20240:1;20233:8;;20102:147;;;;;:::o;19193:208::-;19251:7;19328:9;19280:1;19275;:6;19271:47;;;19305:1;19298:8;;;;19271:47;19344:1;19340;:5;19328:17;;19372:1;19367;19363;:5;;;;;;;;:10;19356:18;;;;;;19392:1;19385:8;;19193:208;;;;;;:::o;19496:282::-;19554:7;19650:9;19585:1;19581;:5;19574:13;;;;;;19666:1;19662;:5;;;;;;;;19650:17;;19702:1;19698;:5;;;;;;;;19694:1;19690;:5;:13;19685:1;:18;19678:26;;;;;;19769:1;19762:8;;19496:282;;;;;:::o;17935:316::-;17999:7;18024:18;18057:17;18045:1;18024:22;;18085:4;18077:21;;;18057:41;;18128:1;18113:12;;:16;18109:107;;;18158:46;18191:12;;18159:26;3924:2;4255:14;;4251:2;:18;18159:9;:13;;:26;;;;:::i;:::-;18158:32;;:46;;;;:::i;:::-;18145:59;;18109:107;18233:10;18226:17;;17935:316;;;:::o;16113:306::-;16220:4;16242:13;16291:11;16272:7;16268:2;:11;16258:8;:22;;;;;;;;16242:38;;16321:7;16317:2;:11;16305:10;:24;;;;;;;;16291:38;;16356:6;16344:8;:18;16340:48;;;16384:4;16377:11;;;;16340:48;16406:5;16399:12;;16113:306;;;;;;;;:::o;17255:175::-;17343:7;17375:47;4402:1;3924:2;4393:10;4388:16;;4384:2;:20;17376:29;3924:2;4255:14;;4251:2;:18;17376:12;:16;;:29;;;;:::i;:::-;17375:35;;:47;;;;:::i;:::-;17368:54;;17255:175;;;:::o;2393:16603::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://d83fa7fa9341e1cb81230191f843e20c68f41d5ff9d14ed8fdb0020fba278573
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.