ETH Price: $3,285.90 (+0.19%)
Gas: 4 Gwei

Contract

0x63120ccd7b415743e8753AfD167F5AD4A1732C43
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer187623112023-12-11 10:16:47229 days ago1702289807IN
QARK: Old QARK Token
0 ETH0.0025073735.82681601
Transfer158376912022-10-27 6:42:35639 days ago1666852955IN
QARK: Old QARK Token
0 ETH0.0007342411.26171401
Transfer156552132022-10-01 18:52:59665 days ago1664650379IN
QARK: Old QARK Token
0 ETH0.000745510.64850909
Transfer151683662022-07-18 18:54:10740 days ago1658170450IN
QARK: Old QARK Token
0 ETH0.0026216140.19520885
Transfer151271912022-07-12 10:09:46746 days ago1657620586IN
QARK: Old QARK Token
0 ETH0.0009245317.47370244
Transfer151271812022-07-12 10:06:26746 days ago1657620386IN
QARK: Old QARK Token
0 ETH0.0010720215.31772501
Transfer151270252022-07-12 9:25:39746 days ago1657617939IN
QARK: Old QARK Token
0 ETH0.0009552620.23265674
Transfer151269722022-07-12 9:11:31746 days ago1657617091IN
QARK: Old QARK Token
0 ETH0.0009101313
Transfer151215342022-07-11 13:13:38747 days ago1657545218IN
QARK: Old QARK Token
0 ETH0.0019500929.90486381
Transfer150904592022-07-06 18:05:38752 days ago1657130738IN
QARK: Old QARK Token
0 ETH0.0017997737.42827943
Transfer150144702022-06-23 19:21:29765 days ago1656012089IN
QARK: Old QARK Token
0 ETH0.00703806100.52936782
Transfer145755562022-04-13 6:20:00836 days ago1649830800IN
QARK: Old QARK Token
0 ETH0.0020088730.8118811
Transfer145485672022-04-09 1:30:51840 days ago1649467851IN
QARK: Old QARK Token
0 ETH0.0041801964.10354709
Transfer145311442022-04-06 7:57:34843 days ago1649231854IN
QARK: Old QARK Token
0 ETH0.0043325166.45166142
Transfer145311332022-04-06 7:55:30843 days ago1649231730IN
QARK: Old QARK Token
0 ETH0.0016683734.68697153
Transfer145311182022-04-06 7:51:51843 days ago1649231511IN
QARK: Old QARK Token
0 ETH0.0045702265.30195123
Transfer145115722022-04-03 6:21:44846 days ago1648966904IN
QARK: Old QARK Token
0 ETH0.0019726630.25089694
Transfer144748072022-03-28 13:01:03852 days ago1648472463IN
QARK: Old QARK Token
0 ETH0.0020836831.9476155
Transfer144552282022-03-25 11:44:28855 days ago1648208668IN
QARK: Old QARK Token
0 ETH0.0028832244.21439015
Transfer144552172022-03-25 11:40:43855 days ago1648208443IN
QARK: Old QARK Token
0 ETH0.0016386723.40630015
Transfer144478082022-03-24 8:12:12856 days ago1648109532IN
QARK: Old QARK Token
0 ETH0.0015983324.50608116
Transfer143669652022-03-11 17:58:44869 days ago1647021524IN
QARK: Old QARK Token
0 ETH0.0027297941.86926682
Transfer143422922022-03-07 22:03:25873 days ago1646690605IN
QARK: Old QARK Token
0 ETH0.001993430.57470764
Transfer143416412022-03-07 19:32:56873 days ago1646681576IN
QARK: Old QARK Token
0 ETH0.0016377830.96812432
Transfer143411102022-03-07 17:40:29873 days ago1646674829IN
QARK: Old QARK Token
0 ETH0.0037643657.72673801
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
QARK

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-10
*/

pragma solidity ^0.5.0;

contract ERC20Interface {
    function totalSupply() public view returns (uint);
    function balanceOf(address tokenOwner) public view returns (uint balance);
    function allowance(address tokenOwner, address spender) public view returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event LockBalance(address indexed from, address indexed to, uint tokens);
    event FreezeBalance(address indexed from, uint tokens, uint until);
    event LogUint(string key, uint value);
    event LogString(string key, string value);
    event LogAddress(string key, address value);
}

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);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }
    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }
    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }
    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}

contract QARK is ERC20Interface, Owned {

    /*
     * Use SafeMath Library
     * for uint operations.
     */
    using SafeMath for uint;

    /*
     * Token symbol listed
     * on exchanges.
     */
    string public symbol;

    /*
     * Token name displayed
     * on block explorers
     */
    string public  name;

    /*
     * Atomic unit of the token.
     */
    uint8 public decimals;

    /*
     * Total supply available
     * of the token.
     */
    uint _totalSupply;

    /*
     * Stores token holder
     * balances.
     */
    mapping(address => uint) balances;

    /*
     * Stores allowances
     * of tokens holders to
     * each other.
     */
    mapping(address => mapping(address => uint)) allowed;

    /*
     * Method to claim unsold
     * private sale tokens into
     * the reserve.
     */
    function claimReserve() public {

        //ONLY RESERVE ADDRESS CAN CLAIM
        require(msg.sender == roles[4], 'Only reserve address can claim!');

        //RESERVE CAN ONLY BE CLAIMED AFTER END OF PUBLIC SALE
        if(block.timestamp < pubSaleEnd + 7 * 24 * 60 * 60){
            revert('Reserve can not be claimed before end of public sale!');
        }

        //CLAIM FUNDS
        balances[roles[4]] = balances[roles[4]].add(balances[roles[0]]);

        //EMIT TRANSFER EVENTS
        emit Transfer(roles[0], roles[4], balances[roles[0]]);

        //DEDUCT BALANCES OF EXCHANGE AND PRIV SELLER
        balances[roles[0]] = 0;
    }

    /*
     * Mapping for roles
     * to addresses:
     * 0 => Private seller
     * 1 => Exchange
     * 2 => Management
     * 3 => Centrum Circle
     * 4 => Reserve
     * 5 => Rate updater
     */
    mapping(uint => address) roles;

    /*
     * Get the current address
     * for a given role.
     */
    function getRoleAddress(uint _roleId) public view returns (address) {
        return roles[_roleId];
    }

    /*
     * Sets an address
     * for a given role.
     */
    function setRoleAddress(uint _roleId, address _newAddress) public onlyOwner {

        //ENSURE THAT ONLY ADDRESSES WITHOUT BALANCE CAN BE ASSIGNED
        require(balances[_newAddress] == 0, 'Only zero balance addresses can be assigned!');

        //GET OLD ADDRESS OF THE ROLE
        address _oldAddress = roles[_roleId];

        //IF TRYING TO UPDATE EXCHANGE ADDRESS, REVERT
        if(_roleId == 1 && _oldAddress != address(0)){
            revert('Exchange address MUST not be updated!');
        }

        //IF THIS IS THE INITIALIZATION OF THE ADDRESS
        if(_oldAddress == address(0)){

            //INITIALIZATION BALANCE
            uint initBalance = 0;

            //PRIVATE SELLER
            if(_roleId == 0){
                initBalance = 133333200;
            }

            //EXCHANGE
            if(_roleId == 1){
                initBalance = 88888800;
            }

            //MANAGEMENT
            if(_roleId == 2){
                initBalance = 44444400;
            }

            //CENTRUM
            if(_roleId == 3){
                initBalance = 44444400;
            }

            //RESERVE
            if(_roleId == 4){
                initBalance = 22222200;
            }

            //5 = RATE UPDATER

            //IF THERE IS BALANCE TO BE INITIALIZED, DO IT
            if(initBalance > 0){
                initBalance = initBalance * 10**uint(decimals);
                balances[_newAddress] = initBalance;
                emit Transfer(address(0), _newAddress, initBalance);

                //FOR MANAGEMENT AND RESERVE, APPLY FREEZE TO THE INIT BALANCE
                if(_roleId == 2 || _roleId == 4){
                    frozenBalances[_newAddress] = initBalance;
                    frozenTiming[_newAddress] = block.timestamp + 180 * 24 * 60 * 60;
                    emit FreezeBalance(_newAddress, initBalance, frozenTiming[_newAddress]);
                }
            }
        }

        //IF CURRENT ACCOUNT HAS BALANCE
        if(balances[_oldAddress] > 0){

            //MOVE FUNDS OF OLD ACCOUNT TO NEW ACCOUNT
            balances[_newAddress] = balances[_oldAddress];

            //EMIT TRANSFER EVENT
            emit Transfer(_oldAddress, _newAddress, balances[_oldAddress]);

            //REMOVE OLD BALANCE
            balances[_oldAddress] = 0;

            //TRANSFER FROZEN BALANCES AS WELL
            if(frozenBalances[_oldAddress] > 0){

                frozenBalances[_newAddress] = frozenBalances[_oldAddress];
                frozenTiming[_newAddress] = frozenTiming[_oldAddress];

                emit FreezeBalance(_newAddress, frozenBalances[_newAddress], frozenTiming[_newAddress]);

                frozenBalances[_oldAddress] = 0;
                frozenTiming[_oldAddress] = 0;
            }
        }

        //ASSIGN NEW ADDRESS
        roles[_roleId] = _newAddress;
    }

    /*
     * The current conversion rate of
     * 1 QARK => USD cents.
     */
    uint public conversionRate;

    function setRate(uint _newConversionRate) public {
        require(msg.sender == roles[5], 'Only rate updater is allowed to perform this!');
        conversionRate = _newConversionRate;
    }

    /*
     * Stores the locked balances
     * of those who bought during
     * private sale and are restricted
     * from selling after public sale.
     */
    mapping(address => uint256) lockedBalances;

    /*
     * UNIX timestamp of the start
     * time of the public sale.
     */
    uint public pubSaleStart;

    /*
     * UNIX timestamp of the end
     * time of the public sale.
     */
    uint public pubSaleEnd;

    /*
     * UNIX timestamp of the end
     * time of the private buyers'
     * restrictions.
     */
    uint public restrictionEnd;

    /*
     * Sets the public sale and
     * restrictions related timings.
     */
    function setTiming(uint _pubSaleStart, uint _pubSaleEnd, uint _restrictionEnd) public onlyOwner {
        require(pubSaleStart == 0 && pubSaleEnd == 0 && restrictionEnd == 0, 'Timing only can be set once');
        pubSaleStart = _pubSaleStart;
        pubSaleEnd = _pubSaleEnd;
        restrictionEnd = _restrictionEnd;
    }

    /*
     * Constructs the contract
     * with 333,333,300 QARK tokens
     * with 18 decimals.
     */
    constructor() public {
        symbol = "QARK";
        name = "QARK Token of QAN Platform";
        decimals = 18;
        _totalSupply = 333333000 * 10**uint(decimals);
    }

    /*
     * Returns the total supply
     * minus the amounts of burned tokens.
     */
    function totalSupply() public view returns (uint) {
        return _totalSupply.sub(balances[address(0)]);
    }

    /*
     * Returns the balance
     * of a given token holder.
     */
    function balanceOf(address tokenOwner) public view returns (uint balance) {
        return balances[tokenOwner];
    }

    /*
     * Returns the locked balance
     * of a given token holder.
     */
    function lockedBalanceOf(address tokenOwner) public view returns (uint lockedBalance) {
        return lockedBalances[tokenOwner];
    }

    /*
     * Stores the frozen balances
     * of those who bought have
     * frozen their own balances
     * until a certain UNIX timestamp.
     */
    mapping(address => uint) frozenBalances;

    /*
     * Stores the UNIX timestamps
     * until when a certain token
     * holders' tokens have frozen
     * their own tokens.
     */
    mapping(address => uint) frozenTiming;

    /*
     * Method to freeze own
     * tokens until a certain time.
     */
    function freezeOwnTokens(uint amount, uint until) public {

        //FIRST AUTO UNFREEZE ANY PREVIOUSLY LOCKED TOKENS
        _autoUnfreeze();

        //AVAIL BALANCE MUST BE GREATER THAN TOKENS TO BE LOCKED
        require(balances[msg.sender] - lockedBalances[msg.sender] > amount);

        //ALSO CURRENTLY LOCKED AMOUNT MUST BE LESS THAN TOKENS TO BE LOCKED
        require(frozenBalances[msg.sender] < amount);

        //LOCK PERIOD MUST BE FUTURE, AND GREATER THAN CURRENT LOCK
        require(until > block.timestamp && until > frozenTiming[msg.sender]);

        //MAKE FREEZE
        frozenBalances[msg.sender] = amount;
        frozenTiming[msg.sender] = until;
    }

    /*
     * Returns the frozen balance
     * of a given token holder.
     */
    function frozenBalanceOf(address tokenOwner) public view returns (uint frozenBalance) {
        return frozenBalances[tokenOwner];
    }

    /*
     * Returns the UNIX timestamp
     * until when some tokens
     * of a given token holder
     * are frozen.
     */
    function frozenTimingOf(address tokenOwner) public view returns (uint until) {
        return frozenTiming[tokenOwner];
    }

    /*
     * Automatically unfreezes
     * all tokens of msg.sender
     * if freeze time has passed.
     */
    function _autoUnfreeze() private {

        if(frozenBalances[msg.sender] > 0 && block.timestamp > frozenTiming[msg.sender]){
            frozenBalances[msg.sender] = 0;
        }
    }

    /*
     * Private method to handle private
     * sale transfers.
     */
    function _privTransfer(address to, uint tokens) private returns (bool success) {

        //ONLY PRIVATE SELLER CAN EXECUTE PRIVATE SALE TRANSACTION
        require(msg.sender == roles[0], 'Only private seller can make private sale TX!');

        //NO PRIVATE SALE TRANSACTION CAN BE MADE AFTER PUBLIC SALE CLOSED
        require(block.timestamp < pubSaleEnd, 'No transfer from private seller after public sale!');

        //LOCK THE TOKEN AMOUNT OF THE BUYER
        lockedBalances[to] = lockedBalances[to].add(tokens);
        emit LockBalance(msg.sender, to, tokens);
        emit LogAddress('PrivateSaleFrom', msg.sender);
        //MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Private method to handle public
     * sale (IEO) transfers.
     */
    function _pubTransfer(address to, uint tokens) private returns (bool success) {

        //MAKE SURE PRIVATE AND RESTRICTED TRANSACTIONS ARE NOT HANDLED HERE
        require(msg.sender != roles[0], 'Public transfer not allowed from private seller');

        //MAKE SURE THAT ONLY REGULAR TRANSACTIONS CAN BE EXECUTED NOT INVOLVING LOCKED TOKENS
        require(balances[msg.sender].sub(lockedBalances[msg.sender]) >= tokens, 'Not enough unlocked tokens!');
        emit LogAddress('PublicSaleFrom', msg.sender);
        //MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Private method to handle secondary
     * market transfers (after IEO).
     */
    function _postPubTransfer(address to, uint tokens) private returns (bool success) {

        //IF PUBLIC SALE ENDED AND EXCHANGE OR PRIVATE SELLER TRIES TO MAKE A TRANSFER
        if(block.timestamp > pubSaleEnd + 7 * 24 * 60 * 60 && (msg.sender == roles[1] || msg.sender == roles[0])){
            revert('No transfer from exchange / private seller after public sale!');
        }

        //IF PRIVATE SALE RESTRICTIONS DID NOT END YET AND SENDER IS A PRIVATE SALE BUYER
        if(block.timestamp < restrictionEnd && lockedBalances[msg.sender] > 0){
            emit LogAddress('RestrictedSaleFrom', msg.sender);
            return _restrictedTransfer(to, tokens);
        }
        emit LogAddress('PostPublicSaleFrom', msg.sender);
        //ELSE MAKE A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Makes sure that private sale buyers
     * can withdraw unsold tokens on exchanges
     * even if restrictions are active.
     */
    mapping(address => address) withdrawMap;

    /*
     * Private method to handle transactions
     * of private sale buyers to whom certain
     * restrictions apply to protect market prices.
     */
    function _restrictedTransfer(address to, uint tokens) private returns (bool success) {

        //DECLARE CURRENT BALANCES
        uint totalBalance = balances[msg.sender];
        uint lockedBalance = lockedBalances[msg.sender];
        uint unlockedBalance = totalBalance.sub(lockedBalance);

        //IF PRICE IS LOW, THIS ADDRESS IS RESTRICTED, AND IS NOT TRYING TO WITHDRAW TO HIS PREVIOUS ACCOUNT
        if(conversionRate < 39 && unlockedBalance < tokens && to != withdrawMap[msg.sender]){
            revert('Private token trading halted because of low market prices!');
        }

        //IF THERE IS NOT ENOUGH UNLOCKED BALANCE TO SEND TOKENS
        if(unlockedBalance < tokens){

            //CALCULATE TOKENS TO BE LOCKED ON RECIPIENT'S ACCOUNT
            uint lockables = tokens.sub(unlockedBalance);

            //LOCK THEM
            lockedBalances[to] = lockedBalances[to].add(lockables);
            emit LockBalance(msg.sender, to, lockables);

            //RELEASE LOCK ON SENDER
            lockedBalances[msg.sender] = lockedBalances[msg.sender].sub(lockables);

            //UPDATE WITHDRAW MAP TO ENABLE SENDER TO SEND FUNDS BACK TO HIMSELF LATER
            withdrawMap[to] = msg.sender;
        }

        //PERFORM A REGULAR TRANSFER
        return _regularTransfer(to, tokens);
    }

    /*
     * Performs a regular
     * ERC20 transfer.
     */
    function _regularTransfer(address to, uint tokens) private returns (bool success) {

        //DEDUCT FROM SENDER, CREDIT BENEFICIARY
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    /*
     * Transfer logic to handle
     * all possible scenarios:
     * - Private sale
     * - Public sale (IEO)
     * - Secondary market trading
     */
    function transfer(address to, uint tokens) public returns (bool success) {

        //AUTOMATICALLY UNFREEZE ANY UNFREEZABLE TOKENS
        _autoUnfreeze();

        //IF THE SENDER STILL HAS FROZEN BALANCE, CHECK FOR LIQUIDITY
        if(frozenBalances[msg.sender] > 0 && balances[msg.sender] - frozenBalances[msg.sender] < tokens){
            revert('Frozen balance can not be spent yet, insufficient tokens!');
        }

        //REQUIRE THAT SENDER HAS THE BALANCE TO MAKE THE TRANSFER
        require(balances[msg.sender] >= tokens, 'Not enough liquid tokens!');

        //IF RESERVE IS TRYING TO MAKE A TRANSFER AND 1 YEAR FREEZE NOT PASSED YET, REVERT
        if(msg.sender == roles[4] && block.timestamp < pubSaleEnd + 60 * 60 * 24 * 30 * 12){
            revert('Reserve can not be accessed before the 1 year freeze period');
        }

        //HANDLE PRIVATE SALE TRANSACTIONS
        if(msg.sender == roles[0]){
            return _privTransfer(to, tokens);
        }

        //HANDLE PUBLIC SALE TRANSACTIONS
        if(block.timestamp > pubSaleStart && block.timestamp < pubSaleEnd){
            return _pubTransfer(to, tokens);
        }

        //HANDLE TRANSACTIONS AFTER PUBLIC SALE ENDED
        if(block.timestamp > pubSaleEnd){
            return _postPubTransfer(to, tokens);
        }

        //NO CASES MATCHED
        return false;
    }

    /*
     * Grant spend ability
     * of tokens to a third party.
     */
    function approve(address spender, uint tokens) public returns (bool success) {

        //DURING RESTRICTION PERIOD, NO APPROVAL TRANSFERS FOR PRIV BUYERS
        if(block.timestamp < restrictionEnd){
            require(lockedBalances[msg.sender] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[spender] == 0, 'This address MUST not start approval related transactions!');
        }

        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    /*
     * Transfer tokens from another
     * address given they granted approval
     * to msg.sender of the current call.
     */
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {

        //DURING RESTRICTION PERIOD, NO APPROVAL TRANSFERS FOR PRIV BUYERS
        if(block.timestamp < restrictionEnd){
            require(lockedBalances[msg.sender] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[from] == 0, 'This address MUST not start approval related transactions!');
            require(lockedBalances[to] == 0, 'This address MUST not start approval related transactions!');
        }

        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    /*
     * Returns the amount of tokens a
     * spender is allowed to spend
     * from tokenOwner's balance.
     */
    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }

    function () external payable {

        //DON'T ACCEPT ETH
        revert();
    }

    /*
     * Enables the contract owner
     * to retrieve other ERC20 tokens
     * sent to the contract.
     */
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"until","type":"uint256"}],"name":"FreezeBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"LockBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"LogAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"LogString","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LogUint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"}],"name":"freezeOwnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"frozenBalanceOf","outputs":[{"internalType":"uint256","name":"frozenBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"frozenTimingOf","outputs":[{"internalType":"uint256","name":"until","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_roleId","type":"uint256"}],"name":"getRoleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"lockedBalanceOf","outputs":[{"internalType":"uint256","name":"lockedBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pubSaleEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pubSaleStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"restrictionEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newConversionRate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_roleId","type":"uint256"},{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setRoleAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_pubSaleStart","type":"uint256"},{"internalType":"uint256","name":"_pubSaleEnd","type":"uint256"},{"internalType":"uint256","name":"_restrictionEnd","type":"uint256"}],"name":"setTiming","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f5141524b00000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000132565b506040518060400160405280601a81526020017f5141524b20546f6b656e206f662051414e20506c6174666f726d00000000000081525060039080519060200190620000ed92919062000132565b506012600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a6313de420802600581905550620001e1565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017557805160ff1916838001178555620001a6565b82800160010185558215620001a6579182015b82811115620001a557825182559160200191906001019062000188565b5b509050620001b59190620001b9565b5090565b620001de91905b80821115620001da576000816000905550600101620001c0565b5090565b90565b613e5b80620001f16000396000f3fe60806040526004361061019c5760003560e01c806379ba5097116100ec578063cfd9480b1161008a578063dc39d06d11610064578063dc39d06d146108fc578063dd62ed3e1461096f578063e5d382ed146109f4578063f2fde38b14610a4f5761019c565b8063cfd9480b1461084f578063d4ee1d901461087a578063dacec154146108d15761019c565b806395d89b41116100c657806395d89b41146106a2578063a238b62d14610732578063a9059cbb14610777578063be91de53146107ea5761019c565b806379ba5097146106095780637ffdf53e146106205780638da5cb5b1461064b5761019c565b806334fcf43711610159578063593557361161013357806359355736146104995780635ea8d05d146104fe57806370a0823114610529578063789a670b1461058e5761019c565b806334fcf437146103f85780633fe5f054146104335780634445f0991461044a5761019c565b806306fdde03146101a1578063095ea7b31461023157806318160ddd146102a45780631a864d1d146102cf57806323b872dd14610334578063313ce567146103c7575b600080fd5b3480156101ad57600080fd5b506101b6610aa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b5061028a6004803603604081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b604051808215151515815260200191505060405180910390f35b3480156102b057600080fd5b506102b9610d6b565b6040518082815260200191505060405180910390f35b3480156102db57600080fd5b5061031e600480360360208110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0f565b604051808215151515815260200191505060405180910390f35b3480156103d357600080fd5b506103dc61128d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561040457600080fd5b506104316004803603602081101561041b57600080fd5b81019080803590602001909291905050506112a0565b005b34801561043f57600080fd5b50610448611362565b005b34801561045657600080fd5b506104976004803603606081101561046d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117be565b005b3480156104a557600080fd5b506104e8600480360360208110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c5565b6040518082815260200191505060405180910390f35b34801561050a57600080fd5b5061051361190e565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105786004803603602081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611914565b6040518082815260200191505060405180910390f35b34801561059a57600080fd5b506105c7600480360360208110156105b157600080fd5b810190808035906020019092919050505061195d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061557600080fd5b5061061e61199a565b005b34801561062c57600080fd5b50610635611b37565b6040518082815260200191505060405180910390f35b34801561065757600080fd5b50610660611b3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611b62565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073e57600080fd5b506107756004803603604081101561075557600080fd5b810190808035906020019092919080359060200190929190505050611c00565b005b34801561078357600080fd5b506107d06004803603604081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dc1565b604051808215151515815260200191505060405180910390f35b3480156107f657600080fd5b506108396004803603602081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561085b57600080fd5b5061086461217f565b6040518082815260200191505060405180910390f35b34801561088657600080fd5b5061088f612185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66121ab565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109556004803603604081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b604051808215151515815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f7565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a4d60048036036040811015610a1757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061237e565b005b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c89565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505081565b6000600d54421015610c7b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610dc1600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612d2690919063ffffffff16565b905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600d54421015610fe4576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b61103682600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111da82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b600860006005815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613d1c602d913960400191505060405180910390fd5b8060098190555050565b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c79207265736572766520616464726573732063616e20636c61696d210081525060200191505060405180910390fd5b62093a80600c5401421015611497576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180613c7b6035913960400191505060405180910390fd5b61158f600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b60066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181757600080fd5b6000600b5414801561182b57506000600c54145b801561183957506000600d54145b6118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54696d696e67206f6e6c792063616e20626520736574206f6e6365000000000081525060200191505060405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f457600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b505050505081565b611c08612d5a565b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611c9457600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cdf57600080fd5b4281118015611d2c5750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b611d3557600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000611dcb612d5a565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611e99575081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613bc16039913960400191505060405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420656e6f756768206c697175696420746f6b656e73210000000000000081525060200191505060405180910390fd5b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561201a57506301da9c00600c540142105b15612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613d83603b913960400191505060405180910390fd5b6008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156120e8576120e18383612e34565b9050612130565b600b54421180156120fa5750600c5442105b156121105761210983836130ef565b9050612130565b600c5442111561212b57612124838361335d565b9050612130565b600090505b92915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461220c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122b457600080fd5b505af11580156122c8573d6000803e3d6000fd5b505050506040513d60208110156122de57600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d757600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461246f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613dfb602c913960400191505060405180910390fd5b60006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001831480156124e45750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c276025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127d05760008090506000841415612585576307f280d090505b60018414156125965763054c55e090505b60028414156125a7576302a62af090505b60038414156125b8576302a62af090505b60048414156125c957630153157890505b60008111156127ce57600460009054906101000a900460ff1660ff16600a0a8102905080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360028414806126a55750600484145b156127cd5780600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062ed4e004201600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a25b5b505b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3257600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3157600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae9600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a26000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b816008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ce257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115612d3557600080fd5b818303905092915050565b6000818301905082811015612d5457600080fd5b92915050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612de75750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442115b15612e32576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613bfa602d913960400191505060405180910390fd5b600c544210612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613cea6032913960400191505060405180910390fd5b612f9982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0846040518082815260200191505060405180910390a37f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600f8152602001807f5072697661746553616c6546726f6d00000000000000000000000000000000008152506020019250505060405180910390a16130e78383613644565b905092915050565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156131a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613c4c602f913960400191505060405180910390fd5b8161323b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b10156132af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820756e6c6f636b656420746f6b656e7321000000000081525060200191505060405180910390fd5b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600e8152602001807f5075626c696353616c6546726f6d0000000000000000000000000000000000008152506020019250505060405180910390a16133558383613644565b905092915050565b600062093a80600c54014211801561343d5750600860006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061343c57506008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b15613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613dbe603d913960400191505060405180910390fd5b600d54421080156134e357506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613595577f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f5265737472696374656453616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161358e83836137df565b905061363e565b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f506f73745075626c696353616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161363b8383613644565b90505b92915050565b600061369882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061387d8284612d2690919063ffffffff16565b9050602760095410801561389057508481105b80156139275750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561397d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613d49603a913960400191505060405180910390fd5b84811015613bab57600061399a8287612d2690919063ffffffff16565b90506139ee81600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0836040518082815260200191505060405180910390a3613ae881600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b613bb58686613644565b93505050509291505056fe46726f7a656e2062616c616e63652063616e206e6f74206265207370656e74207965742c20696e73756666696369656e7420746f6b656e73214f6e6c7920707269766174652073656c6c65722063616e206d616b6520707269766174652073616c652054582145786368616e67652061646472657373204d555354206e6f742062652075706461746564215075626c6963207472616e73666572206e6f7420616c6c6f7765642066726f6d20707269766174652073656c6c6572526573657276652063616e206e6f7420626520636c61696d6564206265666f726520656e64206f66207075626c69632073616c6521546869732061646472657373204d555354206e6f7420737461727420617070726f76616c2072656c61746564207472616e73616374696f6e73214e6f207472616e736665722066726f6d20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c792072617465207570646174657220697320616c6c6f77656420746f20706572666f726d2074686973215072697661746520746f6b656e2074726164696e672068616c7465642062656361757365206f66206c6f77206d61726b65742070726963657321526573657276652063616e206e6f74206265206163636573736564206265666f7265207468652031207965617220667265657a6520706572696f644e6f207472616e736665722066726f6d2065786368616e6765202f20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c79207a65726f2062616c616e6365206164647265737365732063616e2062652061737369676e656421a265627a7a723158206db395f728c0e52cbf364b05a79c620e9214933e428c1f89663fdc7d55ed614864736f6c634300050c0032

Deployed Bytecode

0x60806040526004361061019c5760003560e01c806379ba5097116100ec578063cfd9480b1161008a578063dc39d06d11610064578063dc39d06d146108fc578063dd62ed3e1461096f578063e5d382ed146109f4578063f2fde38b14610a4f5761019c565b8063cfd9480b1461084f578063d4ee1d901461087a578063dacec154146108d15761019c565b806395d89b41116100c657806395d89b41146106a2578063a238b62d14610732578063a9059cbb14610777578063be91de53146107ea5761019c565b806379ba5097146106095780637ffdf53e146106205780638da5cb5b1461064b5761019c565b806334fcf43711610159578063593557361161013357806359355736146104995780635ea8d05d146104fe57806370a0823114610529578063789a670b1461058e5761019c565b806334fcf437146103f85780633fe5f054146104335780634445f0991461044a5761019c565b806306fdde03146101a1578063095ea7b31461023157806318160ddd146102a45780631a864d1d146102cf57806323b872dd14610334578063313ce567146103c7575b600080fd5b3480156101ad57600080fd5b506101b6610aa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023d57600080fd5b5061028a6004803603604081101561025457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3e565b604051808215151515815260200191505060405180910390f35b3480156102b057600080fd5b506102b9610d6b565b6040518082815260200191505060405180910390f35b3480156102db57600080fd5b5061031e600480360360208110156102f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610dc6565b6040518082815260200191505060405180910390f35b34801561034057600080fd5b506103ad6004803603606081101561035757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0f565b604051808215151515815260200191505060405180910390f35b3480156103d357600080fd5b506103dc61128d565b604051808260ff1660ff16815260200191505060405180910390f35b34801561040457600080fd5b506104316004803603602081101561041b57600080fd5b81019080803590602001909291905050506112a0565b005b34801561043f57600080fd5b50610448611362565b005b34801561045657600080fd5b506104976004803603606081101561046d57600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506117be565b005b3480156104a557600080fd5b506104e8600480360360208110156104bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c5565b6040518082815260200191505060405180910390f35b34801561050a57600080fd5b5061051361190e565b6040518082815260200191505060405180910390f35b34801561053557600080fd5b506105786004803603602081101561054c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611914565b6040518082815260200191505060405180910390f35b34801561059a57600080fd5b506105c7600480360360208110156105b157600080fd5b810190808035906020019092919050505061195d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561061557600080fd5b5061061e61199a565b005b34801561062c57600080fd5b50610635611b37565b6040518082815260200191505060405180910390f35b34801561065757600080fd5b50610660611b3d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611b62565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106f75780820151818401526020810190506106dc565b50505050905090810190601f1680156107245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561073e57600080fd5b506107756004803603604081101561075557600080fd5b810190808035906020019092919080359060200190929190505050611c00565b005b34801561078357600080fd5b506107d06004803603604081101561079a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dc1565b604051808215151515815260200191505060405180910390f35b3480156107f657600080fd5b506108396004803603602081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561085b57600080fd5b5061086461217f565b6040518082815260200191505060405180910390f35b34801561088657600080fd5b5061088f612185565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108dd57600080fd5b506108e66121ab565b6040518082815260200191505060405180910390f35b34801561090857600080fd5b506109556004803603604081101561091f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b604051808215151515815260200191505060405180910390f35b34801561097b57600080fd5b506109de6004803603604081101561099257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f7565b6040518082815260200191505060405180910390f35b348015610a0057600080fd5b50610a4d60048036036040811015610a1757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061237e565b005b348015610a5b57600080fd5b50610a9e60048036036020811015610a7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c89565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b505050505081565b6000600d54421015610c7b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610dc1600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554612d2690919063ffffffff16565b905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600d54421015610fe4576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613cb0603a913960400191505060405180910390fd5b5b61103682600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110882600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111da82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b600860006005815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613d1c602d913960400191505060405180910390fd5b8060098190555050565b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c79207265736572766520616464726573732063616e20636c61696d210081525060200191505060405180910390fd5b62093a80600c5401421015611497576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180613c7b6035913960400191505060405180910390fd5b61158f600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b60066000600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461181757600080fd5b6000600b5414801561182b57506000600c54145b801561183957506000600d54145b6118ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54696d696e67206f6e6c792063616e20626520736574206f6e6365000000000081525060200191505060405180910390fd5b82600b8190555081600c8190555080600d81905550505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119f457600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b505050505081565b611c08612d5a565b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611c9457600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cdf57600080fd5b4281118015611d2c5750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481115b611d3557600080fd5b81600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000611dcb612d5a565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611e99575081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403105b15611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180613bc16039913960400191505060405180910390fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611fa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420656e6f756768206c697175696420746f6b656e73210000000000000081525060200191505060405180910390fd5b600860006004815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561201a57506301da9c00600c540142105b15612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613d83603b913960400191505060405180910390fd5b6008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156120e8576120e18383612e34565b9050612130565b600b54421180156120fa5750600c5442105b156121105761210983836130ef565b9050612130565b600c5442111561212b57612124838361335d565b9050612130565b600090505b92915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461220c57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156122b457600080fd5b505af11580156122c8573d6000803e3d6000fd5b505050506040513d60208110156122de57600080fd5b8101908080519060200190929190505050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d757600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461246f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613dfb602c913960400191505060405180910390fd5b60006008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001831480156124e45750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561253a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613c276025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127d05760008090506000841415612585576307f280d090505b60018414156125965763054c55e090505b60028414156125a7576302a62af090505b60038414156125b8576302a62af090505b60048414156125c957630153157890505b60008111156127ce57600460009054906101000a900460ff1660ff16600a0a8102905080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360028414806126a55750600484145b156127cd5780600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062ed4e004201600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae982600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a25b5b505b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3257600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612c3157600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fc11cbbff64e22615735928e4b268605ecf66b6f7df3beb072453343af1d3eae9600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808381526020018281526020019250505060405180910390a26000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b816008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612ce257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600082821115612d3557600080fd5b818303905092915050565b6000818301905082811015612d5457600080fd5b92915050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612de75750600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442115b15612e32576000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613bfa602d913960400191505060405180910390fd5b600c544210612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180613cea6032913960400191505060405180910390fd5b612f9982600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0846040518082815260200191505060405180910390a37f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600f8152602001807f5072697661746553616c6546726f6d00000000000000000000000000000000008152506020019250505060405180910390a16130e78383613644565b905092915050565b60006008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156131a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613c4c602f913960400191505060405180910390fd5b8161323b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b10156132af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f7420656e6f75676820756e6c6f636b656420746f6b656e7321000000000081525060200191505060405180910390fd5b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252600e8152602001807f5075626c696353616c6546726f6d0000000000000000000000000000000000008152506020019250505060405180910390a16133558383613644565b905092915050565b600062093a80600c54014211801561343d5750600860006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061343c57506008600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b5b15613493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180613dbe603d913960400191505060405180910390fd5b600d54421080156134e357506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613595577f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f5265737472696374656453616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161358e83836137df565b905061363e565b7f62ddffe5b5108385f7a590f100e1ee414ad9551a31f089e64e82998440785e1e3360405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825260128152602001807f506f73745075626c696353616c6546726f6d00000000000000000000000000008152506020019250505060405180910390a161363b8383613644565b90505b92915050565b600061369882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372d82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061387d8284612d2690919063ffffffff16565b9050602760095410801561389057508481105b80156139275750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561397d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613d49603a913960400191505060405180910390fd5b84811015613bab57600061399a8287612d2690919063ffffffff16565b90506139ee81600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4090919063ffffffff16565b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f890e7ae9c3352ecc07d1748fdf39104b2982d8b502cacc2b0c57f0134a60c6e0836040518082815260200191505060405180910390a3613ae881600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d2690919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b613bb58686613644565b93505050509291505056fe46726f7a656e2062616c616e63652063616e206e6f74206265207370656e74207965742c20696e73756666696369656e7420746f6b656e73214f6e6c7920707269766174652073656c6c65722063616e206d616b6520707269766174652073616c652054582145786368616e67652061646472657373204d555354206e6f742062652075706461746564215075626c6963207472616e73666572206e6f7420616c6c6f7765642066726f6d20707269766174652073656c6c6572526573657276652063616e206e6f7420626520636c61696d6564206265666f726520656e64206f66207075626c69632073616c6521546869732061646472657373204d555354206e6f7420737461727420617070726f76616c2072656c61746564207472616e73616374696f6e73214e6f207472616e736665722066726f6d20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c792072617465207570646174657220697320616c6c6f77656420746f20706572666f726d2074686973215072697661746520746f6b656e2074726164696e672068616c7465642062656361757365206f66206c6f77206d61726b65742070726963657321526573657276652063616e206e6f74206265206163636573736564206265666f7265207468652031207965617220667265657a6520706572696f644e6f207472616e736665722066726f6d2065786368616e6765202f20707269766174652073656c6c6572206166746572207075626c69632073616c65214f6e6c79207a65726f2062616c616e6365206164647265737365732063616e2062652061737369676e656421a265627a7a723158206db395f728c0e52cbf364b05a79c620e9214933e428c1f89663fdc7d55ed614864736f6c634300050c0032

Deployed Bytecode Sourcemap

2153:17833:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19654:8;;;2477:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2477:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2477:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:577;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17750:577:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17750:577:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8932:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8932:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11048:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11048:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11048:127:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18476:818;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18476:818:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18476:818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2556:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2556:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7312:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7312:194:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7312:194:0;;;;;;;;;;;;;;;;;:::i;:::-;;3042:664;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3042:664:0;;;:::i;:::-;;8198:331;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8198:331:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8198:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9345:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9345:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9345:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7935:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7935:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9132:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9132:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9132:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4042:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4042:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4042:108:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1432:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1432:196:0;;;:::i;:::-;;7277:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7277:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1034:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1034:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2375:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2375:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9976:698;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9976:698:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9976:698:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16256:1405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16256:1405:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16256:1405:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10767:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10767:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10767:138:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7818:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7818:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1061:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1061:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8075:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8075:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19799:184;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19799:184:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19799:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19429:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19429:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19429:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4225:2959;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4225:2959:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4225:2959:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1324:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1324:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1324:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2477:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17750:577::-;17813:12;17937:14;;17919:15;:32;17916:279;;;18005:1;17975:14;:26;17990:10;17975:26;;;;;;;;;;;;;;;;:31;17967:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18119:1;18092:14;:23;18107:7;18092:23;;;;;;;;;;;;;;;;:28;18084:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17916:279;18238:6;18207:7;:19;18215:10;18207:19;;;;;;;;;;;;;;;:28;18227:7;18207:28;;;;;;;;;;;;;;;:37;;;;18281:7;18260:37;;18269:10;18260:37;;;18290:6;18260:37;;;;;;;;;;;;;;;;;;18315:4;18308:11;;17750:577;;;;:::o;8932:114::-;8976:4;9000:38;9017:8;:20;9034:1;9017:20;;;;;;;;;;;;;;;;9000:12;;:16;;:38;;;;:::i;:::-;8993:45;;8932:114;:::o;11048:127::-;11113:10;11143:12;:24;11156:10;11143:24;;;;;;;;;;;;;;;;11136:31;;11048:127;;;:::o;18476:818::-;18553:12;18677:14;;18659:15;:32;18656:385;;;18745:1;18715:14;:26;18730:10;18715:26;;;;;;;;;;;;;;;;:31;18707:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18856:1;18832:14;:20;18847:4;18832:20;;;;;;;;;;;;;;;;:25;18824:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:1;18943:14;:18;18958:2;18943:18;;;;;;;;;;;;;;;;:23;18935:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18656:385;19070:26;19089:6;19070:8;:14;19079:4;19070:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;19053:8;:14;19062:4;19053:14;;;;;;;;;;;;;;;:43;;;;19135:37;19165:6;19135:7;:13;19143:4;19135:13;;;;;;;;;;;;;;;:25;19149:10;19135:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;19107:7;:13;19115:4;19107:13;;;;;;;;;;;;;;;:25;19121:10;19107:25;;;;;;;;;;;;;;;:65;;;;19198:24;19215:6;19198:8;:12;19207:2;19198:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;19183:8;:12;19192:2;19183:12;;;;;;;;;;;;;;;:39;;;;19253:2;19238:26;;19247:4;19238:26;;;19257:6;19238:26;;;;;;;;;;;;;;;;;;19282:4;19275:11;;18476:818;;;;;:::o;2556:21::-;;;;;;;;;;;;;:::o;7312:194::-;7394:5;:8;7400:1;7394:8;;;;;;;;;;;;;;;;;;;;;7380:22;;:10;:22;;;7372:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7480:18;7463:14;:35;;;;7312:194;:::o;3042:664::-;3150:5;:8;3156:1;3150:8;;;;;;;;;;;;;;;;;;;;;3136:22;;:10;:22;;;3128:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3305:16;3292:10;;:29;3274:15;:47;3271:141;;;3337:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3271:141;3468:42;3491:8;:18;3500:5;:8;3506:1;3500:8;;;;;;;;;;;;;;;;;;;;;3491:18;;;;;;;;;;;;;;;;3468:8;:18;3477:5;:8;3483:1;3477:8;;;;;;;;;;;;;;;;;;;;;3468:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;3447:8;:18;3456:5;:8;3462:1;3456:8;;;;;;;;;;;;;;;;;;;;;3447:18;;;;;;;;;;;;;;;:63;;;;3579:5;:8;3585:1;3579:8;;;;;;;;;;;;;;;;;;;;;3560:48;;3569:5;:8;3575:1;3569:8;;;;;;;;;;;;;;;;;;;;;3560:48;;;3589:8;:18;3598:5;:8;3604:1;3598:8;;;;;;;;;;;;;;;;;;;;;3589:18;;;;;;;;;;;;;;;;3560:48;;;;;;;;;;;;;;;;;;3697:1;3676:8;:18;3685:5;:8;3691:1;3685:8;;;;;;;;;;;;;;;;;;;;;3676:18;;;;;;;;;;;;;;;:22;;;;3042:664::o;8198:331::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;8329:1;8313:12;;:17;:36;;;;;8348:1;8334:10;;:15;8313:36;:59;;;;;8371:1;8353:14;;:19;8313:59;8305:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8430:13;8415:12;:28;;;;8467:11;8454:10;:24;;;;8506:15;8489:14;:32;;;;8198:331;;;:::o;9345:138::-;9411:18;9449:14;:26;9464:10;9449:26;;;;;;;;;;;;;;;;9442:33;;9345:138;;;:::o;7935:22::-;;;;:::o;9132:120::-;9192:12;9224:8;:20;9233:10;9224:20;;;;;;;;;;;;;;;;9217:27;;9132:120;;;:::o;4042:108::-;4101:7;4128:5;:14;4134:7;4128:14;;;;;;;;;;;;;;;;;;;;;4121:21;;4042:108;;;:::o;1432:196::-;1499:8;;;;;;;;;;;1485:22;;:10;:22;;;1477:31;;;;;;1552:8;;;;;;;;;;;1524:37;;1545:5;;;;;;;;;;;1524:37;;;;;;;;;;;;1580:8;;;;;;;;;;;1572:5;;:16;;;;;;;;;;;;;;;;;;1618:1;1599:8;;:21;;;;;;;;;;;;;;;;;;1432:196::o;7277:26::-;;;;:::o;1034:20::-;;;;;;;;;;;;;:::o;2375:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9976:698::-;10106:15;:13;:15::i;:::-;10260:6;10231:14;:26;10246:10;10231:26;;;;;;;;;;;;;;;;10208:8;:20;10217:10;10208:20;;;;;;;;;;;;;;;;:49;:58;10200:67;;;;;;10395:6;10366:14;:26;10381:10;10366:26;;;;;;;;;;;;;;;;:35;10358:44;;;;;;10500:15;10492:5;:23;:59;;;;;10527:12;:24;10540:10;10527:24;;;;;;;;;;;;;;;;10519:5;:32;10492:59;10484:68;;;;;;10617:6;10588:14;:26;10603:10;10588:26;;;;;;;;;;;;;;;:35;;;;10661:5;10634:12;:24;10647:10;10634:24;;;;;;;;;;;;;;;:32;;;;9976:698;;:::o;16256:1405::-;16315:12;16399:15;:13;:15::i;:::-;16530:1;16501:14;:26;16516:10;16501:26;;;;;;;;;;;;;;;;:30;:92;;;;;16587:6;16558:14;:26;16573:10;16558:26;;;;;;;;;;;;;;;;16535:8;:20;16544:10;16535:20;;;;;;;;;;;;;;;;:49;:58;16501:92;16498:190;;;16609:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16498:190;16800:6;16776:8;:20;16785:10;16776:20;;;;;;;;;;;;;;;;:30;;16768:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16958:5;:8;16964:1;16958:8;;;;;;;;;;;;;;;;;;;;;16944:22;;:10;:22;;;:79;;;;;17001:22;16988:10;;:35;16970:15;:53;16944:79;16941:179;;;17039:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16941:179;17193:5;:8;17199:1;17193:8;;;;;;;;;;;;;;;;;;;;;17179:22;;:10;:22;;;17176:85;;;17224:25;17238:2;17242:6;17224:13;:25::i;:::-;17217:32;;;;17176:85;17337:12;;17319:15;:30;:62;;;;;17371:10;;17353:15;:28;17319:62;17316:124;;;17404:24;17417:2;17421:6;17404:12;:24::i;:::-;17397:31;;;;17316:124;17528:10;;17510:15;:28;17507:94;;;17561:28;17578:2;17582:6;17561:16;:28::i;:::-;17554:35;;;;17507:94;17648:5;17641:12;;16256:1405;;;;;:::o;10767:138::-;10833:18;10871:14;:26;10886:10;10871:26;;;;;;;;;;;;;;;;10864:33;;10767:138;;;:::o;7818:24::-;;;;:::o;1061:23::-;;;;;;;;;;;;;:::o;8075:26::-;;;;:::o;19799:184::-;19891:12;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;19938:12;19923:37;;;19961:5;;;;;;;;;;;19968:6;19923:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19923:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19923:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19923:52:0;;;;;;;;;;;;;;;;19916:59;;19799:184;;;;:::o;19429:147::-;19506:14;19540:7;:19;19548:10;19540:19;;;;;;;;;;;;;;;:28;19560:7;19540:28;;;;;;;;;;;;;;;;19533:35;;19429:147;;;;:::o;4225:2959::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;4417:1;4392:8;:21;4401:11;4392:21;;;;;;;;;;;;;;;;:26;4384:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4519:19;4541:5;:14;4547:7;4541:14;;;;;;;;;;;;;;;;;;;;;4519:36;;4638:1;4627:7;:12;:41;;;;;4666:1;4643:25;;:11;:25;;;;4627:41;4624:119;;;4684:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4624:119;4837:1;4814:25;;:11;:25;;;4811:1419;;;4895:16;4914:1;4895:20;;4976:1;4965:7;:12;4962:74;;;5011:9;4997:23;;4962:74;5090:1;5079:7;:12;5076:73;;;5125:8;5111:22;;5076:73;5205:1;5194:7;:12;5191:73;;;5240:8;5226:22;;5191:73;5317:1;5306:7;:12;5303:73;;;5352:8;5338:22;;5303:73;5429:1;5418:7;:12;5415:73;;;5464:8;5450:22;;5415:73;5615:1;5601:11;:15;5598:621;;;5673:8;;;;;;;;;;;5668:14;;5664:2;:18;5650:11;:32;5636:46;;5725:11;5701:8;:21;5710:11;5701:21;;;;;;;;;;;;;;;:35;;;;5781:11;5760:46;;5777:1;5760:46;;;5794:11;5760:46;;;;;;;;;;;;;;;;;;5921:1;5910:7;:12;:28;;;;5937:1;5926:7;:12;5910:28;5907:297;;;5992:11;5962:14;:27;5977:11;5962:27;;;;;;;;;;;;;;;:41;;;;6072:18;6054:15;:36;6026:12;:25;6039:11;6026:25;;;;;;;;;;;;;;;:64;;;;6132:11;6118:66;;;6145:11;6158:12;:25;6171:11;6158:25;;;;;;;;;;;;;;;;6118:66;;;;;;;;;;;;;;;;;;;;;;;;5907:297;5598:621;4811:1419;;6311:1;6287:8;:21;6296:11;6287:21;;;;;;;;;;;;;;;;:25;6284:822;;;6410:8;:21;6419:11;6410:21;;;;;;;;;;;;;;;;6386:8;:21;6395:11;6386:21;;;;;;;;;;;;;;;:45;;;;6510:11;6488:57;;6497:11;6488:57;;;6523:8;:21;6532:11;6523:21;;;;;;;;;;;;;;;;6488:57;;;;;;;;;;;;;;;;;;6620:1;6596:8;:21;6605:11;6596:21;;;;;;;;;;;;;;;:25;;;;6719:1;6689:14;:27;6704:11;6689:27;;;;;;;;;;;;;;;;:31;6686:409;;;6772:14;:27;6787:11;6772:27;;;;;;;;;;;;;;;;6742:14;:27;6757:11;6742:27;;;;;;;;;;;;;;;:57;;;;6846:12;:25;6859:11;6846:25;;;;;;;;;;;;;;;;6818:12;:25;6831:11;6818:25;;;;;;;;;;;;;;;:53;;;;6911:11;6897:82;;;6924:14;:27;6939:11;6924:27;;;;;;;;;;;;;;;;6953:12;:25;6966:11;6953:25;;;;;;;;;;;;;;;;6897:82;;;;;;;;;;;;;;;;;;;;;;;;7030:1;7000:14;:27;7015:11;7000:27;;;;;;;;;;;;;;;:31;;;;7078:1;7050:12;:25;7063:11;7050:25;;;;;;;;;;;;;;;:29;;;;6686:409;6284:822;7165:11;7148:5;:14;7154:7;7148:14;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1307:1;4225:2959;;:::o;1324:102::-;1290:5;;;;;;;;;;;1276:19;;:10;:19;;;1268:28;;;;;;1409:9;1398:8;;:20;;;;;;;;;;;;;;;;;;1324:102;:::o;1779:114::-;1831:6;1863:1;1858;:6;;1850:15;;;;;;1884:1;1880;:5;1876:9;;1779:114;;;;:::o;1659:::-;1711:6;1738:1;1734;:5;1730:9;;1763:1;1758;:6;;1750:15;;;;;;1659:114;;;;:::o;11300:190::-;11378:1;11349:14;:26;11364:10;11349:26;;;;;;;;;;;;;;;;:30;:76;;;;;11401:12;:24;11414:10;11401:24;;;;;;;;;;;;;;;;11383:15;:42;11349:76;11346:137;;;11470:1;11441:14;:26;11456:10;11441:26;;;;;;;;;;;;;;;:30;;;;11346:137;11300:190::o;11580:727::-;11645:12;11762:5;:8;11768:1;11762:8;;;;;;;;;;;;;;;;;;;;;11748:22;;:10;:22;;;11740:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11935:10;;11917:15;:28;11909:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12080:30;12103:6;12080:14;:18;12095:2;12080:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;12059:14;:18;12074:2;12059:18;;;;;;;;;;;;;;;:51;;;;12150:2;12126:35;;12138:10;12126:35;;;12154:6;12126:35;;;;;;;;;;;;;;;;;;12177:41;12207:10;12177:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12271:28;12288:2;12292:6;12271:16;:28::i;:::-;12264:35;;11580:727;;;;:::o;12402:607::-;12466:12;12593:5;:8;12599:1;12593:8;;;;;;;;;;;;;;;;;;;;;12579:22;;:10;:22;;;;12571:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12826:6;12770:52;12795:14;:26;12810:10;12795:26;;;;;;;;;;;;;;;;12770:8;:20;12779:10;12770:20;;;;;;;;;;;;;;;;:24;;:52;;;;:::i;:::-;:62;;12762:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12880:40;12909:10;12880:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12973:28;12990:2;12994:6;12973:16;:28::i;:::-;12966:35;;12402:607;;;;:::o;13115:841::-;13183:12;13332:16;13319:10;;:29;13301:15;:47;:101;;;;;13367:5;:8;13373:1;13367:8;;;;;;;;;;;;;;;;;;;;;13353:22;;:10;:22;;;:48;;;;13393:5;:8;13399:1;13393:8;;;;;;;;;;;;;;;;;;;;;13379:22;;:10;:22;;;13353:48;13301:101;13298:203;;;13418:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13298:203;13625:14;;13607:15;:32;:66;;;;;13672:1;13643:14;:26;13658:10;13643:26;;;;;;;;;;;;;;;;:30;13607:66;13604:199;;;13694:44;13727:10;13694:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13760:31;13780:2;13784:6;13760:19;:31::i;:::-;13753:38;;;;13604:199;13818:44;13851:10;13818:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13920:28;13937:2;13941:6;13920:16;:28::i;:::-;13913:35;;13115:841;;;;;:::o;15752:328::-;15820:12;15920:32;15945:6;15920:8;:20;15929:10;15920:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15897:8;:20;15906:10;15897:20;;;;;;;;;;;;;;;:55;;;;15978:24;15995:6;15978:8;:12;15987:2;15978:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;15963:8;:12;15972:2;15963:12;;;;;;;;;;;;;;;:39;;;;16039:2;16018:32;;16027:10;16018:32;;;16043:6;16018:32;;;;;;;;;;;;;;;;;;16068:4;16061:11;;15752:328;;;;:::o;14325:1351::-;14396:12;14459:17;14479:8;:20;14488:10;14479:20;;;;;;;;;;;;;;;;14459:40;;14510:18;14531:14;:26;14546:10;14531:26;;;;;;;;;;;;;;;;14510:47;;14568:20;14591:31;14608:13;14591:12;:16;;:31;;;;:::i;:::-;14568:54;;14765:2;14748:14;;:19;:47;;;;;14789:6;14771:15;:24;14748:47;:80;;;;;14805:11;:23;14817:10;14805:23;;;;;;;;;;;;;;;;;;;;;;;;;14799:29;;:2;:29;;;;14748:80;14745:179;;;14844:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:179;15023:6;15005:15;:24;15002:581;;;15115:14;15132:27;15143:15;15132:6;:10;;:27;;;;:::i;:::-;15115:44;;15222:33;15245:9;15222:14;:18;15237:2;15222:18;;;;;;;;;;;;;;;;:22;;:33;;;;:::i;:::-;15201:14;:18;15216:2;15201:18;;;;;;;;;;;;;;;:54;;;;15299:2;15275:38;;15287:10;15275:38;;;15303:9;15275:38;;;;;;;;;;;;;;;;;;15397:41;15428:9;15397:14;:26;15412:10;15397:26;;;;;;;;;;;;;;;;:30;;:41;;;;:::i;:::-;15368:14;:26;15383:10;15368:26;;;;;;;;;;;;;;;:70;;;;15561:10;15543:11;:15;15555:2;15543:15;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15002:581;;15640:28;15657:2;15661:6;15640:16;:28::i;:::-;15633:35;;;;;14325:1351;;;;:::o

Swarm Source

bzzr://6db395f728c0e52cbf364b05a79c620e9214933e428c1f89663fdc7d55ed6148

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

QARK Token of QAN Platform token contract has migrated to 0xAAA7A10a8ee237ea61E8AC46C50A8Db8bCC1baaa

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.