ERC-20
Overview
Max Total Supply
36,698,291,126 LOOIX
Holders
53,995
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
41,250 LOOIXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LOOiXToken
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-10-29 */ pragma solidity 0.4.25; /******************************************/ /* Owned starts here */ /******************************************/ 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, "Sender not authorized."); _; } function transferOwnership(address _newOwner) public onlyOwner { require(_newOwner != address(0), "0x00 address not allowed."); newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner, "Sender not authorized."); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } /******************************************/ /* TokenERC20 starts here */ /******************************************/ contract TokenERC20 { string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); constructor() public { decimals = 18; // decimals totalSupply = 0; // initialSupply name = "LOOiX"; // Set the name for display purposes symbol = "LOOIX"; // Set the symbol for display purposes } /** * @dev Transfer token for a specified addresses * @param _from The address to transfer from. * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function _transfer(address _from, address _to, uint256 _value) internal { require(_value > 0, "Transferred value has to be grater than 0."); require(_to != address(0), "0x00 address not allowed."); // Prevent transfer to 0x0 address. require(balanceOf[_from] >= _value, "Not enough funds on sender address."); // Check if the sender has enough require(balanceOf[_to] + _value > balanceOf[_to], "Overflow protection."); // Check for overflows balanceOf[_from] -= _value; // Subtract from the sender balanceOf[_to] += _value; // Add the same to the recipient emit Transfer(_from, _to, _value); } /** * @dev Transfer tokens * @param _to The address of the recipient * @param _value the amount to send */ function transfer(address _to, uint256 _value) public returns(bool success) { _transfer(msg.sender, _to, _value); return true; } /** * @dev Transfer tokens from other address * @param _from The address of the sender * @param _to The address of the recipient * @param _value the amount to send */ function transferFrom(address _from, address _to, uint256 _value) public returns(bool success) { require(_value <= allowance[_from][msg.sender], "Funds not approved."); // Check allowance allowance[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } /** * @dev Set allowance for other address * @param _spender The address authorized to spend * @param _value the max amount they can spend */ function approve(address _spender, uint256 _value) public returns(bool success) { require(_value == 0 || allowance[msg.sender][_spender] == 0, "Approved funds or value are not 0."); allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } } /******************************************/ /* TokenStaking starts here */ /******************************************/ contract TokenStaking { uint256 internal stakeID; uint256 internal threeMonthTime; uint256 internal threeMonthPercentage; uint256 internal sixMonthTime; uint256 internal sixMonthPercentage; uint256 internal twelveMonthTime; uint256 internal twelveMonthPercentage; struct stakeInfo // Struct for user vestings { uint256 endDate; uint256 amount; address initiator; address receiver; } mapping(address => uint256) public stakedBalanceOf; mapping(uint256 => stakeInfo) internal vestings; mapping(address => uint256[]) internal userVestingIDs; enum StakeOption {three, six, twelve} constructor() TokenStaking() public { stakeID = 0; threeMonthTime = 91 days; threeMonthPercentage = 1005012520859401063; // e**(0.02*0.25) sixMonthTime = 182 days; sixMonthPercentage = 1020201340026755810; // e**(0.04*0.5) twelveMonthTime = 365 days; twelveMonthPercentage = 1061836546545359622; // e**(0.06*1.0) } /** * @dev Function to get the stake info from a corresponding ID. * @param _id uint256 The ID from which the stake info should be read. * @return endDate uint256 specifying the seconds since the UNIX Epoch. amount uint256 specifying the amount that was staked plus the stake bonus. */ function getStakeInfo(uint256 _id) external view returns(uint256 endDate, uint256 amount, address receiver, address initiator) { return (vestings[_id].endDate, vestings[_id].amount, vestings[_id].receiver, vestings[_id].initiator); } /** * @dev Function to get the stake IDs from a given address. * @param _address address The address which staked tokens. * @return Ids uint256[] An array of stake IDs from the given address. */ function getStakeIDs(address _address) external view returns(uint256[] memory Ids) { return userVestingIDs[_address]; } /** * @dev Stake an amount of tokens with one of three options. * @param _amount uint256 The amount of tokens which will be staked. * @param _option StakeOption An enum which decides how long a stake will be frozen (only 0, 1 and 2 are valid values). * @return totalSupplyIncreaseds uint256 The total increase in supply from the staked tokens. */ function _stake(uint256 _amount, StakeOption _option, address _receiver) internal returns(uint256 totalSupplyIncrease) { require(_option >= StakeOption.three && _option <= StakeOption.twelve); stakeInfo memory stakeStruct; stakeStruct.endDate = 0; stakeStruct.amount = 0; stakeStruct.initiator = msg.sender; stakeStruct.receiver = address(0); uint256 tempIncrease; if (_option == StakeOption.three) { stakeStruct.endDate = now + threeMonthTime; stakeStruct.amount = _amount * threeMonthPercentage / (10**18); stakeStruct.initiator = msg.sender; stakeStruct.receiver = _receiver; tempIncrease = (_amount * (threeMonthPercentage - (10**18)) / (10**18)); } else if (_option == StakeOption.six) { stakeStruct.endDate = now + sixMonthTime; stakeStruct.amount = _amount * sixMonthPercentage / (10**18); stakeStruct.initiator = msg.sender; stakeStruct.receiver = _receiver; tempIncrease = (_amount * (sixMonthPercentage - (10**18)) / (10**18)); } else if (_option == StakeOption.twelve) { stakeStruct.endDate = now + twelveMonthTime; stakeStruct.amount = _amount * twelveMonthPercentage / (10**18); stakeStruct.initiator = msg.sender; stakeStruct.receiver = _receiver; tempIncrease = (_amount * (twelveMonthPercentage - (10**18)) / (10**18)); } stakeID = stakeID + 1; vestings[stakeID] = stakeStruct; _setVestingID(stakeID, stakeStruct.receiver); stakedBalanceOf[msg.sender] += stakeStruct.amount; return tempIncrease; } /** * @dev Function to set a new vesting ID on the userVestingIDs mapping. Free ID slots in the array will be overwritten. * @param _id uint256 The new ID that has to be written in the corresponding mapping. */ function _setVestingID(uint256 _id, address _receiver) internal { bool tempEntryWritten = false; uint256 arrayLength = userVestingIDs[_receiver].length; if(arrayLength != 0) { for (uint256 i = 0; i < arrayLength; i++) { if (userVestingIDs[_receiver][i] == 0) { userVestingIDs[_receiver][i] = _id; tempEntryWritten = true; break; } } if(!tempEntryWritten) { userVestingIDs[_receiver].push(_id); } } else { userVestingIDs[_receiver].push(_id); } } /** * @dev Redeem the staked tokens. * @return amount uint256 The amount that has been redeemed. */ function _redeem() internal returns(uint256 amount) { uint256[] memory IdArray = userVestingIDs[msg.sender]; uint256 tempAmount = 0; uint256 finalAmount = 0; address tempInitiator = address(0); for(uint256 i = 0; i < IdArray.length; i++) { if(IdArray[i] != 0 && vestings[IdArray[i]].endDate <= now) { tempInitiator = vestings[IdArray[i]].initiator; tempAmount = vestings[IdArray[i]].amount; stakedBalanceOf[tempInitiator] -= tempAmount; finalAmount += tempAmount; // delete the vesting history delete userVestingIDs[msg.sender][i]; delete vestings[IdArray[i]]; } } require(finalAmount > 0, "No funds to redeem."); return finalAmount; } } /******************************************/ /* LOOiXToken starts here */ /******************************************/ contract LOOiXToken is owned, TokenERC20, TokenStaking { bool public mintingActive; address public mintDelegate; uint256 public unlockAt; uint256 public ICO_totalSupply; uint256 internal constant MAX_UINT = 2**256 - 1; mapping(address => uint256) public allocations; event Stake(address indexed _target, uint256 _amount); event Redeem(address indexed _target, uint256 _amount); constructor() TokenERC20() public { mintingActive = true; mintDelegate = address(0); unlockAt; } /** * @dev Modifier defines addresses allowed to mint. */ modifier mintingAllowed { require(msg.sender == owner || msg.sender == mintDelegate, "Sender not authorized."); _; } /** * @dev Internal ERC20 transfer. */ function _transfer(address _from, address _to, uint256 _value) internal { require(_value > 0, "Transferred value has to be grater than 0."); // value has to be greater than 0 require(_to != address(0), "0x00 address not allowed."); // Prevent transfer to 0x0 address require(balanceOf[_from] >= _value, "Not enough funds on sender address."); // Check if the sender has enough require(balanceOf[_to] + _value >= balanceOf[_to], "Overflow protection."); // Check for overflows balanceOf[_from] -= _value; // Subtract from the sender balanceOf[_to] += _value; // Add the same to the recipient emit Transfer(_from, _to, _value); } /** * @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance. * @param _from Address to transfer from. * @param _to Address to transfer to. * @param _value Amount to transfer. * @return Success of transfer. */ function transferFrom(address _from, address _to, uint _value) public returns (bool success) { uint256 allowanceTemp = allowance[_from][msg.sender]; require(allowanceTemp >= _value, "Funds not approved."); require(balanceOf[_from] >= _value, "Not enough funds on sender address."); require(balanceOf[_to] + _value >= balanceOf[_to], "Overflow protection."); balanceOf[_to] += _value; balanceOf[_from] -= _value; if (allowanceTemp < MAX_UINT) { allowance[_from][msg.sender] -= _value; } emit Transfer(_from, _to, _value); return true; } /** * @dev Set new mintDelegate address * @param _newDelegate The address authorized to mint */ function setMintDelegate(address _newDelegate) external onlyOwner { require(_newDelegate != address(0), "0x00 address not allowed."); mintDelegate = _newDelegate; } /** * @dev Set unlimited allowance for other address * @param _controllerAddress The address authorized to spend */ function giveAccess(address _controllerAddress) external { require(msg.sender != owner, "Owner of contract can not use this function."); require(_controllerAddress != address(0), "0x00 address not allowed."); allowance[msg.sender][_controllerAddress] = MAX_UINT; emit Approval(msg.sender, _controllerAddress, MAX_UINT); } /** * @dev Set allowance for other address to 0 * @param _controllerAddress The address authorized to spend */ function revokeAccess(address _controllerAddress) external { require(_controllerAddress != address(0), "0x00 address not allowed."); allowance[msg.sender][_controllerAddress] = 0; } /** * @dev Withdraw all LOOiX on the contract. */ function withdrawLOOiX() external onlyOwner { require(balanceOf[address(this)] > 0, "No funds available."); _transfer(address(this), owner, balanceOf[address(this)]); } /** * @dev Bulk mint function for airdrops. * @param _address Address array to mint to. * @param _mintAmount Amount array to mint. */ function mintTokenBulk(address[] _address, uint256[] _mintAmount) external mintingAllowed { require(mintingActive, "The mint functions are not available anymore."); uint256 tempAmount = 0; for (uint256 i = 0; i < _address.length; i++) { if(balanceOf[_address[i]] + _mintAmount[i] >= balanceOf[_address[i]]) { balanceOf[_address[i]] += _mintAmount[i] * (10**18); tempAmount += _mintAmount[i] * (10**18); emit Transfer(address(0), _address[i], _mintAmount[i] * (10**18)); } } totalSupply += tempAmount; } /** * @dev Mint function for creating new tokens. * @param _target Address to mint to. * @param _mintAmount Amount to mint. */ function mintToken(address _target, uint256 _mintAmount) public mintingAllowed { require(mintingActive, "The mint functions are not available anymore."); require(_target != address(0), "0x00 address not allowed."); balanceOf[_target] += _mintAmount * (10**18); totalSupply += _mintAmount * (10**18); emit Transfer(address(0), _target, _mintAmount * (10**18)); } /** * @dev Stops the minting of the token. After this function is called, no new tokens can be minted using the mintToken or mintTokenBulk functions. Irreversible. */ function terminateMinting() external onlyOwner { require(mintingActive, "The mint functions are not available anymore."); uint256 tempTotalSupply = totalSupply; tempTotalSupply = tempTotalSupply + (tempTotalSupply * 666666666666666666 / 10**18); totalSupply = tempTotalSupply; ICO_totalSupply = tempTotalSupply; mintingActive = false; unlockAt = now + 365 days; // 40% of the total token supply allocations[0xefbDBA37BD0e825d43bac88Ce570dcEFf50373C2] = tempTotalSupply * 9500 / 100000; // 9.5% - Founders Pot. allocations[0x75dE233590c8Dd593CE1bB89d68e9f18Ecdf34C8] = tempTotalSupply * 9500 / 100000; // 9.5% - Development and Management. allocations[0x357C2e4253389CE79440e867E9De14E17Bb97D2E] = tempTotalSupply * 3120 / 100000; // 3.12% - Bonuspool. allocations[0xf35FF681cbb69b47488269CE2BA5CaA34133813A] = tempTotalSupply * 14250 / 100000; // 14.25% - Marketing. balanceOf[0x2A809456adf8bd5A79D598e880f7Bd78e11B4A1c] += tempTotalSupply * 242 / 100000; balanceOf[0x36c321017a8d8655ec7a2b862328678932E53b87] += tempTotalSupply * 242 / 100000; balanceOf[0xc9ebc197Ee00C1E231817b4eb38322C364cFCFCD] += tempTotalSupply * 242 / 100000; balanceOf[0x2BE34a67491c6b1f8e0cA3BAA1249c90686CF6FB] += tempTotalSupply * 726 / 100000; balanceOf[0x1cF6725538AAcC9574108845D58cF2e89f62bbE9] += tempTotalSupply * 4 / 100000; balanceOf[0xc6a3B6ED936bD18FD72e0ae2D50A10B82EF79851] += tempTotalSupply * 130 / 100000; balanceOf[0x204Fb77569ca24C09e1425f979141536B89449E3] += tempTotalSupply * 130 / 100000; balanceOf[0xbE3Ece67B61Ef6D3Fd0F8b159d16A80BB04C0F7B] += tempTotalSupply * 164 / 100000; // Bonuspool. balanceOf[0x731953d4c9A01c676fb6b013688AA8D512F5Ec03] += tempTotalSupply * 500 / 100000; // Development and Management. balanceOf[0x84A81f3B42BD99Fd435B1498316F8705f84192bC] += tempTotalSupply * 500 / 100000; // Founders Pot. balanceOf[0xEAeC9b7382e5abEBe76Fc7BDd2Dc22BA1a338918] += tempTotalSupply * 750 / 100000; // Marketing. } /** * @dev Public unlock allocated Tokens. */ function unlock() public { require(!mintingActive, "Function not available as long as minting is possible."); require(now > unlockAt, "Unlock date not reached."); require(allocations[msg.sender] > 0, "No tokens to unlock."); uint256 tempAmount; tempAmount = allocations[msg.sender]; allocations[msg.sender] = 0; balanceOf[msg.sender] += tempAmount; } /** * @dev Public stake function to stake a given amount of tokens for one of the three options. * @param _amount Amount to stake. * @param _option StakeOption enum with values from 0 to 2. * @return Success of stake. */ function stake(uint256 _amount, StakeOption _option, address _receiver) external returns(bool success) { require(!mintingActive, "Function not available as long as minting is possible."); require(balanceOf[msg.sender] >= _amount, "Not enough funds on sender address."); require(_amount >= 100*(10**18), "Amount is less than 100 token."); require(_receiver != address(0), "0x00 address not allowed."); uint256 supplyIncrease; uint256 finalBalance; supplyIncrease = _stake(_amount, _option, _receiver); totalSupply += supplyIncrease; balanceOf[msg.sender] -= _amount; finalBalance = _amount + supplyIncrease; emit Stake(_receiver, _amount); emit Transfer(msg.sender, _receiver, finalBalance); return true; } /** * @dev Public redeem function to redeem all redeemable tokens. */ function redeem() public { require(userVestingIDs[msg.sender].length > 0, "No funds to redeem."); uint256 amount; amount = _redeem(); balanceOf[msg.sender] += amount; emit Redeem(msg.sender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"mintDelegate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getStakeInfo","outputs":[{"name":"endDate","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"receiver","type":"address"},{"name":"initiator","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"stakedBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allocations","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address[]"},{"name":"_mintAmount","type":"uint256[]"}],"name":"mintTokenBulk","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"terminateMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getStakeIDs","outputs":[{"name":"Ids","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_mintAmount","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_option","type":"uint8"},{"name":"_receiver","type":"address"}],"name":"stake","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_controllerAddress","type":"address"}],"name":"revokeAccess","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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"unlockAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newDelegate","type":"address"}],"name":"setMintDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_controllerAddress","type":"address"}],"name":"giveAccess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ICO_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawLOOiX","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600460006101000a81548160ff021916908360ff16021790555060006005819055506040805190810160405280600581526020017f4c4f4f695800000000000000000000000000000000000000000000000000000081525060029080519060200190620000c3929190620001c9565b506040805190810160405280600581526020017f4c4f4f49580000000000000000000000000000000000000000000000000000008152506003908051906020019062000111929190620001c9565b5060006008819055506277f880600981905550670df285901ca4fb67600a8190555062eff100600b81905550670e287bb6a7ac1ae2600c819055506301e13380600d81905550670ebc66b6965d1b06600e819055506001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000278565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020c57805160ff19168380011785556200023d565b828001600101855582156200023d579182015b828111156200023c5782518255916020019190600101906200021f565b5b5090506200024c919062000250565b5090565b6200027591905b808211156200027157600081600090555060010162000257565b5090565b90565b61477480620002886000396000f30060806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630672a90a1461019057806306fdde03146101e7578063095ea7b31461027757806309813482146102dc578063167653911461038a57806318160ddd146103e157806323b872dd1461040c578063313ce5671461049157806331f9c919146104c257806352a9039c146104f157806362fca3fa1461054857806363fb5c9d1461059b57806367a6b678146105b257806370a082311461064a57806379ba5097146106a157806379c65068146106b85780637cc2a9601461070557806385e68531146107775780638da5cb5b146107ba57806395d89b4114610811578063a69df4b5146108a1578063a9059cbb146108b8578063aa5dec6f1461091d578063bdf5368c14610948578063be040fb01461098b578063cf12e870146109a2578063d4ee1d90146109e5578063dd62ed3e14610a3c578063ea9647fc14610ab3578063f04395da14610ade578063f2fde38b14610af5575b600080fd5b34801561019c57600080fd5b506101a5610b38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f357600080fd5b506101fc610b5e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023c578082015181840152602081019050610221565b50505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028357600080fd5b506102c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b3480156102e857600080fd5b5061030760048036038101908080359060200190929190505050610e12565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b34801561039657600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec3565b6040518082815260200191505060405180910390f35b3480156103ed57600080fd5b506103f6610edb565b6040518082815260200191505060405180910390f35b34801561041857600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee1565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104a661136e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ce57600080fd5b506104d7611381565b604051808215151515815260200191505060405180910390f35b3480156104fd57600080fd5b50610532600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611394565b6040518082815260200191505060405180910390f35b34801561055457600080fd5b506105996004803603810190808035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506113ac565b005b3480156105a757600080fd5b506105b0611806565b005b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612068565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063657808201518184015260208101905061061b565b505050509050019250505060405180910390f35b34801561065657600080fd5b5061068b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120ff565b6040518082815260200191505060405180910390f35b3480156106ad57600080fd5b506106b6612117565b005b3480156106c457600080fd5b50610703600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061231f565b005b34801561071157600080fd5b5061075d60048036038101908080359060200190929190803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b604051808215151515815260200191505060405180910390f35b34801561078357600080fd5b506107b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a51565b005b3480156107c657600080fd5b506107cf612b7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561081d57600080fd5b50610826612ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086657808201518184015260208101905061084b565b50505050905090810190601f1680156108935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ad57600080fd5b506108b6612c3e565b005b3480156108c457600080fd5b50610903600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ef2565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932612f09565b6040518082815260200191505060405180910390f35b34801561095457600080fd5b50610989600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f0f565b005b34801561099757600080fd5b506109a06130bc565b005b3480156109ae57600080fd5b506109e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061321f565b005b3480156109f157600080fd5b506109fa6134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4857600080fd5b50610a9d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b6040518082815260200191505060405180910390f35b348015610abf57600080fd5b50610ac8613523565b6040518082815260200191505060405180910390f35b348015610aea57600080fd5b50610af3613529565b005b348015610b0157600080fd5b50610b36600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613711565b005b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf45780601f10610bc957610100808354040283529160200191610bf4565b820191906000526020600020905b815481529060010190602001808311610bd757829003601f168201915b505050505081565b600080821480610c8857506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f417070726f7665642066756e6473206f722076616c756520617265206e6f742081526020017f302e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080601060008681526020019081526020016000206000015460106000878152602001908152602001600020600101546010600088815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166010600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693509350935093509193509193565b600f6020528060005260406000206000915090505481565b60055481565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110151515610fdb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f46756e6473206e6f7420617070726f7665642e0000000000000000000000000081525060200191505060405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401101515156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f766572666c6f772070726f74656374696f6e2e00000000000000000000000081525060200191505060405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156112fd5782600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b600460009054906101000a900460ff1681565b601260009054906101000a900460ff1681565b60156020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114575750601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff161515611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b60009150600090505b858590508110156117ee5760066000878784818110151561159b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848483818110151561160157fe5b9050602002013560066000898986818110151561161a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156117e157670de0b6b3a7640000848483818110151561169157fe5b90506020020135026006600088888581811015156116ab57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550670de0b6b3a7640000848483818110151561172657fe5b905060200201350282019150858582818110151561174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000087878681811015156117c357fe5b90506020020135026040518082815260200191505060405180910390a35b808060010191505061157e565b81600560008282540192505081905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff161515611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6005549050670de0b6b3a764000067094079cd1a42aaaa820281151561199857fe5b048101905080600581905550806014819055506000601260006101000a81548160ff0219169083151502179055506301e133804201601381905550620186a061251c82028115156119e557fe5b046015600073efbdba37bd0e825d43bac88ce570dceff50373c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a061251c8202811515611a4f57fe5b04601560007375de233590c8dd593ce1bb89d68e9f18ecdf34c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a0610c308202811515611ab957fe5b046015600073357c2e4253389ce79440e867e9de14e17bb97d2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a06137aa8202811515611b2357fe5b046015600073f35ff681cbb69b47488269ce2ba5caa34133813a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a060f28202811515611b8c57fe5b0460066000732a809456adf8bd5a79d598e880f7bd78e11b4a1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060f28202811515611bfe57fe5b04600660007336c321017a8d8655ec7a2b862328678932e53b8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060f28202811515611c7057fe5b046006600073c9ebc197ee00c1e231817b4eb38322c364cfcfcd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06102d68202811515611ce357fe5b0460066000732be34a67491c6b1f8e0ca3baa1249c90686cf6fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060048202811515611d5557fe5b0460066000731cf6725538aacc9574108845d58cf2e89f62bbe973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060828202811515611dc757fe5b046006600073c6a3b6ed936bd18fd72e0ae2d50a10b82ef7985173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060828202811515611e3957fe5b046006600073204fb77569ca24c09e1425f979141536b89449e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060a48202811515611eab57fe5b046006600073be3ece67b61ef6d3fd0f8b159d16a80bb04c0f7b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06101f48202811515611f1e57fe5b046006600073731953d4c9a01c676fb6b013688aa8d512f5ec0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06101f48202811515611f9157fe5b04600660007384a81f3b42bd99fd435b1498316f8705f84192bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06102ee820281151561200457fe5b046006600073eaec9b7382e5abebe76fc7bdd2dc22ba1a33891873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b6060601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156120f357602002820191906000526020600020905b8154815260200190600101908083116120df575b50505050509050919050565b60066020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806123c75750601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561243b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff1615156124e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561258a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b670de0b6b3a76400008102600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550670de0b6b3a764000081026005600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000084026040518082815260200191505060405180910390a35050565b6000806000601260009054906101000a900460ff1615151561271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f46756e6374696f6e206e6f7420617661696c61626c65206173206c6f6e67206181526020017f73206d696e74696e6720697320706f737369626c652e0000000000000000000081525060400191505060405180910390fd5b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b68056bc75e2d63100000861015151561287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e74206973206c657373207468616e2031303020746f6b656e2e000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612922576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b61292d8686866138be565b91508160056000828254019250508190555085600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081860190508373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a876040518082815260200191505060405180910390a28373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c365780601f10612c0b57610100808354040283529160200191612c36565b820191906000526020600020905b815481529060010190602001808311612c1957829003601f168201915b505050505081565b6000601260009054906101000a900460ff16151515612ceb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f46756e6374696f6e206e6f7420617661696c61626c65206173206c6f6e67206181526020017f73206d696e74696e6720697320706f737369626c652e0000000000000000000081525060400191505060405180910390fd5b60135442111515612d64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e6c6f636b2064617465206e6f7420726561636865642e000000000000000081525060200191505060405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612e1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20746f6b656e7320746f20756e6c6f636b2e00000000000000000000000081525060200191505060405180910390fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b6000612eff338484613d66565b6001905092915050565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050111515613177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320746f2072656465656d2e0000000000000000000000000081525060200191505060405180910390fd5b61317f614182565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6826040518082815260200191505060405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561330a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4f776e6572206f6620636f6e74726163742063616e206e6f742075736520746881526020017f69732066756e6374696f6e2e000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518082815260200191505060405180910390a350565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60145481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156136a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320617661696c61626c652e0000000000000000000000000081525060200191505060405180910390fd5b61370f306000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d66565b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561387a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006138c86146f3565b60008060028111156138d657fe5b8560028111156138e257fe5b1015801561390657506002808111156138f757fe5b85600281111561390357fe5b11155b151561391157600080fd5b6000826000018181525050600082602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600060028111156139a557fe5b8560028111156139b157fe5b1415613a77576009544201826000018181525050670de0b6b3a7640000600a5487028115156139dc57fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600a54038702811515613a6f57fe5b049050613c32565b60016002811115613a8457fe5b856002811115613a9057fe5b1415613b5657600b544201826000018181525050670de0b6b3a7640000600c548702811515613abb57fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600c54038702811515613b4e57fe5b049050613c31565b600280811115613b6257fe5b856002811115613b6e57fe5b1415613c3057600d544201826000018181525050670de0b6b3a7640000600e548702811515613b9957fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600e54038702811515613c2c57fe5b0490505b5b5b60016008540160088190555081601060006008548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050613d0960085483606001516144d8565b8160200151600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080925050509392505050565b600081111515613e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f5472616e736665727265642076616c75652068617320746f206265206772617481526020017f6572207468616e20302e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613ea9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613f86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015151561407e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f766572666c6f772070726f74656374696f6e2e00000000000000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60006060600080600080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561421557602002820191906000526020600020905b815481526020019060010190808311614201575b50505050509450600093506000925060009150600090505b8451811015614455576000858281518110151561424657fe5b906020019060200201511415801561428b57504260106000878481518110151561426c57fe5b9060200190602002015181526020019081526020016000206000015411155b15614448576010600086838151811015156142a257fe5b90602001906020020151815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506010600086838151811015156142f257fe5b90602001906020020151815260200190815260200160002060010154935083600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508383019250601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811015156143ae57fe5b90600052602060002001600090556010600086838151811015156143ce57fe5b90602001906020020151815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550505b808060010191505061422d565b6000831115156144cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320746f2072656465656d2e0000000000000000000000000081525060200191505060405180910390fd5b829550505050505090565b6000806000809250601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050915060008214151561468257600090505b8181101561460c576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561458a57fe5b906000526020600020015414156145ff5784601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156145e857fe5b90600052602060002001819055506001925061460c565b8080600101915050614534565b82151561467d57601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b6146ec565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b5050505050565b6080604051908101604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905600a165627a7a7230582012b4efe5ea2dadb7c14b916891d1fe50e2f749a38113829ecabd71c2433f64ea0029
Deployed Bytecode
0x60806040526004361061018b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630672a90a1461019057806306fdde03146101e7578063095ea7b31461027757806309813482146102dc578063167653911461038a57806318160ddd146103e157806323b872dd1461040c578063313ce5671461049157806331f9c919146104c257806352a9039c146104f157806362fca3fa1461054857806363fb5c9d1461059b57806367a6b678146105b257806370a082311461064a57806379ba5097146106a157806379c65068146106b85780637cc2a9601461070557806385e68531146107775780638da5cb5b146107ba57806395d89b4114610811578063a69df4b5146108a1578063a9059cbb146108b8578063aa5dec6f1461091d578063bdf5368c14610948578063be040fb01461098b578063cf12e870146109a2578063d4ee1d90146109e5578063dd62ed3e14610a3c578063ea9647fc14610ab3578063f04395da14610ade578063f2fde38b14610af5575b600080fd5b34801561019c57600080fd5b506101a5610b38565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f357600080fd5b506101fc610b5e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023c578082015181840152602081019050610221565b50505050905090810190601f1680156102695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028357600080fd5b506102c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b604051808215151515815260200191505060405180910390f35b3480156102e857600080fd5b5061030760048036038101908080359060200190929190505050610e12565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390f35b34801561039657600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec3565b6040518082815260200191505060405180910390f35b3480156103ed57600080fd5b506103f6610edb565b6040518082815260200191505060405180910390f35b34801561041857600080fd5b50610477600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee1565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104a661136e565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104ce57600080fd5b506104d7611381565b604051808215151515815260200191505060405180910390f35b3480156104fd57600080fd5b50610532600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611394565b6040518082815260200191505060405180910390f35b34801561055457600080fd5b506105996004803603810190808035906020019082018035906020019190919293919293908035906020019082018035906020019190919293919293905050506113ac565b005b3480156105a757600080fd5b506105b0611806565b005b3480156105be57600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612068565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063657808201518184015260208101905061061b565b505050509050019250505060405180910390f35b34801561065657600080fd5b5061068b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120ff565b6040518082815260200191505060405180910390f35b3480156106ad57600080fd5b506106b6612117565b005b3480156106c457600080fd5b50610703600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061231f565b005b34801561071157600080fd5b5061075d60048036038101908080359060200190929190803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061266f565b604051808215151515815260200191505060405180910390f35b34801561078357600080fd5b506107b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a51565b005b3480156107c657600080fd5b506107cf612b7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561081d57600080fd5b50610826612ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086657808201518184015260208101905061084b565b50505050905090810190601f1680156108935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ad57600080fd5b506108b6612c3e565b005b3480156108c457600080fd5b50610903600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ef2565b604051808215151515815260200191505060405180910390f35b34801561092957600080fd5b50610932612f09565b6040518082815260200191505060405180910390f35b34801561095457600080fd5b50610989600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f0f565b005b34801561099757600080fd5b506109a06130bc565b005b3480156109ae57600080fd5b506109e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061321f565b005b3480156109f157600080fd5b506109fa6134d8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a4857600080fd5b50610a9d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134fe565b6040518082815260200191505060405180910390f35b348015610abf57600080fd5b50610ac8613523565b6040518082815260200191505060405180910390f35b348015610aea57600080fd5b50610af3613529565b005b348015610b0157600080fd5b50610b36600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613711565b005b601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf45780601f10610bc957610100808354040283529160200191610bf4565b820191906000526020600020905b815481529060010190602001808311610bd757829003601f168201915b505050505081565b600080821480610c8857506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b1515610d22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f417070726f7665642066756e6473206f722076616c756520617265206e6f742081526020017f302e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600080600080601060008681526020019081526020016000206000015460106000878152602001908152602001600020600101546010600088815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166010600089815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693509350935093509193509193565b600f6020528060005260406000206000915090505481565b60055481565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110151515610fdb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f46756e6473206e6f7420617070726f7665642e0000000000000000000000000081525060200191505060405180910390fd5b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401101515156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f766572666c6f772070726f74656374696f6e2e00000000000000000000000081525060200191505060405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156112fd5782600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b600460009054906101000a900460ff1681565b601260009054906101000a900460ff1681565b60156020528060005260406000206000915090505481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114575750601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff161515611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b60009150600090505b858590508110156117ee5760066000878784818110151561159b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054848483818110151561160157fe5b9050602002013560066000898986818110151561161a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015156117e157670de0b6b3a7640000848483818110151561169157fe5b90506020020135026006600088888581811015156116ab57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550670de0b6b3a7640000848483818110151561172657fe5b905060200201350282019150858582818110151561174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000087878681811015156117c357fe5b90506020020135026040518082815260200191505060405180910390a35b808060010191505061157e565b81600560008282540192505081905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff161515611976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b6005549050670de0b6b3a764000067094079cd1a42aaaa820281151561199857fe5b048101905080600581905550806014819055506000601260006101000a81548160ff0219169083151502179055506301e133804201601381905550620186a061251c82028115156119e557fe5b046015600073efbdba37bd0e825d43bac88ce570dceff50373c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a061251c8202811515611a4f57fe5b04601560007375de233590c8dd593ce1bb89d68e9f18ecdf34c873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a0610c308202811515611ab957fe5b046015600073357c2e4253389ce79440e867e9de14e17bb97d2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a06137aa8202811515611b2357fe5b046015600073f35ff681cbb69b47488269ce2ba5caa34133813a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620186a060f28202811515611b8c57fe5b0460066000732a809456adf8bd5a79d598e880f7bd78e11b4a1c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060f28202811515611bfe57fe5b04600660007336c321017a8d8655ec7a2b862328678932e53b8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060f28202811515611c7057fe5b046006600073c9ebc197ee00c1e231817b4eb38322c364cfcfcd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06102d68202811515611ce357fe5b0460066000732be34a67491c6b1f8e0ca3baa1249c90686cf6fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060048202811515611d5557fe5b0460066000731cf6725538aacc9574108845d58cf2e89f62bbe973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060828202811515611dc757fe5b046006600073c6a3b6ed936bd18fd72e0ae2d50a10b82ef7985173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060828202811515611e3957fe5b046006600073204fb77569ca24c09e1425f979141536b89449e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a060a48202811515611eab57fe5b046006600073be3ece67b61ef6d3fd0f8b159d16a80bb04c0f7b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06101f48202811515611f1e57fe5b046006600073731953d4c9a01c676fb6b013688aa8d512f5ec0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06101f48202811515611f9157fe5b04600660007384a81f3b42bd99fd435b1498316f8705f84192bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620186a06102ee820281151561200457fe5b046006600073eaec9b7382e5abebe76fc7bdd2dc22ba1a33891873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b6060601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156120f357602002820191906000526020600020905b8154815260200190600101908083116120df575b50505050509050919050565b60066020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806123c75750601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561243b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b601260009054906101000a900460ff1615156124e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001807f546865206d696e742066756e6374696f6e7320617265206e6f7420617661696c81526020017f61626c6520616e796d6f72652e0000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561258a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b670de0b6b3a76400008102600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550670de0b6b3a764000081026005600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000084026040518082815260200191505060405180910390a35050565b6000806000601260009054906101000a900460ff1615151561271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f46756e6374696f6e206e6f7420617661696c61626c65206173206c6f6e67206181526020017f73206d696e74696e6720697320706f737369626c652e0000000000000000000081525060400191505060405180910390fd5b85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156127fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b68056bc75e2d63100000861015151561287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e74206973206c657373207468616e2031303020746f6b656e2e000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515612922576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b61292d8686866138be565b91508160056000828254019250508190555085600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081860190508373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a876040518082815260200191505060405180910390a28373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612af6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c365780601f10612c0b57610100808354040283529160200191612c36565b820191906000526020600020905b815481529060010190602001808311612c1957829003601f168201915b505050505081565b6000601260009054906101000a900460ff16151515612ceb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f46756e6374696f6e206e6f7420617661696c61626c65206173206c6f6e67206181526020017f73206d696e74696e6720697320706f737369626c652e0000000000000000000081525060400191505060405180910390fd5b60135442111515612d64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f556e6c6f636b2064617465206e6f7420726561636865642e000000000000000081525060200191505060405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612e1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20746f6b656e7320746f20756e6c6f636b2e00000000000000000000000081525060200191505060405180910390fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b6000612eff338484613d66565b6001905092915050565b60135481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613078576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050111515613177576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320746f2072656465656d2e0000000000000000000000000081525060200191505060405180910390fd5b61317f614182565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a6826040518082815260200191505060405180910390a250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561330a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4f776e6572206f6620636f6e74726163742063616e206e6f742075736520746881526020017f69732066756e6374696f6e2e000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156133af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518082815260200191505060405180910390a350565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60145481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b6000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156136a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320617661696c61626c652e0000000000000000000000000081525060200191505060405180910390fd5b61370f306000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d66565b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206e6f7420617574686f72697a65642e0000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561387a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006138c86146f3565b60008060028111156138d657fe5b8560028111156138e257fe5b1015801561390657506002808111156138f757fe5b85600281111561390357fe5b11155b151561391157600080fd5b6000826000018181525050600082602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600060028111156139a557fe5b8560028111156139b157fe5b1415613a77576009544201826000018181525050670de0b6b3a7640000600a5487028115156139dc57fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600a54038702811515613a6f57fe5b049050613c32565b60016002811115613a8457fe5b856002811115613a9057fe5b1415613b5657600b544201826000018181525050670de0b6b3a7640000600c548702811515613abb57fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600c54038702811515613b4e57fe5b049050613c31565b600280811115613b6257fe5b856002811115613b6e57fe5b1415613c3057600d544201826000018181525050670de0b6b3a7640000600e548702811515613b9957fe5b0482602001818152505033826040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083826060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050670de0b6b3a764000080600e54038702811515613c2c57fe5b0490505b5b5b60016008540160088190555081601060006008548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050613d0960085483606001516144d8565b8160200151600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080925050509392505050565b600081111515613e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f5472616e736665727265642076616c75652068617320746f206265206772617481526020017f6572207468616e20302e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515613ea9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f307830302061646472657373206e6f7420616c6c6f7765642e0000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613f86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4e6f7420656e6f7567682066756e6473206f6e2073656e64657220616464726581526020017f73732e000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011015151561407e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f766572666c6f772070726f74656374696f6e2e00000000000000000000000081525060200191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60006060600080600080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561421557602002820191906000526020600020905b815481526020019060010190808311614201575b50505050509450600093506000925060009150600090505b8451811015614455576000858281518110151561424657fe5b906020019060200201511415801561428b57504260106000878481518110151561426c57fe5b9060200190602002015181526020019081526020016000206000015411155b15614448576010600086838151811015156142a257fe5b90602001906020020151815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506010600086838151811015156142f257fe5b90602001906020020151815260200190815260200160002060010154935083600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508383019250601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020818154811015156143ae57fe5b90600052602060002001600090556010600086838151811015156143ce57fe5b90602001906020020151815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550505b808060010191505061422d565b6000831115156144cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f2066756e647320746f2072656465656d2e0000000000000000000000000081525060200191505060405180910390fd5b829550505050505090565b6000806000809250601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050915060008214151561468257600090505b8181101561460c576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561458a57fe5b906000526020600020015414156145ff5784601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156145e857fe5b90600052602060002001819055506001925061460c565b8080600101915050614534565b82151561467d57601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b6146ec565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915055505b5050505050565b6080604051908101604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905600a165627a7a7230582012b4efe5ea2dadb7c14b916891d1fe50e2f749a38113829ecabd71c2433f64ea0029
Swarm Source
bzzr://12b4efe5ea2dadb7c14b916891d1fe50e2f749a38113829ecabd71c2433f64ea
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.