ETH Price: $3,345.04 (-1.03%)
Gas: 3.15 Gwei

Contract

0x69fa8e7F6bf1ca1fB0de61e1366f7412b827CC51
 

Overview

ETH Balance

0.001 ETH

Eth Value

$3.35 (@ $3,345.04/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

EnreachDAO (NRCH) (@$0.4523)
Transaction Hash
Method
Block
From
To
Approve214031922024-12-14 20:38:5913 days ago1734208739IN
EnreachDAO: NRCH Token
0 ETH0.000433069.31279004
Approve213574132024-12-08 11:16:1119 days ago1733656571IN
EnreachDAO: NRCH Token
0 ETH0.000193547.86707783
Approve213490272024-12-07 7:08:3520 days ago1733555315IN
EnreachDAO: NRCH Token
0 ETH0.0006159713.24286581
Approve213230072024-12-03 15:55:3524 days ago1733241335IN
EnreachDAO: NRCH Token
0 ETH0.0009998937.48565513
Approve213230062024-12-03 15:55:2324 days ago1733241323IN
EnreachDAO: NRCH Token
0 ETH0.0010568835.8582291
Approve213230042024-12-03 15:54:5924 days ago1733241299IN
EnreachDAO: NRCH Token
0 ETH0.0009282834.39869083
Approve213230022024-12-03 15:54:3524 days ago1733241275IN
EnreachDAO: NRCH Token
0 ETH0.0018076938.55508745
Approve212876512024-11-28 17:20:2329 days ago1732814423IN
EnreachDAO: NRCH Token
0 ETH0.000403248.67370594
Approve212515122024-11-23 16:03:4734 days ago1732377827IN
EnreachDAO: NRCH Token
0 ETH0.0012332926.48720146
Approve211932742024-11-15 13:04:3542 days ago1731675875IN
EnreachDAO: NRCH Token
0 ETH0.0007999117.2061535
Approve211679042024-11-12 0:04:1146 days ago1731369851IN
EnreachDAO: NRCH Token
0 ETH0.0011510343.15184557
Approve211679002024-11-12 0:03:2346 days ago1731369803IN
EnreachDAO: NRCH Token
0 ETH0.0019274141.38382356
Approve211665732024-11-11 19:37:1146 days ago1731353831IN
EnreachDAO: NRCH Token
0 ETH0.0020727844.51660915
Approve211658582024-11-11 17:13:1146 days ago1731345191IN
EnreachDAO: NRCH Token
0 ETH0.0025413154.56505046
Approve211658502024-11-11 17:11:3546 days ago1731345095IN
EnreachDAO: NRCH Token
0 ETH0.0016551256.15535769
Approve211569912024-11-10 11:32:4747 days ago1731238367IN
EnreachDAO: NRCH Token
0 ETH0.0006858614.73020995
Approve211554162024-11-10 6:16:4747 days ago1731219407IN
EnreachDAO: NRCH Token
0 ETH0.0006787414.59227076
Approve211242142024-11-05 21:44:5952 days ago1730843099IN
EnreachDAO: NRCH Token
0 ETH0.000129564.85942025
Approve211242072024-11-05 21:43:3552 days ago1730843015IN
EnreachDAO: NRCH Token
0 ETH0.000218914.70160456
Approve210674592024-10-28 23:37:3560 days ago1730158655IN
EnreachDAO: NRCH Token
0 ETH0.000384248.25022859
Approve210428172024-10-25 13:05:4763 days ago1729861547IN
EnreachDAO: NRCH Token
0 ETH0.000392918.39106128
Approve210373342024-10-24 18:44:4764 days ago1729795487IN
EnreachDAO: NRCH Token
0 ETH0.0005532511.8
Approve210372052024-10-24 18:18:5964 days ago1729793939IN
EnreachDAO: NRCH Token
0 ETH0.0005911412.69580858
Approve210358672024-10-24 13:50:1164 days ago1729777811IN
EnreachDAO: NRCH Token
0 ETH0.0005096210.95641676
Transfer210258312024-10-23 4:15:4766 days ago1729656947IN
EnreachDAO: NRCH Token
0 ETH0.001069367.41690383
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
124016372021-05-09 17:59:201328 days ago1620583160
EnreachDAO: NRCH Token
0.73419561 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.11

Optimization Enabled:
N/A

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Vyper language format)

# @version ^0.2.11
# @dev Implementation of multi-layers space and time rebasing ERC-20 token standard.
# @dev copyright [email protected] and [email protected]
# based on https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md

from vyper.interfaces import ERC20

implements: ERC20

event Transfer:
    sender: indexed(address)
    receiver: indexed(address)
    value: uint256

event Approval:
    owner: indexed(address)
    spender: indexed(address)
    value: uint256

event ReceivedEther:
    sender: indexed(address)
    value: uint256

event OwnershipTransferred:
    previousOwner: indexed(address)
    newOwner: indexed(address)

# EIP-20 compliant name symbol and decimals
name: public(String[64])
symbol: public(String[32])
decimals: public(uint256)

# additional decimals used for calculations
scale: public(uint256)

# exponent
expanse: public(int128)
extent: public(uint256)
extent_max: public(uint256)

# temporal timer
initpulse: public(uint256)
nextpulse: public(uint256)

struct Account:
    amount: uint256
    lode: uint256
    expanse: int128


struct Lode:
    total: uint256
    total_e: uint256
    expanse: int128
    tax_id: uint256
    itaxfree: bool
    etaxfree: bool
   
NUM_OF_TEMPORAL_LODES: constant(uint256) = 25
STAKING_LODE: constant(uint256) = NUM_OF_TEMPORAL_LODES  # 25
FROZEN_LODE: constant(uint256) = STAKING_LODE + 1 #26
RESERVE_LODE: constant(uint256) = FROZEN_LODE + 1 #27
SAFE_LODE: constant(uint256) = RESERVE_LODE + 1 #28
RESERVED1_LODE: constant(uint256) = SAFE_LODE + 1 #29
NUM_OF_LODES: constant(uint256) = 32 
NUM_OF_TAX_POLICIES: constant(uint256) = 4


owner: address
currentLode: public(uint256)
transferLocked: public(bool)
taxOn: public(bool)
temporal_tax_num: public(uint256)
temporal_tax_num2: public(uint256)
temporal_tax_den: public(uint256)
tax_numerators: public(uint256[NUM_OF_LODES][NUM_OF_TAX_POLICIES])
tax_numeratorsum: public(uint256[NUM_OF_TAX_POLICIES])
tax_denominator: public(uint256[NUM_OF_TAX_POLICIES])
tax_toflush: public(uint256[NUM_OF_TAX_POLICIES])
tax_airdrop_num: public(uint256)
tax_airdrop_den: public(uint256)
lodes: Lode[NUM_OF_LODES]

accounts: HashMap[address, Account]
allowances: HashMap[address, HashMap[address, uint256]]
privileged: HashMap[address, bool]
arbtrust: HashMap[address, bool]


@internal
def _deallocate0(_debtor: address) -> uint256:
    """
    @dev deallocate all funds from a wallet
    @param _debtor The address to deallocate all the funds from.
    @return An uint256 specifying the amount of scaled tokens remaining
    """
    debtor: Account = self.accounts[_debtor]
    slode: Lode = self.lodes[debtor.lode]
    amount_e: uint256 = debtor.amount
    if amount_e == 0:
        self.accounts[_debtor] = empty(Account)
        return 0
    if debtor.expanse != slode.expanse:
        amount_e = shift(debtor.amount, debtor.expanse - slode.expanse)
    amount_s: uint256 = amount_e * slode.total / slode.total_e
    self.accounts[_debtor] = empty(Account)
    self.lodes[debtor.lode].total -= amount_s
    self.lodes[debtor.lode].total_e -= amount_e
    return amount_s

@internal
def _deallocate(_debtor: address, _amount_s: uint256):
    """
    @dev deallocate funds from a wallet
    @param _debtor The address to deallocate the funds from.
    @param _amount_s scaled amount of funds.
    """
    debtor: Account = self.accounts[_debtor]
    slode: Lode = self.lodes[debtor.lode]
    if debtor.expanse != slode.expanse:
        self.accounts[_debtor].amount = shift(debtor.amount, debtor.expanse - slode.expanse)
        self.accounts[_debtor].expanse = slode.expanse
    amount_e: uint256 = _amount_s * slode.total_e / slode.total
    self.accounts[_debtor].amount -= amount_e
    if self.accounts[_debtor].amount < self.scale:
        amount_e += self.accounts[_debtor].amount
        self.accounts[_debtor].amount = 0
        amount_s: uint256 = amount_e * slode.total / slode.total_e
        self.lodes[debtor.lode].total -= amount_s
    else:
        self.lodes[debtor.lode].total -= _amount_s
    self.lodes[debtor.lode].total_e -= amount_e
    if self.accounts[_debtor].amount == 0:
        self.accounts[_debtor] = empty(Account)


@internal
def _allocate(_creditor: address, _amount_s: uint256):
    """
    @dev deallocate funds from a wallet and from a lode
    @param _creditor The address to allocate the funds to.
    @param _amount_s The address to allocate the scaled funds to.
    """
    creditor: Account = self.accounts[_creditor]
    if (creditor.amount ==0) and (creditor.lode ==0):
        if _creditor.is_contract:
            creditor.lode = FROZEN_LODE
            self.accounts[_creditor].lode = FROZEN_LODE
        else:
            creditor.lode = self.currentLode
            self.accounts[_creditor].lode = self.currentLode
    dlode: Lode = self.lodes[creditor.lode]
    if creditor.amount != 0:
        self.accounts[_creditor].amount = shift(creditor.amount, creditor.expanse - dlode.expanse)
    self.accounts[_creditor].expanse = dlode.expanse
    if dlode.total_e == 0:
        self.lodes[creditor.lode].total_e += _amount_s
        self.accounts[_creditor].amount += _amount_s
    else:
        amount_e: uint256 = _amount_s * dlode.total_e / dlode.total
        self.lodes[creditor.lode].total_e += amount_e
        self.accounts[_creditor].amount += amount_e
    self.lodes[creditor.lode].total += _amount_s



@external
def setLode(_wallet:address, _lode:uint256):
    """
    @dev set the lode of a wallet
    @param _wallet The address of the wallet
    @param _lode The lode to which to allocate the wallet
    """
    if (msg.sender == self.owner):
        assert (_lode < NUM_OF_LODES) #, "Out of bounds lode"
    elif (self.privileged[msg.sender] == True):
        assert _lode < NUM_OF_TEMPORAL_LODES #, "Out of bounds lode or access to priviledged lode"
    else:
        raise "Unauthorized"
    amount: uint256 = self._deallocate0(_wallet)
    self.accounts[_wallet].lode = _lode
    self._allocate(_wallet, amount)

@external
def setTaxStatus(_status: bool):
    """
    @dev tax Status (On->True or Off)
    @param _status status of tax
    """
    assert msg.sender == self.owner
    self.taxOn = _status

@external
def setTax(_tax_id:uint256, _tax_numerators:uint256[NUM_OF_LODES], _tax_denominator:uint256):
    """
    @dev set the taxes of a tax_id
    @param _tax_id the tax id 
    @param _tax_numerators Tax numerator per lode
    @param _tax_denominator Tax denominator
    """
    assert (msg.sender == self.owner)
    self.tax_numerators[_tax_id] = _tax_numerators
    self.tax_denominator[_tax_id] = _tax_denominator
    sum:uint256 = 0
    for i in range(NUM_OF_LODES):
        sum += _tax_numerators[i]
    self.tax_numeratorsum[_tax_id] = sum
        


@external
def setLodeTaxId(_lode:uint256, _tax_id:uint256):
    """
    @dev set the tax_id of a lode
    @param _lode the lode number
    @param _tax_id Tax id
    """
    assert (msg.sender == self.owner)
    self.lodes[_lode].tax_id = _tax_id

@external
def setPrivileged(_wallet: address, _status: bool):
    """
    @dev change Privileged status of wallet
    @param _wallet The address of the wallet
    @param _status Which status to set to the wallet
    """
    assert (msg.sender == self.owner)
    self.privileged[_wallet] = _status

@external
def setArbTrusted(_wallet: address, _status: bool):
    """
    @dev change ArbTrust status of wallet
    @param _wallet The address of the wallet
    @param _status Which status to set to the wallet
    """
    assert (msg.sender == self.owner)
    self.arbtrust[_wallet] = _status

@view
@external
def isPrivileged(_wallet: address) -> bool:
    """
    @dev check Privileged status of wallet
    @param _wallet The address of the wallet
    @return A bool specifiying if the wallet is priviledged
    """
    return self.privileged[_wallet]

@view
@external
def getLode(_wallet:address) -> uint256:
    """
    @dev get account lode
    @param _wallet The address of the wallet
    @return An uint256 specifying the lode of the wallet
    """
    assert (msg.sender == self.owner) or self.privileged[msg.sender]
    return self.accounts[_wallet].lode


@view
@internal
def getBalance(_wallet : address) -> uint256:
    """
    @dev get balance of wallet
    @param _wallet The address of the wallet
    @return An uint256 specifying the scaled balance of the wallet
    """
    account: Account = self.accounts[_wallet]
    lode: Lode = self.lodes[account.lode]
    if lode.total_e == 0:
        return 0
    else:
        return shift(account.amount, account.expanse - lode.expanse) * lode.total / lode.total_e

@view
@external
def balanceLode(_wallet : address) -> (uint256, uint256, uint256, int128, int128):
    """
    @dev get detailed balance of a wallet
    @param _wallet the wallet
    @return internal balance of wallet, lode scaled balance, lode internal balance, account and lode expanse
    """
    assert (msg.sender == self.owner) or self.privileged[msg.sender] or (_wallet == msg.sender)
    account: Account = self.accounts[_wallet]
    lode: Lode = self.lodes[account.lode]
    return (account.amount, lode.total, lode.total_e, account.expanse, lode.expanse)

@view
@external
def lodeBalance(_lode: uint256) ->  (uint256, uint256, int128):
    """
    @dev get balance of a lode
    @param _lode lode number
    @return lode scaled balance, lode internal balance and lode expanse
    """
    assert (msg.sender == self.owner) or self.privileged[msg.sender]
    lode: Lode = self.lodes[_lode]
    return (lode.total, lode.total_e, lode.expanse)


@external
def setLodeTaxFree(_lode: uint256, _itaxfree: bool, _etaxfree: bool):
    """
    @dev set lode tax excemptions rules
    @param _lode lode number
    @param _itaxfree is tax free on credit
    @param _etaxfree is tax free on debit
    """
    assert (msg.sender == self.owner)
    self.lodes[_lode].itaxfree = _itaxfree
    self.lodes[_lode].etaxfree = _etaxfree

@view
@external
def getLodeTaxFree(_lode: uint256) -> (bool, bool, uint256):
    """
    @dev get lode tax rules
    @param _lode lode number
    @return _itaxfree, _etaxfree and tax_id
    """
    assert (msg.sender == self.owner) or self.privileged[msg.sender]
    return (self.lodes[_lode].itaxfree, self.lodes[_lode].etaxfree, self.lodes[_lode].tax_id)


@external
def __init__(_name: String[64], _symbol: String[32], _decimals: uint256, _supply: uint256, _transferLocked: bool,
    _tax_nums: uint256[NUM_OF_LODES], _tax_denom: uint256):
    self.owner = msg.sender
    self.tax_numerators[0] = _tax_nums
    for i in range(NUM_OF_LODES):
        self.tax_numeratorsum[0] += _tax_nums[i]
    self.tax_denominator[0] = _tax_denom
    self.tax_airdrop_num = 1
    self.tax_airdrop_den = 20
    self.temporal_tax_num = 10000
    self.temporal_tax_num2 = 2664
    self.temporal_tax_den = 30000
    self.transferLocked = _transferLocked
    self.taxOn = not _transferLocked
    self.scale = 10 ** _decimals
    init_supply: uint256 = _supply * 10 ** _decimals
    self.extent = init_supply * self.scale
    self.extent_max =  init_supply * self.scale * self.scale
    a_supply: uint256 = init_supply * self.scale
    self.name = _name
    self.symbol = _symbol
    self.decimals = _decimals
    self.accounts[msg.sender].amount = a_supply
    self.lodes[self.accounts[msg.sender].lode] = Lode({total: a_supply, total_e: a_supply, expanse: 0, itaxfree:False, etaxfree:False, tax_id:0})
    self.lodes[STAKING_LODE] = Lode({total: 0, total_e: 0, expanse: 0, itaxfree: True, etaxfree: True, tax_id:0})    
    self.lodes[RESERVE_LODE] = Lode({total: 0, total_e: 0, expanse: 0, itaxfree: True, etaxfree: False, tax_id:0})    
    self.lodes[RESERVED1_LODE] = Lode({total: 0, total_e: 0, expanse: 0, itaxfree: True, etaxfree: True, tax_id:0})    
    log Transfer(ZERO_ADDRESS, msg.sender, init_supply)
    log OwnershipTransferred(ZERO_ADDRESS, msg.sender)



@view
@external
def totalSupply() -> uint256:
    """
    @dev Total number of tokens in existence. EIP-20 function totalSupply()
    @return total supply
    """
    sum:uint256 = 0
    for i in range(NUM_OF_LODES):
        sum += self.lodes[i].total
    return sum / self.scale

@view
@external
def balanceOf(_wallet : address) -> uint256:
    """
    @dev Total number of tokens in existence. EIP-20 function balanceOf(address _owner)
    @return balance
    """
    return self.getBalance(_wallet) / self.scale

@view
@external
def allowance(_owner : address, _spender : address) -> uint256:
    """
    @dev Function to check the amount of tokens that an owner allowed to a spender.
         EIP-20 function allowance(address _owner, address _spender)
    @param _owner The address which owns the funds.
    @param _spender The address which will spend the funds.
    @return An uint256 specifying the amount of tokens still available for the spender.
    """
    return self.allowances[_owner][_spender]

@external
def setTemporalTax(_num: uint256, _num2: uint256, _den: uint256):
    """
    @dev modify the temporal tax
    @param _num tax numerator
    @param _num2 tax arb
    @param _den tax denominator
    """
    assert msg.sender == self.owner
    assert _den != 0
    self.temporal_tax_num = _num
    self.temporal_tax_num2 = _num2
    self.temporal_tax_den = _den

@internal
def temporalTax() -> bool:
    """
    @dev This function trigger a temporal tax event if required.
    @return True if tax event happened, False otherwise
    """
    if (self.initpulse != 0):
        self.currentLode = ((self.nextpulse - self.initpulse) / 86400) % NUM_OF_TEMPORAL_LODES
        if (block.timestamp > self.nextpulse):
            tax: uint256 = self.lodes[self.currentLode].total * self.temporal_tax_num / self.temporal_tax_den
            self.lodes[self.currentLode].total -= tax
            self.lodes[RESERVE_LODE].total += tax
            self.nextpulse += 86400
            if self.currentLode == 0:
                if (self.temporal_tax_den - self.temporal_tax_num) != 0:
                    self.extent = self.extent * self.temporal_tax_den / (self.temporal_tax_den - self.temporal_tax_num)
                    if self.extent  > self.extent_max:
                        self.extent /= 2
                        self.expanse += 1
            if self.lodes[self.currentLode].expanse != self.expanse:
                self.lodes[self.currentLode].total_e = shift(self.lodes[self.currentLode].total_e,
                    self.lodes[self.currentLode].expanse - self.expanse)
                self.lodes[self.currentLode].expanse = self.expanse
            return True
    return False

@external
def changeTaxAirDrop(_num: uint256, _den:uint256):
    assert (msg.sender == self.owner)
    assert (_den != 0)
    self.tax_airdrop_num = _num
    self.tax_airdrop_den = _den

@external
@view
def simTaxAirDrop() -> uint256:
    sum:uint256 = 0
    for tax_id in range(NUM_OF_TAX_POLICIES):
        tax:uint256 = self.tax_toflush[tax_id]
        if tax != 0:
            sum += tax * self.tax_airdrop_num / self.tax_airdrop_den
    return sum/self.scale

@internal
def distributeTax(_to:address):
    airdrop:uint256 = 0
    for tax_id in range(NUM_OF_TAX_POLICIES):
        tax:uint256 = self.tax_toflush[tax_id]
        if tax != 0:
            airdrop0:uint256 = tax * self.tax_airdrop_num / self.tax_airdrop_den
            airdrop += airdrop0
            tax -= airdrop0
            tax_num:uint256 = self.tax_numeratorsum[tax_id]
            for i in range(NUM_OF_LODES):
                self.lodes[i].total +=  tax * self.tax_numerators[tax_id][i] / tax_num
        self.tax_toflush[tax_id] = 0
    if airdrop != 0:
        self._allocate(_to, airdrop)
    self.temporalTax()

            
@external
def triggerDistributeTax():
    self.distributeTax(msg.sender)

@external
def triggerTemporalTax() -> bool:
    """
    @dev This function trigger a temporal tax event if required.
    @return True if tax event happened, False otherwise
    """
    return self.temporalTax()

@view
@external
def transferedAfterTax(_debtor: address, _creditor: address, _value: uint256) -> uint256:
    """
    @dev evaluate amount sent during Transfer 
    @param _debtor The address to transfer from.
    @param _creditor The address to transfer to.
    @param _value The amount to be transferred.
    @return amount remaining to be transferred
    """
    amount: uint256 = _value * self.scale
    d_lode: uint256 = self.accounts[_debtor].lode
    c_lode: uint256 = self.accounts[_creditor].lode
    tax_id: uint256 = self.lodes[d_lode].tax_id
    if (not self.lodes[d_lode].etaxfree) and (not self.lodes[c_lode].itaxfree) and self.taxOn:
        tax: uint256 = amount * self.tax_numeratorsum[tax_id] / self.tax_denominator[tax_id]
        amount -= tax
    if self.arbtrust[_debtor] and self.arbtrust[_creditor]:
        tax:uint256 = amount * self.temporal_tax_num2 / self.temporal_tax_den
        amount -= tax
    return amount / self.scale


@internal
def _transfer(_debtor: address, _creditor: address, _value: uint256):
    """
    @dev Transfer token for a specified address
    @param _debtor The address to transfer from.
    @param _creditor The address to transfer to.
    @param _value The amount to be transferred.
    """
    #if (block.timestamp > self.nextpulse) and (self.initpulse != 0):
    #    self.temporalTax()
    amount: uint256 = _value * self.scale
    d_lode: uint256 = self.accounts[_debtor].lode
    c_lode: uint256 = self.accounts[_creditor].lode
    tax_id: uint256 = self.lodes[d_lode].tax_id
    self._deallocate(_debtor, amount)
    if (not self.lodes[d_lode].etaxfree) and (not self.lodes[c_lode].itaxfree) and self.taxOn:
        tax: uint256 = amount * self.tax_numeratorsum[tax_id] / self.tax_denominator[tax_id]
        amount -= tax
        self.tax_toflush[tax_id] += tax
    if self.arbtrust[_debtor] and self.arbtrust[_creditor]:
        tax:uint256 = amount * self.temporal_tax_num2 / self.temporal_tax_den
        amount -= tax
        self.lodes[RESERVED1_LODE].total += tax
    if (self.initpulse != 0):
        if (self.currentLode != d_lode) and (d_lode < NUM_OF_TEMPORAL_LODES):
            amount0: uint256 = self._deallocate0(_debtor)
            if amount0 != 0:
                self.accounts[_debtor].lode = self.currentLode
                self._allocate(_debtor, amount0)
    self._allocate(_creditor, amount)


@external
def transfer(_to : address, _value : uint256) -> bool:
    """
    @dev Transfer token for a specified address. EIP-20 function transfer(address _to, uint256 _value) 
    @param _to The address to transfer to.
    @param _value The amount to be transferred.
    """
    assert (self.transferLocked == False) or self.privileged[msg.sender] or (msg.sender == self.owner), "You are not allowed to make transfer"
    self._transfer(msg.sender, _to, _value)
    log Transfer(msg.sender, _to, _value)
    return True


@external
def transferFrom(_from : address, _to : address, _value : uint256) -> bool:
    """
     @dev Transfer tokens from one address to another. EIP function transferFrom(address _from, address _to, uint256 _value) 
     @param _from address The address which you want to send tokens from
     @param _to address The address which you want to transfer to
     @param _value uint256 the amount of tokens to be transferred
    """
    assert (self.transferLocked == False) or self.privileged[msg.sender] or self.privileged[_from] or (msg.sender == self.owner), "You are not allowed to make transfer"
    self._transfer(_from, _to, _value)
    self.allowances[_from][msg.sender] -= _value
    log Transfer(_from, _to, _value)
    return True

@internal
def _approve(_owner: address, _spender : address, _value : uint256) -> bool:
    """
    @dev Approve the passed address to spend the specified amount of tokens on behalf of _owner.
    @param _owner The address which will provide the funds.
    @param _spender The address which will spend the funds.
    @param _value The amount of tokens to be spent.
    """
    self.allowances[_owner][_spender] = _value
    log Approval(_owner, _spender, _value)
    return True


@external
def approve(_spender : address, _value : uint256) -> bool:
    """
    @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
         Beware that changing an allowance with this method brings the risk that someone may use both the old
         and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
         race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
         https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
         EIP-20 function approve(address _spender, uint256 _value)
    
    @param _spender The address which will spend the funds.
    @param _value The amount of tokens to be spent.
    """
    self._approve(msg.sender, _spender,_value)
    return True


@external
def increaseAllowance(_spender : address, _addedValue : uint256) -> bool:
    """
    @dev Atomically increases the allowance granted to `spender` by the caller.
    This is an alternative to {approve} that can be used as a mitigation 
    for problems described in {IERC20-approve}.
    Emits an {Approval} event indicating the updated allowance.
    - `spender` cannot be the zero address.

    @param _spender The address which will spend the funds.
    @param _addedValue The amount of additional tokens to be spent.
    """
    self._approve(msg.sender, _spender, self.allowances[msg.sender][_spender] + _addedValue)
    return True

@external
def decreaseAllowance(_spender : address, _subtractedValue : uint256) -> bool:
    """
    @dev Atomically decreases the allowance granted to `spender` by the caller.
    This is an alternative to {approve} that can be used as a mitigation 
    for problems described in {IERC20-approve}.
    Emits an {Approval} event indicating the updated allowance.
    - `spender` cannot be the zero address.
    - `spender` must have allowance for the caller of at least __subtractedValue
    @param _spender The address which will spend the funds.
    @param _subtractedValue The amount of tokens to be Decreased from allowance.
    """
    self._approve(msg.sender, _spender, self.allowances[msg.sender][_spender] - _subtractedValue)
    return True

@external
def startPulse():
    """
    @dev start temporalTax Pulse
    """
    assert msg.sender == self.owner
    assert self.initpulse == 0
    self.taxOn = True
    self.initpulse = block.timestamp / 86400 * 86400
    self.nextpulse = self.initpulse + 86400 * NUM_OF_TEMPORAL_LODES


@external
def lockTransfer(_status: bool):
    """
    @dev lock or unlock transfer
    @param _status status of normal transfer
    """
    assert msg.sender == self.owner
    self.transferLocked = _status
    


@external
@payable
def __default__():
    """
    @dev Process ether received by default function
    """
    log ReceivedEther(msg.sender, msg.value)


@external
def withdrawEth(_amount: uint256):
    """
    @dev Withdraw ether from smart contract
    @param _amount number of wei 
    """
    assert msg.sender == self.owner
    send(self.owner, _amount)

@internal
def _consume(_debtor: address, _value: uint256):
    """
    @dev Consume token of a specified address
    @param _debtor The address to transfer from.
    @param _value The amount to be transferred.
    """
    amount: uint256 = _value * self.scale
    dtotal: uint256 = 0
    tax_id: uint256 = self.lodes[self.accounts[_debtor].lode].tax_id
    self._deallocate(_debtor, amount)
    for i in range(NUM_OF_LODES):
        dtotal += self.tax_denominator[tax_id]
    if dtotal ==0:
        self.lodes[STAKING_LODE].total += amount
    else:
        for i in range(NUM_OF_LODES):
            self.lodes[i].total += amount * self.tax_numerators[tax_id][i] / dtotal


@external
def consume(_value: uint256):
    """
    @dev Consume token of sender
    @param _value The amount to be consumed.
    """
    self._consume(msg.sender, _value)
    
@external
def consumeFrom(_wallet: address, _value: uint256):
    """
    @dev Consume token of sender
    @param _wallet the wallet to 
    @param _value The amount to be consumed
    """
    assert (msg.sender == self.owner)
    assert self.accounts[_wallet].lode == FROZEN_LODE
    self._consume(_wallet, _value)

@internal
def _burn(_to: address, _value: uint256):
    """
    @dev Internal function that burns an amount of the token of a given
         account.
    @param _to The account whose tokens will be burned.
    @param _value The amount that will be burned.
    """
    assert _to != ZERO_ADDRESS
    self._deallocate(_to, _value * self.scale)
    log Transfer(_to, ZERO_ADDRESS, _value)


@external
def burn(_value: uint256):
    """
    @dev Burn an amount of the token of msg.sender.
    @param _value The amount that will be burned.
    """
    self._burn(msg.sender, _value)


@external
def burnFrom(_to: address, _value: uint256):
    """
    @dev Burn an amount of the token from a given account.
    @param _to The account whose tokens will be burned.
    @param _value The amount that will be burned.
    """
    self.allowances[_to][msg.sender] -= _value
    self._burn(_to, _value)

@external
def transferOwnership(_owner: address):
    assert msg.sender == self.owner
    assert _owner != ZERO_ADDRESS
    log OwnershipTransferred(self.owner, _owner)
    self.owner = _owner
    

@external
def xtransfer(_token: address, _creditor : address, _value : uint256) -> bool:
    """
    @dev Relay ERC-20 transfer request 
    """
    assert msg.sender == self.owner
    return ERC20(_token).transfer(_creditor, _value)


@external
def xapprove(_token: address, _spender : address, _value : uint256) -> bool:
    """
    @dev Relay ERC-20 approve request 
    """
    assert msg.sender == self.owner
    return ERC20(_token).approve(_spender, _value)

Contract Security Audit

Contract ABI

[{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ReceivedEther","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true},{"name":"newOwner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"function","name":"setLode","inputs":[{"name":"_wallet","type":"address"},{"name":"_lode","type":"uint256"}],"outputs":[],"gas":466596},{"stateMutability":"nonpayable","type":"function","name":"setTaxStatus","inputs":[{"name":"_status","type":"bool"}],"outputs":[],"gas":36365},{"stateMutability":"nonpayable","type":"function","name":"setTax","inputs":[{"name":"_tax_id","type":"uint256"},{"name":"_tax_numerators","type":"uint256[32]"},{"name":"_tax_denominator","type":"uint256"}],"outputs":[],"gas":1202964},{"stateMutability":"nonpayable","type":"function","name":"setLodeTaxId","inputs":[{"name":"_lode","type":"uint256"},{"name":"_tax_id","type":"uint256"}],"outputs":[],"gas":36512},{"stateMutability":"nonpayable","type":"function","name":"setPrivileged","inputs":[{"name":"_wallet","type":"address"},{"name":"_status","type":"bool"}],"outputs":[],"gas":36670},{"stateMutability":"nonpayable","type":"function","name":"setArbTrusted","inputs":[{"name":"_wallet","type":"address"},{"name":"_status","type":"bool"}],"outputs":[],"gas":36700},{"stateMutability":"view","type":"function","name":"isPrivileged","inputs":[{"name":"_wallet","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":1573},{"stateMutability":"view","type":"function","name":"getLode","inputs":[{"name":"_wallet","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3527},{"stateMutability":"view","type":"function","name":"balanceLode","inputs":[{"name":"_wallet","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"int128"},{"name":"","type":"int128"}],"gas":11531},{"stateMutability":"view","type":"function","name":"lodeBalance","inputs":[{"name":"_lode","type":"uint256"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"int128"}],"gas":8379},{"stateMutability":"nonpayable","type":"function","name":"setLodeTaxFree","inputs":[{"name":"_lode","type":"uint256"},{"name":"_itaxfree","type":"bool"},{"name":"_etaxfree","type":"bool"}],"outputs":[],"gas":72118},{"stateMutability":"view","type":"function","name":"getLodeTaxFree","inputs":[{"name":"_lode","type":"uint256"}],"outputs":[{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"uint256"}],"gas":5858},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"},{"name":"_supply","type":"uint256"},{"name":"_transferLocked","type":"bool"},{"name":"_tax_nums","type":"uint256[32]"},{"name":"_tax_denom","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":42025},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"_wallet","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":11546},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2028},{"stateMutability":"nonpayable","type":"function","name":"setTemporalTax","inputs":[{"name":"_num","type":"uint256"},{"name":"_num2","type":"uint256"},{"name":"_den","type":"uint256"}],"outputs":[],"gas":106800},{"stateMutability":"nonpayable","type":"function","name":"changeTaxAirDrop","inputs":[{"name":"_num","type":"uint256"},{"name":"_den","type":"uint256"}],"outputs":[],"gas":71821},{"stateMutability":"view","type":"function","name":"simTaxAirDrop","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":14518},{"stateMutability":"nonpayable","type":"function","name":"triggerDistributeTax","inputs":[],"outputs":[],"gas":6063735},{"stateMutability":"nonpayable","type":"function","name":"triggerTemporalTax","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":348557},{"stateMutability":"view","type":"function","name":"transferedAfterTax","inputs":[{"name":"_debtor","type":"address"},{"name":"_creditor","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":15349},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":1987962},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":2025240},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":39772},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":41001},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":41025},{"stateMutability":"nonpayable","type":"function","name":"startPulse","inputs":[],"outputs":[],"gas":109179},{"stateMutability":"nonpayable","type":"function","name":"lockTransfer","inputs":[{"name":"_status","type":"bool"}],"outputs":[],"gas":37145},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"withdrawEth","inputs":[{"name":"_amount","type":"uint256"}],"outputs":[],"gas":37675},{"stateMutability":"nonpayable","type":"function","name":"consume","inputs":[{"name":"_value","type":"uint256"}],"outputs":[],"gas":1795600},{"stateMutability":"nonpayable","type":"function","name":"consumeFrom","inputs":[{"name":"_wallet","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[],"gas":1797714},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_value","type":"uint256"}],"outputs":[],"gas":552787},{"stateMutability":"nonpayable","type":"function","name":"burnFrom","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[],"gas":589138},{"stateMutability":"nonpayable","type":"function","name":"transferOwnership","inputs":[{"name":"_owner","type":"address"}],"outputs":[],"gas":39740},{"stateMutability":"nonpayable","type":"function","name":"xtransfer","inputs":[{"name":"_token","type":"address"},{"name":"_creditor","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":3511},{"stateMutability":"nonpayable","type":"function","name":"xapprove","inputs":[{"name":"_token","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":3541},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":8660},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":7713},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2318},{"stateMutability":"view","type":"function","name":"scale","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2348},{"stateMutability":"view","type":"function","name":"expanse","inputs":[],"outputs":[{"name":"","type":"int128"}],"gas":2378},{"stateMutability":"view","type":"function","name":"extent","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2408},{"stateMutability":"view","type":"function","name":"extent_max","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2438},{"stateMutability":"view","type":"function","name":"initpulse","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2468},{"stateMutability":"view","type":"function","name":"nextpulse","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2498},{"stateMutability":"view","type":"function","name":"currentLode","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2528},{"stateMutability":"view","type":"function","name":"transferLocked","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":2558},{"stateMutability":"view","type":"function","name":"taxOn","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":2588},{"stateMutability":"view","type":"function","name":"temporal_tax_num","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2618},{"stateMutability":"view","type":"function","name":"temporal_tax_num2","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2648},{"stateMutability":"view","type":"function","name":"temporal_tax_den","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2678},{"stateMutability":"view","type":"function","name":"tax_numerators","inputs":[{"name":"arg0","type":"uint256"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2926},{"stateMutability":"view","type":"function","name":"tax_numeratorsum","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2847},{"stateMutability":"view","type":"function","name":"tax_denominator","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2877},{"stateMutability":"view","type":"function","name":"tax_toflush","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2907},{"stateMutability":"view","type":"function","name":"tax_airdrop_num","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2828},{"stateMutability":"view","type":"function","name":"tax_airdrop_den","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2858}]

6104c0613ab96101403960606020613ab960c03960c051613ab9016106003960406020613ab960c03960c05160040135111561003a57600080fd5b604060206020613ab90160c03960c051613ab90161068039602060206020613ab90160c03960c05160040135111561007157600080fd5b60206080613ab90160c03960c05160011c1561008c57600080fd5b33600955601060c052602060c02060c052602060c0206101e05181556102005160018201556102205160028201556102405160038201556102605160048201556102805160058201556102a05160068201556102c05160078201556102e051600882015561030051600982015561032051600a82015561034051600b82015561036051600c82015561038051600d8201556103a051600e8201556103c051600f8201556103e05160108201556104005160118201556104205160128201556104405160138201556104605160148201556104805160158201556104a05160168201556104c05160178201556104e051601882015561050051601982015561052051601a82015561054051601b82015561056051601c82015561058051601d8201556105a051601e8201556105c051601f820155506106e060006020818352015b601160c052602060c02080546101e06106e051602081106101ec57600080fd5b602002015181818301101561020057600080fd5b808201905090508155505b81516001018083528114156101cc575b50506105e051601260c052602060c0205560016014556014601555612710600d55610a68600e55617530600f556101c051600b556101c05115600c55604e610180511061026757600080fd5b61018051600a0a6003556101a051604e610180511061028557600080fd5b61018051600a0a80820282158284830414176102a057600080fd5b809050905090506106e0526106e05160035480820282158284830414176102c657600080fd5b809050905090506005556106e05160035480820282158284830414176102eb57600080fd5b80905090509050600354808202821582848304141761030957600080fd5b809050905090506006556106e051600354808202821582848304141761032e57600080fd5b809050905090506107005261060080600060c052602060c020602082510161012060006003818352015b8261012051602002111561036b5761038d565b61012051602002850151610120518501555b8151600101808352811415610358575b50505050505061068080600160c052602060c020602082510161012060006002818352015b826101205160200211156103c5576103e7565b61012051602002850151610120518501555b81516001018083528114156103b2575b505050505050610180516002556107005160173360e05260c052604060c02060c052602060c02055600160173360e05260c052604060c02060c052602060c02001546020811061043657600080fd5b601660c052602060c0200160c052602060c02061070051815561070051600182015560006002820155600060038201556000600482015560006005820155506019601660c052602060c0200160c052602060c02060008155600060018201556000600282015560006003820155600160048201556001600582015550601b601660c052602060c0200160c052602060c02060008155600060018201556000600282015560006003820155600160048201556000600582015550601d601660c052602060c0200160c052602060c020600081556000600182015560006002820155600060038201556001600482015560016005820155506106e051610720523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610720a33360007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3613aa156600436101561000d57611c11565b600035601c5260005163659f623681141561013f57341561002d57600080fd5b60043560a01c1561003d57600080fd5b60095433141561005b5760206024351061005657600080fd5b6100cb565b600160193360e05260c052604060c0205414156100865760196024351061008157600080fd5b6100cb565b6308c379a061014052602061016052600c610180527f556e617574686f72697a656400000000000000000000000000000000000000006101a05261018050606461015cfd5b61014051600435610160526101605160065801611c40565b6101c052610140526101c051610140526024356001601760043560e05260c052604060c02060c052602060c02001556101405160043561016052610140516101805261018051610160516006580161226e565b61014052600050005b631533078f81141561017c57341561015657600080fd5b60043560011c1561016657600080fd5b600954331461017457600080fd5b600435600c55005b63cd8f72778114156103b757341561019357600080fd5b60095433146101a157600080fd5b600435600481106101b157600080fd5b601060c052602060c0200160c052602060c020602480358255806020013560018301558060400135600283015580606001356003830155806080013560048301558060a0013560058301558060c0013560068301558060e00135600783015580610100013560088301558061012001356009830155806101400135600a830155806101600135600b830155806101800135600c830155806101a00135600d830155806101c00135600e830155806101e00135600f83015580610200013560108301558061022001356011830155806102400135601283015580610260013560138301558061028001356014830155806102a001356015830155806102c001356016830155806102e00135601783015580610300013560188301558061032001356019830155806103400135601a830155806103600135601b830155806103800135601c830155806103a00135601d830155806103c00135601e830155806103e00135601f8301555050610424356004356004811061032e57600080fd5b601260c052602060c020015560006101405261016060006020818352015b61014080516024610160516020811061036457600080fd5b602002013581818301101561037857600080fd5b808201905090508152505b815160010180835281141561034c575b505061014051600435600481106103a957600080fd5b601160c052602060c0200155005b630cbea6a48114156104085734156103ce57600080fd5b60095433146103dc57600080fd5b6024356003600435602081106103f157600080fd5b601660c052602060c0200160c052602060c0200155005b63e15a56c881141561046357341561041f57600080fd5b60043560a01c1561042f57600080fd5b60243560011c1561043f57600080fd5b600954331461044d57600080fd5b602435601960043560e05260c052604060c02055005b6302f995568114156104be57341561047a57600080fd5b60043560a01c1561048a57600080fd5b60243560011c1561049a57600080fd5b60095433146104a857600080fd5b602435601a60043560e05260c052604060c02055005b632e2326d58114156104ff5734156104d557600080fd5b60043560a01c156104e557600080fd5b601960043560e05260c052604060c0205460005260206000f35b6356148dbf81141561057557341561051657600080fd5b60043560a01c1561052657600080fd5b600954331415610537576001610547565b60193360e05260c052604060c020545b61055057600080fd5b6001601760043560e05260c052604060c02060c052602060c020015460005260206000f35b63080feeab81141561070257341561058c57600080fd5b60043560a01c1561059c57600080fd5b6009543314156105ad5760016105ce565b60193360e05260c052604060c02054156105c85760016105ce565b33600435145b6105d757600080fd5b610140601760043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101a0610160516020811061063057600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610260808080610140518152505060208101905080806101a0518152505060208101905080806101c051815250506020810190508080610180518152505060208101905080806101e0518152505060a09050905060c05260c051610260f35b6352ca3ef781141561080857341561071957600080fd5b60095433141561072a57600161073a565b60193360e05260c052604060c020545b61074357600080fd5b6101406004356020811061075657600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a0015250506102008080806101405181525050602081019050808061016051815250506020810190508080610180518152505060609050905060c05260c051610200f35b637118514a8114156108a357341561081f57600080fd5b60243560011c1561082f57600080fd5b60443560011c1561083f57600080fd5b600954331461084d57600080fd5b60243560046004356020811061086257600080fd5b601660c052602060c0200160c052602060c020015560443560056004356020811061088c57600080fd5b601660c052602060c0200160c052602060c0200155005b63ddde6e4e81141561098c5734156108ba57600080fd5b6009543314156108cb5760016108db565b60193360e05260c052604060c020545b6108e457600080fd5b6101408080806004600435602081106108fc57600080fd5b601660c052602060c0200160c052602060c020015481525050602081019050808060056004356020811061092f57600080fd5b601660c052602060c0200160c052602060c020015481525050602081019050808060036004356020811061096257600080fd5b601660c052602060c0200160c052602060c02001548152505060609050905060c05260c051610140f35b6318160ddd811415610a2c5734156109a357600080fd5b60006101405261016060006020818352015b610140805161016051602081106109cb57600080fd5b601660c052602060c0200160c052602060c020548181830110156109ee57600080fd5b808201905090508152505b81516001018083528114156109b5575b5050610140516003548080610a1d57600080fd5b82049050905060005260206000f35b6370a08231811415610a8c573415610a4357600080fd5b60043560a01c15610a5357600080fd5b6004356101405261014051600658016125e6565b6101a0526101a0516003548080610a7d57600080fd5b82049050905060005260206000f35b63dd62ed3e811415610aeb573415610aa357600080fd5b60043560a01c15610ab357600080fd5b60243560a01c15610ac357600080fd5b601860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b637e81ca66811415610b33573415610b0257600080fd5b6009543314610b1057600080fd5b600060443518610b1f57600080fd5b600435600d55602435600e55604435600f55005b635f13e1f9811415610b75573415610b4a57600080fd5b6009543314610b5857600080fd5b600060243518610b6757600080fd5b600435601455602435601555005b63b10961b5811415610c53573415610b8c57600080fd5b60006101405261016060006004818352015b6101605160048110610baf57600080fd5b601360c052602060c0200154610180526000610180511815610c20576101408051610180516014548082028215828483041417610beb57600080fd5b809050905090506015548080610c0057600080fd5b820490509050818183011015610c1557600080fd5b808201905090508152505b8151600101808352811415610b9e575b5050610140516003548080610c4457600080fd5b82049050905060005260206000f35b63d42b131c811415610c81573415610c6a57600080fd5b33610140526101405160065801612ab1565b600050005b630904b7fc811415610cb2573415610c9857600080fd5b60065801612764565b610140526101405160005260206000f35b633058006b811415610f2d573415610cc957600080fd5b60043560a01c15610cd957600080fd5b60243560a01c15610ce957600080fd5b6044356003548082028215828483041417610d0357600080fd5b80905090509050610140526001601760043560e05260c052604060c02060c052602060c0200154610160526001601760243560e05260c052604060c02060c052602060c02001546101805260036101605160208110610d6157600080fd5b601660c052602060c0200160c052602060c02001546101a05260056101605160208110610d8d57600080fd5b601660c052602060c0200160c052602060c02001541515610de65760046101805160208110610dbb57600080fd5b601660c052602060c0200160c052602060c02001541515610dde57600c54610de1565b60005b610de9565b60005b15610e7d57610140516101a05160048110610e0357600080fd5b601160c052602060c02001548082028215828483041417610e2357600080fd5b809050905090506101a05160048110610e3b57600080fd5b601260c052602060c02001548080610e5257600080fd5b8204905090506101c05261014080516101c05180821015610e7257600080fd5b808203905090508152505b601a60043560e05260c052604060c0205415610ea957601a60243560e05260c052604060c02054610eac565b60005b15610f0c5761014051600e548082028215828483041417610ecc57600080fd5b80905090509050600f548080610ee157600080fd5b8204905090506101c05261014080516101c05180821015610f0157600080fd5b808203905090508152505b610140516003548080610f1e57600080fd5b82049050905060005260206000f35b63a9059cbb81141561105d573415610f4457600080fd5b60043560a01c15610f5457600080fd5b600b541515610f64576001610f85565b60193360e05260c052604060c0205415610f7f576001610f85565b60095433145b1515610ff5576308c379a0610140526020610160526024610180527f596f7520617265206e6f7420616c6c6f77656420746f206d616b65207472616e6101a0527f73666572000000000000000000000000000000000000000000000000000000006101c05261018050608461015cfd5b3361014052600435610160526024356101805261018051610160516101405160065801612d09565b60005060243561014052600435337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f35b6323b872dd8114156111f657341561107457600080fd5b60043560a01c1561108457600080fd5b60243560a01c1561109457600080fd5b600b5415156110a45760016110e2565b60193360e05260c052604060c02054156110bf5760016110e2565b601960043560e05260c052604060c02054156110dc5760016110e2565b60095433145b1515611152576308c379a0610140526020610160526024610180527f596f7520617265206e6f7420616c6c6f77656420746f206d616b65207472616e6101a0527f73666572000000000000000000000000000000000000000000000000000000006101c05261018050608461015cfd5b60043561014052602435610160526044356101805261018051610160516101405160065801612d09565b600050601860043560e05260c052604060c0203360e05260c052604060c0208054604435808210156111ad57600080fd5b80820390509050815550604435610140526024356004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f35b63095ea7b381141561125857341561120d57600080fd5b60043560a01c1561121d57600080fd5b33610140526004356101605260243561018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63395093518114156112ed57341561126f57600080fd5b60043560a01c1561127f57600080fd5b33610140526004356101605260183360e05260c052604060c02060043560e05260c052604060c020546024358181830110156112ba57600080fd5b8082019050905061018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63a457c2d781141561138057341561130457600080fd5b60043560a01c1561131457600080fd5b33610140526004356101605260183360e05260c052604060c02060043560e05260c052604060c020546024358082101561134d57600080fd5b8082039050905061018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63509027f581141561140757341561139757600080fd5b60095433146113a557600080fd5b600754156113b257600080fd5b6001600c554262015180808204905090506201518080820282158284830414176113db57600080fd5b809050905090506007556007546220f5808181830110156113fb57600080fd5b80820190509050600855005b6320b44b2981141561144457341561141e57600080fd5b60043560011c1561142e57600080fd5b600954331461143c57600080fd5b600435600b55005b63c311d04981141561148557341561145b57600080fd5b600954331461146957600080fd5b60006000600060006004356009546000f161148357600080fd5b005b63483f31ab8114156114be57341561149c57600080fd5b336101405260043561016052610160516101405160065801613226565b600050005b63bd2335f681141561153f5734156114d557600080fd5b60043560a01c156114e557600080fd5b60095433146114f357600080fd5b601a6001601760043560e05260c052604060c02060c052602060c02001541461151b57600080fd5b6004356101405260243561016052610160516101405160065801613226565b600050005b6342966c6881141561157857341561155657600080fd5b336101405260043561016052610160516101405160065801613464565b600050005b6379cc67908114156115fb57341561158f57600080fd5b60043560a01c1561159f57600080fd5b601860043560e05260c052604060c0203360e05260c052604060c0208054602435808210156115cd57600080fd5b808203905090508155506004356101405260243561016052610160516101405160065801613464565b600050005b63f2fde38b81141561167357341561161257600080fd5b60043560a01c1561162257600080fd5b600954331461163057600080fd5b60006004351861163f57600080fd5b6004356009547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3600435600955005b6307ddc22681141561170657341561168a57600080fd5b60043560a01c1561169a57600080fd5b60243560a01c156116aa57600080fd5b60095433146116b857600080fd5b60206101e0604463a9059cbb61014052602435610160526044356101805261015c60006004355af16116e957600080fd5b601f3d116116f657600080fd5b6000506101e05160005260206000f35b63bb2b38bd81141561179957341561171d57600080fd5b60043560a01c1561172d57600080fd5b60243560a01c1561173d57600080fd5b600954331461174b57600080fd5b60206101e0604463095ea7b361014052602435610160526044356101805261015c60006004355af161177c57600080fd5b601f3d1161178957600080fd5b6000506101e05160005260206000f35b6306fdde038114156118495734156117b057600080fd5b60008060c052602060c020610180602082540161012060006003818352015b826101205160200211156117e257611804565b61012051850154610120516020028501525b81516001018083528114156117cf575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b418114156118f957341561186057600080fd5b60018060c052602060c020610180602082540161012060006002818352015b82610120516020021115611892576118b4565b61012051850154610120516020028501525b815160010180835281141561187f575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce56781141561191c57341561191057600080fd5b60025460005260206000f35b63f51e181a81141561193f57341561193357600080fd5b60035460005260206000f35b631b0bef5c81141561196257341561195657600080fd5b60045460005260206000f35b6380b14d1581141561198557341561197957600080fd5b60055460005260206000f35b63d7a62fac8114156119a857341561199c57600080fd5b60065460005260206000f35b6310fac3e18114156119cb5734156119bf57600080fd5b60075460005260206000f35b6319f5d7608114156119ee5734156119e257600080fd5b60085460005260206000f35b63e0a8e16c811415611a11573415611a0557600080fd5b600a5460005260206000f35b6312686aae811415611a34573415611a2857600080fd5b600b5460005260206000f35b630bff5d1a811415611a57573415611a4b57600080fd5b600c5460005260206000f35b63d7e670c7811415611a7a573415611a6e57600080fd5b600d5460005260206000f35b6303b0662d811415611a9d573415611a9157600080fd5b600e5460005260206000f35b634578da39811415611ac0573415611ab457600080fd5b600f5460005260206000f35b63fb79cf90811415611b15573415611ad757600080fd5b60243560208110611ae757600080fd5b60043560048110611af757600080fd5b601060c052602060c0200160c052602060c020015460005260206000f35b63f24d1a17811415611b51573415611b2c57600080fd5b60043560048110611b3c57600080fd5b601160c052602060c020015460005260206000f35b633314f0e5811415611b8d573415611b6857600080fd5b60043560048110611b7857600080fd5b601260c052602060c020015460005260206000f35b63c9cf051a811415611bc9573415611ba457600080fd5b60043560048110611bb457600080fd5b601360c052602060c020015460005260206000f35b63a35f0deb811415611bec573415611be057600080fd5b60145460005260206000f35b635dfb487e811415611c0f573415611c0357600080fd5b60155460005260206000f35b505b3461014052337fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf16020610140a2005b610160526101405261018060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101e06101a05160208110611ca257600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610180516102a0526102a0511515611d615760176101405160e05260c052604060c02060c052602060c02060008155600060018201556000600282015550600060005260005161016051565b610220516101c0511815611dbf576101c0516102205180820380806000811215611d8757195b607f1c15611d9457600080fd5b9050905090506000811215611db15761018051816000031c611db8565b61018051811b5b90506102a0525b6102a0516101e0518082028215828483041417611ddb57600080fd5b80905090509050610200518080611df157600080fd5b8204905090506102c05260176101405160e05260c052604060c02060c052602060c020600081556000600182015560006002820155506101a05160208110611e3857600080fd5b601660c052602060c0200160c052602060c02080546102c05180821015611e5e57600080fd5b8082039050905081555060016101a05160208110611e7b57600080fd5b601660c052602060c0200160c052602060c0200180546102a05180821015611ea257600080fd5b808203905090508155506102c05160005260005161016051565b6101805261014052610160526101a060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506102006101c05160208110611f2257600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610240516101e051181561202a576101e0516102405180820380806000811215611fbb57195b607f1c15611fc857600080fd5b9050905090506000811215611fe5576101a051816000031c611fec565b6101a051811b5b905060176101405160e05260c052604060c02060c052602060c0205561024051600260176101405160e05260c052604060c02060c052602060c02001555b6101605161022051808202821582848304141761204657600080fd5b8090509050905061020051808061205c57600080fd5b8204905090506102c05260176101405160e05260c052604060c02060c052602060c02080546102c0518082101561209257600080fd5b8082039050905081555060035460176101405160e05260c052604060c02060c052602060c020541015612195576102c0805160176101405160e05260c052604060c02060c052602060c020548181830110156120ed57600080fd5b80820190509050815250600060176101405160e05260c052604060c02060c052602060c020556102c05161020051808202821582848304141761212f57600080fd5b8090509050905061022051808061214557600080fd5b8204905090506102e0526101c0516020811061216057600080fd5b601660c052602060c0200160c052602060c02080546102e0518082101561218657600080fd5b808203905090508155506121d7565b6101c051602081106121a657600080fd5b601660c052602060c0200160c052602060c020805461016051808210156121cc57600080fd5b808203905090508155505b60016101c051602081106121ea57600080fd5b601660c052602060c0200160c052602060c0200180546102c0518082101561221157600080fd5b8082039050905081555060176101405160e05260c052604060c02060c052602060c0205415156122685760176101405160e05260c052604060c02060c052602060c020600081556000600182015560006002820155505b61018051565b6101805261014052610160526101a060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101a05115156122d4576101c051156122d7565b60005b1561233b576000610140513b111561231357601a6101c052601a600160176101405160e05260c052604060c02060c052602060c020015561233b565b600a546101c052600a54600160176101405160e05260c052604060c02060c052602060c02001555b6102006101c0516020811061234f57600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a00152505060006101a0511815612434576101e05161024051808203808060008112156123e657195b607f1c156123f357600080fd5b9050905090506000811215612410576101a051816000031c612417565b6101a051811b5b905060176101405160e05260c052604060c02060c052602060c020555b61024051600260176101405160e05260c052604060c02060c052602060c02001556102205115156124e25760016101c0516020811061247257600080fd5b601660c052602060c0200160c052602060c0200180546101605181818301101561249b57600080fd5b8082019050905081555060176101405160e05260c052604060c02060c052602060c0208054610160518181830110156124d357600080fd5b8082019050905081555061259d565b610160516102205180820282158284830414176124fe57600080fd5b8090509050905061020051808061251457600080fd5b8204905090506102c05260016101c0516020811061253157600080fd5b601660c052602060c0200160c052602060c0200180546102c05181818301101561255a57600080fd5b8082019050905081555060176101405160e05260c052604060c02060c052602060c02080546102c05181818301101561259257600080fd5b808201905090508155505b6101c051602081106125ae57600080fd5b601660c052602060c0200160c052602060c0208054610160518181830110156125d657600080fd5b8082019050905081555061018051565b610160526101405261018060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101e06101a0516020811061264857600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a0015250506102005115156126d75760006000526000516101605156612762565b6101c05161022051808203808060008112156126ef57195b607f1c156126fc57600080fd5b90509050905060008112156127195761018051816000031c612720565b61018051811b5b90506101e051808202821582848304141761273a57600080fd5b8090509050905061020051808061275057600080fd5b82049050905060005260005161016051565b005b6101405260006007541815612aa3576008546007548082101561278657600080fd5b808203905090506201518080820490509050601980820690509050600a55600854421115612aa357600a54602081106127be57600080fd5b601660c052602060c0200160c052602060c02054600d5480820282158284830414176127e957600080fd5b80905090509050600f5480806127fe57600080fd5b82049050905061016052600a546020811061281857600080fd5b601660c052602060c0200160c052602060c0208054610160518082101561283e57600080fd5b80820390509050815550601b601660c052602060c0200160c052602060c02080546101605181818301101561287257600080fd5b80820190509050815550600880546201518081818301101561289357600080fd5b80820190509050815550600a541515612960576000600f54600d54808210156128bb57600080fd5b80820390509050181561296057600554600f5480820282158284830414176128e257600080fd5b80905090509050600f54600d54808210156128fc57600080fd5b80820390509050808061290e57600080fd5b820490509050600555600654600554111561296057600580546002808204905090508155506004805460018082018080600081121561294957195b607f1c1561295657600080fd5b9050905090508155505b6004546002600a546020811061297557600080fd5b601660c052602060c0200160c052602060c02001541815612a95576002600a54602081106129a257600080fd5b601660c052602060c0200160c052602060c0200154600454808203808060008112156129ca57195b607f1c156129d757600080fd5b9050905090506000811215612a17576001600a54602081106129f857600080fd5b601660c052602060c0200160c052602060c0200154816000031c612a41565b6001600a5460208110612a2957600080fd5b601660c052602060c0200160c052602060c0200154811b5b90506001600a5460208110612a5557600080fd5b601660c052602060c0200160c052602060c02001556004546002600a5460208110612a7f57600080fd5b601660c052602060c0200160c052602060c02001555b600160005260005161014051565b600060005260005161014051565b61016052610140526000610180526101a060006004818352015b6101a05160048110612adc57600080fd5b601360c052602060c02001546101c05260006101c0511815612c5f576101c0516014548082028215828483041417612b1357600080fd5b809050905090506015548080612b2857600080fd5b8204905090506101e05261018080516101e051818183011015612b4a57600080fd5b808201905090508152506101c080516101e05180821015612b6a57600080fd5b808203905090508152506101a05160048110612b8557600080fd5b601160c052602060c02001546102005261022060006020818352015b6102205160208110612bb257600080fd5b601660c052602060c0200160c052602060c02080546101c0516102205160208110612bdc57600080fd5b6101a05160048110612bed57600080fd5b601060c052602060c0200160c052602060c02001548082028215828483041417612c1657600080fd5b80905090509050610200518080612c2c57600080fd5b820490509050818183011015612c4157600080fd5b808201905090508155505b8151600101808352811415612ba1575b50505b60006101a05160048110612c7257600080fd5b601360c052602060c02001555b8151600101808352811415612acb575b50506000610180511815612cda57610140516101605161018051610140516101a052610180516101c0526101c0516101a0516006580161226e565b6101805261016052610140526000505b61014051610160516101805160065801612764565b6101a0526101805261016052610140526101a05061016051565b6101a052610140526101605261018052610180516003548082028215828483041417612d3457600080fd5b809050905090506101c052600160176101405160e05260c052604060c02060c052602060c02001546101e052600160176101605160e05260c052604060c02060c052602060c02001546102005260036101e05160208110612d9457600080fd5b601660c052602060c0200160c052602060c0200154610220526101405161016051610180516101a0516101c0516101e051610200516102205161014051610240526101c05161026052610260516102405160065801611ebc565b61022052610200526101e0526101c0526101a05261018052610160526101405260005060056101e05160208110612e2457600080fd5b601660c052602060c0200160c052602060c02001541515612e7d5760046102005160208110612e5257600080fd5b601660c052602060c0200160c052602060c02001541515612e7557600c54612e78565b60005b612e80565b60005b15612f4f576101c0516102205160048110612e9a57600080fd5b601160c052602060c02001548082028215828483041417612eba57600080fd5b809050905090506102205160048110612ed257600080fd5b601260c052602060c02001548080612ee957600080fd5b820490509050610240526101c080516102405180821015612f0957600080fd5b808203905090508152506102205160048110612f2457600080fd5b601360c052602060c02001805461024051818183011015612f4457600080fd5b808201905090508155505b601a6101405160e05260c052604060c0205415612f7d57601a6101605160e05260c052604060c02054612f80565b60005b15613014576101c051600e548082028215828483041417612fa057600080fd5b80905090509050600f548080612fb557600080fd5b820490509050610240526101c080516102405180821015612fd557600080fd5b80820390509050815250601d601660c052602060c0200160c052602060c02080546102405181818301101561300957600080fd5b808201905090508155505b60006007541815613142576101e051600a5418156130385760196101e0511061303b565b60005b15613142576101405161016051610180516101a0516101c0516101e05161020051610220516102405161014051610260526102605160065801611c40565b6102c0526102405261022052610200526101e0526101c0526101a0526101805261016052610140526102c05161024052600061024051181561314257600a54600160176101405160e05260c052604060c02060c052602060c02001556101405161016051610180516101a0516101c0516101e0516102005161022051610240516101405161026052610240516102805261028051610260516006580161226e565b6102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b6101405161016051610180516101a0516101c0516101e051610200516102205161016051610240526101c0516102605261026051610240516006580161226e565b61022052610200526101e0526101c0526101a0526101805261016052610140526000506101a051565b6101a0526101405261016052610180526101805160186101405160e05260c052604060c0206101605160e05260c052604060c02055610180516101c05261016051610140517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206101c0a360016000526000516101a051565b61018052610140526101605261016051600354808202821582848304141761324d57600080fd5b809050905090506101a05260006101c0526003600160176101405160e05260c052604060c02060c052602060c02001546020811061328a57600080fd5b601660c052602060c0200160c052602060c02001546101e0526101405161016051610180516101a0516101c0516101e05161014051610200526101a05161022052610220516102005160065801611ebc565b6101e0526101c0526101a05261018052610160526101405260005061020060006020818352015b6101c080516101e0516004811061331957600080fd5b601260c052602060c020015481818301101561333457600080fd5b808201905090508152505b8151600101808352811415613303575b50506101c0511515613394576019601660c052602060c0200160c052602060c02080546101a05181818301101561338557600080fd5b8082019050905081555061345e565b61020060006020818352015b61020051602081106133b157600080fd5b601660c052602060c0200160c052602060c02080546101a05161020051602081106133db57600080fd5b6101e051600481106133ec57600080fd5b601060c052602060c0200160c052602060c0200154808202821582848304141761341557600080fd5b809050905090506101c051808061342b57600080fd5b82049050905081818301101561344057600080fd5b808201905090508155505b81516001018083528114156133a0575b50505b61018051565b6101805261014052610160526000610140511861348057600080fd5b610140516101605161018051610140516101a0526101605160035480820282158284830414176134af57600080fd5b809050905090506101c0526101c0516101a05160065801611ebc565b610180526101605261014052600050610160516101a0526000610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a361018051565b61058c613aa10361058c60003961058c613aa1036000f300000000000000000000000000000000000000000000000000000000000004c00000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000a456e726561636844414f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e52434800000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x600436101561000d57611c11565b600035601c5260005163659f623681141561013f57341561002d57600080fd5b60043560a01c1561003d57600080fd5b60095433141561005b5760206024351061005657600080fd5b6100cb565b600160193360e05260c052604060c0205414156100865760196024351061008157600080fd5b6100cb565b6308c379a061014052602061016052600c610180527f556e617574686f72697a656400000000000000000000000000000000000000006101a05261018050606461015cfd5b61014051600435610160526101605160065801611c40565b6101c052610140526101c051610140526024356001601760043560e05260c052604060c02060c052602060c02001556101405160043561016052610140516101805261018051610160516006580161226e565b61014052600050005b631533078f81141561017c57341561015657600080fd5b60043560011c1561016657600080fd5b600954331461017457600080fd5b600435600c55005b63cd8f72778114156103b757341561019357600080fd5b60095433146101a157600080fd5b600435600481106101b157600080fd5b601060c052602060c0200160c052602060c020602480358255806020013560018301558060400135600283015580606001356003830155806080013560048301558060a0013560058301558060c0013560068301558060e00135600783015580610100013560088301558061012001356009830155806101400135600a830155806101600135600b830155806101800135600c830155806101a00135600d830155806101c00135600e830155806101e00135600f83015580610200013560108301558061022001356011830155806102400135601283015580610260013560138301558061028001356014830155806102a001356015830155806102c001356016830155806102e00135601783015580610300013560188301558061032001356019830155806103400135601a830155806103600135601b830155806103800135601c830155806103a00135601d830155806103c00135601e830155806103e00135601f8301555050610424356004356004811061032e57600080fd5b601260c052602060c020015560006101405261016060006020818352015b61014080516024610160516020811061036457600080fd5b602002013581818301101561037857600080fd5b808201905090508152505b815160010180835281141561034c575b505061014051600435600481106103a957600080fd5b601160c052602060c0200155005b630cbea6a48114156104085734156103ce57600080fd5b60095433146103dc57600080fd5b6024356003600435602081106103f157600080fd5b601660c052602060c0200160c052602060c0200155005b63e15a56c881141561046357341561041f57600080fd5b60043560a01c1561042f57600080fd5b60243560011c1561043f57600080fd5b600954331461044d57600080fd5b602435601960043560e05260c052604060c02055005b6302f995568114156104be57341561047a57600080fd5b60043560a01c1561048a57600080fd5b60243560011c1561049a57600080fd5b60095433146104a857600080fd5b602435601a60043560e05260c052604060c02055005b632e2326d58114156104ff5734156104d557600080fd5b60043560a01c156104e557600080fd5b601960043560e05260c052604060c0205460005260206000f35b6356148dbf81141561057557341561051657600080fd5b60043560a01c1561052657600080fd5b600954331415610537576001610547565b60193360e05260c052604060c020545b61055057600080fd5b6001601760043560e05260c052604060c02060c052602060c020015460005260206000f35b63080feeab81141561070257341561058c57600080fd5b60043560a01c1561059c57600080fd5b6009543314156105ad5760016105ce565b60193360e05260c052604060c02054156105c85760016105ce565b33600435145b6105d757600080fd5b610140601760043560e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101a0610160516020811061063057600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610260808080610140518152505060208101905080806101a0518152505060208101905080806101c051815250506020810190508080610180518152505060208101905080806101e0518152505060a09050905060c05260c051610260f35b6352ca3ef781141561080857341561071957600080fd5b60095433141561072a57600161073a565b60193360e05260c052604060c020545b61074357600080fd5b6101406004356020811061075657600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a0015250506102008080806101405181525050602081019050808061016051815250506020810190508080610180518152505060609050905060c05260c051610200f35b637118514a8114156108a357341561081f57600080fd5b60243560011c1561082f57600080fd5b60443560011c1561083f57600080fd5b600954331461084d57600080fd5b60243560046004356020811061086257600080fd5b601660c052602060c0200160c052602060c020015560443560056004356020811061088c57600080fd5b601660c052602060c0200160c052602060c0200155005b63ddde6e4e81141561098c5734156108ba57600080fd5b6009543314156108cb5760016108db565b60193360e05260c052604060c020545b6108e457600080fd5b6101408080806004600435602081106108fc57600080fd5b601660c052602060c0200160c052602060c020015481525050602081019050808060056004356020811061092f57600080fd5b601660c052602060c0200160c052602060c020015481525050602081019050808060036004356020811061096257600080fd5b601660c052602060c0200160c052602060c02001548152505060609050905060c05260c051610140f35b6318160ddd811415610a2c5734156109a357600080fd5b60006101405261016060006020818352015b610140805161016051602081106109cb57600080fd5b601660c052602060c0200160c052602060c020548181830110156109ee57600080fd5b808201905090508152505b81516001018083528114156109b5575b5050610140516003548080610a1d57600080fd5b82049050905060005260206000f35b6370a08231811415610a8c573415610a4357600080fd5b60043560a01c15610a5357600080fd5b6004356101405261014051600658016125e6565b6101a0526101a0516003548080610a7d57600080fd5b82049050905060005260206000f35b63dd62ed3e811415610aeb573415610aa357600080fd5b60043560a01c15610ab357600080fd5b60243560a01c15610ac357600080fd5b601860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b637e81ca66811415610b33573415610b0257600080fd5b6009543314610b1057600080fd5b600060443518610b1f57600080fd5b600435600d55602435600e55604435600f55005b635f13e1f9811415610b75573415610b4a57600080fd5b6009543314610b5857600080fd5b600060243518610b6757600080fd5b600435601455602435601555005b63b10961b5811415610c53573415610b8c57600080fd5b60006101405261016060006004818352015b6101605160048110610baf57600080fd5b601360c052602060c0200154610180526000610180511815610c20576101408051610180516014548082028215828483041417610beb57600080fd5b809050905090506015548080610c0057600080fd5b820490509050818183011015610c1557600080fd5b808201905090508152505b8151600101808352811415610b9e575b5050610140516003548080610c4457600080fd5b82049050905060005260206000f35b63d42b131c811415610c81573415610c6a57600080fd5b33610140526101405160065801612ab1565b600050005b630904b7fc811415610cb2573415610c9857600080fd5b60065801612764565b610140526101405160005260206000f35b633058006b811415610f2d573415610cc957600080fd5b60043560a01c15610cd957600080fd5b60243560a01c15610ce957600080fd5b6044356003548082028215828483041417610d0357600080fd5b80905090509050610140526001601760043560e05260c052604060c02060c052602060c0200154610160526001601760243560e05260c052604060c02060c052602060c02001546101805260036101605160208110610d6157600080fd5b601660c052602060c0200160c052602060c02001546101a05260056101605160208110610d8d57600080fd5b601660c052602060c0200160c052602060c02001541515610de65760046101805160208110610dbb57600080fd5b601660c052602060c0200160c052602060c02001541515610dde57600c54610de1565b60005b610de9565b60005b15610e7d57610140516101a05160048110610e0357600080fd5b601160c052602060c02001548082028215828483041417610e2357600080fd5b809050905090506101a05160048110610e3b57600080fd5b601260c052602060c02001548080610e5257600080fd5b8204905090506101c05261014080516101c05180821015610e7257600080fd5b808203905090508152505b601a60043560e05260c052604060c0205415610ea957601a60243560e05260c052604060c02054610eac565b60005b15610f0c5761014051600e548082028215828483041417610ecc57600080fd5b80905090509050600f548080610ee157600080fd5b8204905090506101c05261014080516101c05180821015610f0157600080fd5b808203905090508152505b610140516003548080610f1e57600080fd5b82049050905060005260206000f35b63a9059cbb81141561105d573415610f4457600080fd5b60043560a01c15610f5457600080fd5b600b541515610f64576001610f85565b60193360e05260c052604060c0205415610f7f576001610f85565b60095433145b1515610ff5576308c379a0610140526020610160526024610180527f596f7520617265206e6f7420616c6c6f77656420746f206d616b65207472616e6101a0527f73666572000000000000000000000000000000000000000000000000000000006101c05261018050608461015cfd5b3361014052600435610160526024356101805261018051610160516101405160065801612d09565b60005060243561014052600435337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f35b6323b872dd8114156111f657341561107457600080fd5b60043560a01c1561108457600080fd5b60243560a01c1561109457600080fd5b600b5415156110a45760016110e2565b60193360e05260c052604060c02054156110bf5760016110e2565b601960043560e05260c052604060c02054156110dc5760016110e2565b60095433145b1515611152576308c379a0610140526020610160526024610180527f596f7520617265206e6f7420616c6c6f77656420746f206d616b65207472616e6101a0527f73666572000000000000000000000000000000000000000000000000000000006101c05261018050608461015cfd5b60043561014052602435610160526044356101805261018051610160516101405160065801612d09565b600050601860043560e05260c052604060c0203360e05260c052604060c0208054604435808210156111ad57600080fd5b80820390509050815550604435610140526024356004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3600160005260206000f35b63095ea7b381141561125857341561120d57600080fd5b60043560a01c1561121d57600080fd5b33610140526004356101605260243561018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63395093518114156112ed57341561126f57600080fd5b60043560a01c1561127f57600080fd5b33610140526004356101605260183360e05260c052604060c02060043560e05260c052604060c020546024358181830110156112ba57600080fd5b8082019050905061018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63a457c2d781141561138057341561130457600080fd5b60043560a01c1561131457600080fd5b33610140526004356101605260183360e05260c052604060c02060043560e05260c052604060c020546024358082101561134d57600080fd5b8082039050905061018052610180516101605161014051600658016131ac565b6101e0526101e050600160005260206000f35b63509027f581141561140757341561139757600080fd5b60095433146113a557600080fd5b600754156113b257600080fd5b6001600c554262015180808204905090506201518080820282158284830414176113db57600080fd5b809050905090506007556007546220f5808181830110156113fb57600080fd5b80820190509050600855005b6320b44b2981141561144457341561141e57600080fd5b60043560011c1561142e57600080fd5b600954331461143c57600080fd5b600435600b55005b63c311d04981141561148557341561145b57600080fd5b600954331461146957600080fd5b60006000600060006004356009546000f161148357600080fd5b005b63483f31ab8114156114be57341561149c57600080fd5b336101405260043561016052610160516101405160065801613226565b600050005b63bd2335f681141561153f5734156114d557600080fd5b60043560a01c156114e557600080fd5b60095433146114f357600080fd5b601a6001601760043560e05260c052604060c02060c052602060c02001541461151b57600080fd5b6004356101405260243561016052610160516101405160065801613226565b600050005b6342966c6881141561157857341561155657600080fd5b336101405260043561016052610160516101405160065801613464565b600050005b6379cc67908114156115fb57341561158f57600080fd5b60043560a01c1561159f57600080fd5b601860043560e05260c052604060c0203360e05260c052604060c0208054602435808210156115cd57600080fd5b808203905090508155506004356101405260243561016052610160516101405160065801613464565b600050005b63f2fde38b81141561167357341561161257600080fd5b60043560a01c1561162257600080fd5b600954331461163057600080fd5b60006004351861163f57600080fd5b6004356009547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060006000a3600435600955005b6307ddc22681141561170657341561168a57600080fd5b60043560a01c1561169a57600080fd5b60243560a01c156116aa57600080fd5b60095433146116b857600080fd5b60206101e0604463a9059cbb61014052602435610160526044356101805261015c60006004355af16116e957600080fd5b601f3d116116f657600080fd5b6000506101e05160005260206000f35b63bb2b38bd81141561179957341561171d57600080fd5b60043560a01c1561172d57600080fd5b60243560a01c1561173d57600080fd5b600954331461174b57600080fd5b60206101e0604463095ea7b361014052602435610160526044356101805261015c60006004355af161177c57600080fd5b601f3d1161178957600080fd5b6000506101e05160005260206000f35b6306fdde038114156118495734156117b057600080fd5b60008060c052602060c020610180602082540161012060006003818352015b826101205160200211156117e257611804565b61012051850154610120516020028501525b81516001018083528114156117cf575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b418114156118f957341561186057600080fd5b60018060c052602060c020610180602082540161012060006002818352015b82610120516020021115611892576118b4565b61012051850154610120516020028501525b815160010180835281141561187f575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce56781141561191c57341561191057600080fd5b60025460005260206000f35b63f51e181a81141561193f57341561193357600080fd5b60035460005260206000f35b631b0bef5c81141561196257341561195657600080fd5b60045460005260206000f35b6380b14d1581141561198557341561197957600080fd5b60055460005260206000f35b63d7a62fac8114156119a857341561199c57600080fd5b60065460005260206000f35b6310fac3e18114156119cb5734156119bf57600080fd5b60075460005260206000f35b6319f5d7608114156119ee5734156119e257600080fd5b60085460005260206000f35b63e0a8e16c811415611a11573415611a0557600080fd5b600a5460005260206000f35b6312686aae811415611a34573415611a2857600080fd5b600b5460005260206000f35b630bff5d1a811415611a57573415611a4b57600080fd5b600c5460005260206000f35b63d7e670c7811415611a7a573415611a6e57600080fd5b600d5460005260206000f35b6303b0662d811415611a9d573415611a9157600080fd5b600e5460005260206000f35b634578da39811415611ac0573415611ab457600080fd5b600f5460005260206000f35b63fb79cf90811415611b15573415611ad757600080fd5b60243560208110611ae757600080fd5b60043560048110611af757600080fd5b601060c052602060c0200160c052602060c020015460005260206000f35b63f24d1a17811415611b51573415611b2c57600080fd5b60043560048110611b3c57600080fd5b601160c052602060c020015460005260206000f35b633314f0e5811415611b8d573415611b6857600080fd5b60043560048110611b7857600080fd5b601260c052602060c020015460005260206000f35b63c9cf051a811415611bc9573415611ba457600080fd5b60043560048110611bb457600080fd5b601360c052602060c020015460005260206000f35b63a35f0deb811415611bec573415611be057600080fd5b60145460005260206000f35b635dfb487e811415611c0f573415611c0357600080fd5b60155460005260206000f35b505b3461014052337fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf16020610140a2005b610160526101405261018060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101e06101a05160208110611ca257600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610180516102a0526102a0511515611d615760176101405160e05260c052604060c02060c052602060c02060008155600060018201556000600282015550600060005260005161016051565b610220516101c0511815611dbf576101c0516102205180820380806000811215611d8757195b607f1c15611d9457600080fd5b9050905090506000811215611db15761018051816000031c611db8565b61018051811b5b90506102a0525b6102a0516101e0518082028215828483041417611ddb57600080fd5b80905090509050610200518080611df157600080fd5b8204905090506102c05260176101405160e05260c052604060c02060c052602060c020600081556000600182015560006002820155506101a05160208110611e3857600080fd5b601660c052602060c0200160c052602060c02080546102c05180821015611e5e57600080fd5b8082039050905081555060016101a05160208110611e7b57600080fd5b601660c052602060c0200160c052602060c0200180546102a05180821015611ea257600080fd5b808203905090508155506102c05160005260005161016051565b6101805261014052610160526101a060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506102006101c05160208110611f2257600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a001525050610240516101e051181561202a576101e0516102405180820380806000811215611fbb57195b607f1c15611fc857600080fd5b9050905090506000811215611fe5576101a051816000031c611fec565b6101a051811b5b905060176101405160e05260c052604060c02060c052602060c0205561024051600260176101405160e05260c052604060c02060c052602060c02001555b6101605161022051808202821582848304141761204657600080fd5b8090509050905061020051808061205c57600080fd5b8204905090506102c05260176101405160e05260c052604060c02060c052602060c02080546102c0518082101561209257600080fd5b8082039050905081555060035460176101405160e05260c052604060c02060c052602060c020541015612195576102c0805160176101405160e05260c052604060c02060c052602060c020548181830110156120ed57600080fd5b80820190509050815250600060176101405160e05260c052604060c02060c052602060c020556102c05161020051808202821582848304141761212f57600080fd5b8090509050905061022051808061214557600080fd5b8204905090506102e0526101c0516020811061216057600080fd5b601660c052602060c0200160c052602060c02080546102e0518082101561218657600080fd5b808203905090508155506121d7565b6101c051602081106121a657600080fd5b601660c052602060c0200160c052602060c020805461016051808210156121cc57600080fd5b808203905090508155505b60016101c051602081106121ea57600080fd5b601660c052602060c0200160c052602060c0200180546102c0518082101561221157600080fd5b8082039050905081555060176101405160e05260c052604060c02060c052602060c0205415156122685760176101405160e05260c052604060c02060c052602060c020600081556000600182015560006002820155505b61018051565b6101805261014052610160526101a060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101a05115156122d4576101c051156122d7565b60005b1561233b576000610140513b111561231357601a6101c052601a600160176101405160e05260c052604060c02060c052602060c020015561233b565b600a546101c052600a54600160176101405160e05260c052604060c02060c052602060c02001555b6102006101c0516020811061234f57600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a00152505060006101a0511815612434576101e05161024051808203808060008112156123e657195b607f1c156123f357600080fd5b9050905090506000811215612410576101a051816000031c612417565b6101a051811b5b905060176101405160e05260c052604060c02060c052602060c020555b61024051600260176101405160e05260c052604060c02060c052602060c02001556102205115156124e25760016101c0516020811061247257600080fd5b601660c052602060c0200160c052602060c0200180546101605181818301101561249b57600080fd5b8082019050905081555060176101405160e05260c052604060c02060c052602060c0208054610160518181830110156124d357600080fd5b8082019050905081555061259d565b610160516102205180820282158284830414176124fe57600080fd5b8090509050905061020051808061251457600080fd5b8204905090506102c05260016101c0516020811061253157600080fd5b601660c052602060c0200160c052602060c0200180546102c05181818301101561255a57600080fd5b8082019050905081555060176101405160e05260c052604060c02060c052602060c02080546102c05181818301101561259257600080fd5b808201905090508155505b6101c051602081106125ae57600080fd5b601660c052602060c0200160c052602060c0208054610160518181830110156125d657600080fd5b8082019050905081555061018051565b610160526101405261018060176101405160e05260c052604060c0208060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015250506101e06101a0516020811061264857600080fd5b601660c052602060c020018060c052602060c02054825260018160c052602060c0200154826020015260028160c052602060c0200154826040015260038160c052602060c0200154826060015260048160c052602060c0200154826080015260058160c052602060c02001548260a0015250506102005115156126d75760006000526000516101605156612762565b6101c05161022051808203808060008112156126ef57195b607f1c156126fc57600080fd5b90509050905060008112156127195761018051816000031c612720565b61018051811b5b90506101e051808202821582848304141761273a57600080fd5b8090509050905061020051808061275057600080fd5b82049050905060005260005161016051565b005b6101405260006007541815612aa3576008546007548082101561278657600080fd5b808203905090506201518080820490509050601980820690509050600a55600854421115612aa357600a54602081106127be57600080fd5b601660c052602060c0200160c052602060c02054600d5480820282158284830414176127e957600080fd5b80905090509050600f5480806127fe57600080fd5b82049050905061016052600a546020811061281857600080fd5b601660c052602060c0200160c052602060c0208054610160518082101561283e57600080fd5b80820390509050815550601b601660c052602060c0200160c052602060c02080546101605181818301101561287257600080fd5b80820190509050815550600880546201518081818301101561289357600080fd5b80820190509050815550600a541515612960576000600f54600d54808210156128bb57600080fd5b80820390509050181561296057600554600f5480820282158284830414176128e257600080fd5b80905090509050600f54600d54808210156128fc57600080fd5b80820390509050808061290e57600080fd5b820490509050600555600654600554111561296057600580546002808204905090508155506004805460018082018080600081121561294957195b607f1c1561295657600080fd5b9050905090508155505b6004546002600a546020811061297557600080fd5b601660c052602060c0200160c052602060c02001541815612a95576002600a54602081106129a257600080fd5b601660c052602060c0200160c052602060c0200154600454808203808060008112156129ca57195b607f1c156129d757600080fd5b9050905090506000811215612a17576001600a54602081106129f857600080fd5b601660c052602060c0200160c052602060c0200154816000031c612a41565b6001600a5460208110612a2957600080fd5b601660c052602060c0200160c052602060c0200154811b5b90506001600a5460208110612a5557600080fd5b601660c052602060c0200160c052602060c02001556004546002600a5460208110612a7f57600080fd5b601660c052602060c0200160c052602060c02001555b600160005260005161014051565b600060005260005161014051565b61016052610140526000610180526101a060006004818352015b6101a05160048110612adc57600080fd5b601360c052602060c02001546101c05260006101c0511815612c5f576101c0516014548082028215828483041417612b1357600080fd5b809050905090506015548080612b2857600080fd5b8204905090506101e05261018080516101e051818183011015612b4a57600080fd5b808201905090508152506101c080516101e05180821015612b6a57600080fd5b808203905090508152506101a05160048110612b8557600080fd5b601160c052602060c02001546102005261022060006020818352015b6102205160208110612bb257600080fd5b601660c052602060c0200160c052602060c02080546101c0516102205160208110612bdc57600080fd5b6101a05160048110612bed57600080fd5b601060c052602060c0200160c052602060c02001548082028215828483041417612c1657600080fd5b80905090509050610200518080612c2c57600080fd5b820490509050818183011015612c4157600080fd5b808201905090508155505b8151600101808352811415612ba1575b50505b60006101a05160048110612c7257600080fd5b601360c052602060c02001555b8151600101808352811415612acb575b50506000610180511815612cda57610140516101605161018051610140516101a052610180516101c0526101c0516101a0516006580161226e565b6101805261016052610140526000505b61014051610160516101805160065801612764565b6101a0526101805261016052610140526101a05061016051565b6101a052610140526101605261018052610180516003548082028215828483041417612d3457600080fd5b809050905090506101c052600160176101405160e05260c052604060c02060c052602060c02001546101e052600160176101605160e05260c052604060c02060c052602060c02001546102005260036101e05160208110612d9457600080fd5b601660c052602060c0200160c052602060c0200154610220526101405161016051610180516101a0516101c0516101e051610200516102205161014051610240526101c05161026052610260516102405160065801611ebc565b61022052610200526101e0526101c0526101a05261018052610160526101405260005060056101e05160208110612e2457600080fd5b601660c052602060c0200160c052602060c02001541515612e7d5760046102005160208110612e5257600080fd5b601660c052602060c0200160c052602060c02001541515612e7557600c54612e78565b60005b612e80565b60005b15612f4f576101c0516102205160048110612e9a57600080fd5b601160c052602060c02001548082028215828483041417612eba57600080fd5b809050905090506102205160048110612ed257600080fd5b601260c052602060c02001548080612ee957600080fd5b820490509050610240526101c080516102405180821015612f0957600080fd5b808203905090508152506102205160048110612f2457600080fd5b601360c052602060c02001805461024051818183011015612f4457600080fd5b808201905090508155505b601a6101405160e05260c052604060c0205415612f7d57601a6101605160e05260c052604060c02054612f80565b60005b15613014576101c051600e548082028215828483041417612fa057600080fd5b80905090509050600f548080612fb557600080fd5b820490509050610240526101c080516102405180821015612fd557600080fd5b80820390509050815250601d601660c052602060c0200160c052602060c02080546102405181818301101561300957600080fd5b808201905090508155505b60006007541815613142576101e051600a5418156130385760196101e0511061303b565b60005b15613142576101405161016051610180516101a0516101c0516101e05161020051610220516102405161014051610260526102605160065801611c40565b6102c0526102405261022052610200526101e0526101c0526101a0526101805261016052610140526102c05161024052600061024051181561314257600a54600160176101405160e05260c052604060c02060c052602060c02001556101405161016051610180516101a0516101c0516101e0516102005161022051610240516101405161026052610240516102805261028051610260516006580161226e565b6102405261022052610200526101e0526101c0526101a0526101805261016052610140526000505b6101405161016051610180516101a0516101c0516101e051610200516102205161016051610240526101c0516102605261026051610240516006580161226e565b61022052610200526101e0526101c0526101a0526101805261016052610140526000506101a051565b6101a0526101405261016052610180526101805160186101405160e05260c052604060c0206101605160e05260c052604060c02055610180516101c05261016051610140517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560206101c0a360016000526000516101a051565b61018052610140526101605261016051600354808202821582848304141761324d57600080fd5b809050905090506101a05260006101c0526003600160176101405160e05260c052604060c02060c052602060c02001546020811061328a57600080fd5b601660c052602060c0200160c052602060c02001546101e0526101405161016051610180516101a0516101c0516101e05161014051610200526101a05161022052610220516102005160065801611ebc565b6101e0526101c0526101a05261018052610160526101405260005061020060006020818352015b6101c080516101e0516004811061331957600080fd5b601260c052602060c020015481818301101561333457600080fd5b808201905090508152505b8151600101808352811415613303575b50506101c0511515613394576019601660c052602060c0200160c052602060c02080546101a05181818301101561338557600080fd5b8082019050905081555061345e565b61020060006020818352015b61020051602081106133b157600080fd5b601660c052602060c0200160c052602060c02080546101a05161020051602081106133db57600080fd5b6101e051600481106133ec57600080fd5b601060c052602060c0200160c052602060c0200154808202821582848304141761341557600080fd5b809050905090506101c051808061342b57600080fd5b82049050905081818301101561344057600080fd5b808201905090508155505b81516001018083528114156133a0575b50505b61018051565b6101805261014052610160526000610140511861348057600080fd5b610140516101605161018051610140516101a0526101605160035480820282158284830414176134af57600080fd5b809050905090506101c0526101c0516101a05160065801611ebc565b610180526101605261014052600050610160516101a0526000610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a36101805156

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000004c00000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000a456e726561636844414f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e52434800000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): EnreachDAO
Arg [1] : _symbol (string): NRCH
Arg [2] : _decimals (uint256): 9
Arg [3] : _supply (uint256): 10000000
Arg [4] : _transferLocked (bool): True
Arg [5] : _tax_nums (uint256[32]): 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,100,0,0,0,0,0,0
Arg [6] : _tax_denom (uint256): 10000

-----Encoded View---------------
42 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000004c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000500
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 0000000000000000000000000000000000000000000000000000000000989680
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [37] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [38] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [39] : 456e726561636844414f00000000000000000000000000000000000000000000
Arg [40] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [41] : 4e52434800000000000000000000000000000000000000000000000000000000


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

Enreach is a Decentralised Autonomous Organisation (DAO) that envisions to play a pivotal role in the adoption, realisation, development and monetisation of decentralised finance (DeFi).

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.