Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 1,155 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24566565 | 4 days ago | IN | 0 ETH | 0.00000152 | ||||
| Approve | 24545155 | 7 days ago | IN | 0 ETH | 0.00000256 | ||||
| Approve | 24480105 | 17 days ago | IN | 0 ETH | 0.00000275 | ||||
| Approve | 24480082 | 17 days ago | IN | 0 ETH | 0.0000028 | ||||
| Approve | 24434142 | 23 days ago | IN | 0 ETH | 0.00002078 | ||||
| Approve | 24393808 | 29 days ago | IN | 0 ETH | 0.00007012 | ||||
| Approve | 24384519 | 30 days ago | IN | 0 ETH | 0.00002386 | ||||
| Approve | 24380095 | 30 days ago | IN | 0 ETH | 0.00000984 | ||||
| Approve | 24366438 | 32 days ago | IN | 0 ETH | 0.00001051 | ||||
| Approve | 24366428 | 32 days ago | IN | 0 ETH | 0.0000065 | ||||
| Approve | 24366307 | 32 days ago | IN | 0 ETH | 0.00000316 | ||||
| Approve | 24366303 | 32 days ago | IN | 0 ETH | 0.00000675 | ||||
| Approve | 24366282 | 32 days ago | IN | 0 ETH | 0.00000272 | ||||
| Approve | 24364445 | 33 days ago | IN | 0 ETH | 0.00000954 | ||||
| Approve | 24343843 | 36 days ago | IN | 0 ETH | 0.00000217 | ||||
| Approve | 24322156 | 39 days ago | IN | 0 ETH | 0.00000211 | ||||
| Approve | 24314835 | 40 days ago | IN | 0 ETH | 0.00000532 | ||||
| Approve | 24283195 | 44 days ago | IN | 0 ETH | 0.00000995 | ||||
| Approve | 24283177 | 44 days ago | IN | 0 ETH | 0.00000602 | ||||
| Approve | 24283135 | 44 days ago | IN | 0 ETH | 0.00000868 | ||||
| Approve | 24283102 | 44 days ago | IN | 0 ETH | 0.00001068 | ||||
| Approve | 24269724 | 46 days ago | IN | 0 ETH | 0.00002581 | ||||
| Transfer | 24250200 | 49 days ago | IN | 0 ETH | 0.00000212 | ||||
| Approve | 24243170 | 50 days ago | IN | 0 ETH | 0.00000454 | ||||
| Approve | 24234184 | 51 days ago | IN | 0 ETH | 0.00011756 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.4.1
Contract Source Code (Vyper Json-Input format)
# pragma version ~=0.4.1
"""
@title Squid Pro Quo ($SQUILL): Open Stable Index Governance Token
@license GNU Affero General Public License v3.0 only
@author Open Stable Index
@dev Forked from https://github.com/pcaversaccio/snekmate/
-++++-
######
#####+
-+++++- ######
+######- ######
+######+ #####+
+#######- ######
+#######+ #####+
+#############+ +########- ######
+#############+ +########+ #####+
+##############- +######### #####+
+#####- +#########+ #####+
+##########- +#####- +########## #####+
+############+ +#####- +#####+####+ ######
+#############+ +#####- +#####-#####-#####+
+####- +####+ +#####- +##### #####++####+
+####- -##### +############+ +##### -#####+####+
-#######+ +####- -##### +############+ +##### +#########+
+##########- +####- +##### +############+ +##### -#########+
+#### +###+ +####+--+#####+ +#####- +##### +########+
+###+ -###+ +############+ +#####- +##### +########+
+###+ ####- +###########+ +#####- +##### +########
+###+ ###+ +####---- +#####- +##### +#######+
+###+ -###+ +####- +#####- +##### +######+
+###+ +###+ +####- +##############- +##### ######+
+########## +####- +##############- +##### +#####+
-#######- +####- +##############- +##### #####+
"""
# @dev We import and implement the `IERC20` interface,
# which is a built-in interface of the Vyper compiler.
from ethereum.ercs import IERC20
implements: IERC20
# @dev We import and implement the `IERC20Detailed` interface,
# which is a built-in interface of the Vyper compiler.
from ethereum.ercs import IERC20Detailed
implements: IERC20Detailed
# @dev We import and implement the `IERC20Permit`
# interface, which is written using standard Vyper
# syntax.
from .interfaces import IERC20Permit
implements: IERC20Permit
# @dev We import and implement the `IERC5267` interface,
# which is written using standard Vyper syntax.
from .interfaces import IERC5267
implements: IERC5267
# @dev We import and use the `ownable` module.
from .imports import ownable
initializes: ownable
# @dev We import the `ecdsa` module.
# @notice Please note that the `ecdsa` module
# is stateless and therefore does not require
# the `uses` keyword for usage.
from .imports import ecdsa
# @dev We import and initialise the `eip712_domain_separator` module.
from .imports import eip712_domain_separator
initializes: eip712_domain_separator
# @dev We export (i.e. the runtime bytecode exposes these
# functions externally, allowing them to be called using
# the ABI encoding specification) the `external` getter
# function `owner` from the `ownable` module as well as the
# function `eip712Domain` from the `eip712_domain_separator`
# module.
# @notice Please note that you must always also export (if
# required by the contract logic) `public` declared `constant`,
# `immutable`, and state variables, for which Vyper automatically
# generates an `external` getter function for the variable.
exports: (
# @notice This ERC-20 implementation includes the `transfer_ownership`
# and `renounce_ownership` functions, which incorporate
# the additional built-in `is_minter` role logic and are
# therefore not exported from the `ownable` module.
ownable.owner,
eip712_domain_separator.eip712Domain,
)
# @dev The 32-byte type hash of the `permit` function.
_PERMIT_TYPE_HASH: constant(bytes32) = keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
)
# @dev Returns the name of the token.
# @notice If you declare a variable as `public`,
# Vyper automatically generates an `external`
# getter function for the variable. Furthermore,
# to preserve consistency with the interface for
# the optional metadata functions of the ERC-20
# standard, we use lower case letters for the
# `immutable` variables `name`, `symbol`, and
# `decimals`.
name: public(String[30])
# @dev Returns the symbol of the token.
# @notice See comment on lower case letters
# above at `name`.
symbol: public(String[8])
# @dev Returns the decimal places of the token.
# @notice See comment on lower case letters
# above at `name`.
decimals: public(immutable(uint8))
# @dev Returns the amount of tokens owned by an `address`.
balanceOf: public(HashMap[address, uint256])
# @dev Returns the remaining number of tokens that a
# `spender` will be allowed to spend on behalf of
# `owner` through `transferFrom`. This is zero by
# default. This value changes when `approve` or
# `transferFrom` are called.
allowance: public(HashMap[address, HashMap[address, uint256]])
# @dev Returns the amount of tokens in existence.
totalSupply: public(uint256)
# @dev Returns `True` if an `address` has been
# granted the minter role.
is_minter: public(HashMap[address, bool])
# @dev Returns the current on-chain tracked nonce
# of `address`.
nonces: public(HashMap[address, uint256])
# @dev Emitted when the status of a `minter`
# address is changed.
event RoleMinterChanged:
minter: indexed(address)
status: bool
# INITIALIZATION
@deploy
@payable
def __init__(
name_: String[30],
symbol_: String[6],
decimals_: uint8,
name_eip712_: String[50],
version_eip712_: String[20],
):
"""
@dev To omit the opcodes for checking the `msg.value`
in the creation-time EVM bytecode, the constructor
is declared as `payable`.
@notice At initialisation time, the `owner` role will be
assigned to the `msg.sender` since we `uses` the
`ownable` module, which implements the aforementioned
logic at contract creation time.
@param name_ The maximum 25-character user-readable
string name of the token.
@param symbol_ The maximum 5-character user-readable
string symbol of the token.
@param decimals_ The 1-byte decimal places of the token.
@param name_eip712_ The maximum 50-character user-readable
string name of the signing domain, i.e. the name
of the dApp or protocol.
@param version_eip712_ The maximum 20-character current
main version of the signing domain. Signatures
from different versions are not compatible.
"""
self.name = name_
self.symbol = symbol_
decimals = decimals_
self.is_minter[msg.sender] = True
log RoleMinterChanged(minter=msg.sender, status=True)
eip712_domain_separator.__init__(name_eip712_, version_eip712_)
ownable.__init__()
# EXTERNAL FUNCTIONS
@external
def transfer(to: address, amount: uint256) -> bool:
"""
@dev Moves `amount` tokens from the caller's
account to `to`.
@notice Note that `to` cannot be the zero address.
Also, the caller must have a balance of at
least `amount`.
@param to The 20-byte receiver address.
@param amount The 32-byte token amount to be transferred.
@return bool The verification whether the transfer succeeded
or failed. Note that the function reverts instead
of returning `False` on a failure.
"""
self._transfer(msg.sender, to, amount)
return True
@external
def approve(spender: address, amount: uint256) -> bool:
"""
@dev Sets `amount` as the allowance of `spender`
over the caller's tokens.
@notice WARNING: Note that if `amount` is the maximum
`uint256`, the allowance is not updated on
`transferFrom`. This is semantically equivalent
to an infinite approval. Also, `spender` cannot
be the zero address.
IMPORTANT: 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 amount afterwards:
https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729.
@param spender The 20-byte spender address.
@param amount The 32-byte token amount that is
allowed to be spent by the `spender`.
@return bool The verification whether the approval operation
succeeded or failed. Note that the function reverts
instead of returning `False` on a failure.
"""
self._approve(msg.sender, spender, amount)
return True
@external
def transferFrom(owner: address, to: address, amount: uint256) -> bool:
"""
@dev Moves `amount` tokens from `owner`
to `to` using the allowance mechanism.
The `amount` is then deducted from the
caller's allowance.
@notice Note that `owner` and `to` cannot
be the zero address. Also, `owner`
must have a balance of at least `amount`.
Eventually, the caller must have allowance
for `owner`'s tokens of at least `amount`.
WARNING: The function does not update the
allowance if the current allowance is the
maximum `uint256`.
@param owner The 20-byte owner address.
@param to The 20-byte receiver address.
@param amount The 32-byte token amount to be transferred.
@return bool The verification whether the transfer succeeded
or failed. Note that the function reverts instead
of returning `False` on a failure.
"""
self._spend_allowance(owner, msg.sender, amount)
self._transfer(owner, to, amount)
return True
@external
def burn(amount: uint256):
"""
@dev Destroys `amount` tokens from the caller.
@param amount The 32-byte token amount to be destroyed.
"""
self._burn(msg.sender, amount)
@external
def burn_from(owner: address, amount: uint256):
"""
@dev Destroys `amount` tokens from `owner`,
deducting from the caller's allowance.
@notice Note that `owner` cannot be the
zero address. Also, the caller must
have an allowance for `owner`'s tokens
of at least `amount`.
@param owner The 20-byte owner address.
@param amount The 32-byte token amount to be destroyed.
"""
self._spend_allowance(owner, msg.sender, amount)
self._burn(owner, amount)
@external
def mint(owner: address, amount: uint256):
"""
@dev Creates `amount` tokens and assigns them to `owner`.
@notice Only authorised minters can access this function.
Note that `owner` cannot be the zero address.
@param owner The 20-byte owner address.
@param amount The 32-byte token amount to be created.
"""
assert self.is_minter[msg.sender] == True, "!minter"
self.balanceOf[owner] += amount
self.totalSupply += amount
log IERC20.Transfer(sender=empty(address), receiver=owner, value=amount)
@external
def set_minter(minter: address, status: bool):
"""
@dev Adds or removes an address `minter` to/from the
list of allowed minters. Note that only the
`owner` can add or remove `minter` addresses.
Also, the `minter` cannot be the zero address.
Eventually, the `owner` cannot remove himself
from the list of allowed minters.
@param minter The 20-byte minter address.
@param status The Boolean variable that sets the status.
"""
ownable._check_owner()
assert minter != msg.sender, "erc20: minter is owner address"
self.is_minter[minter] = status
# XXX To complete
pass
@external
def permit(
owner: address,
spender: address,
amount: uint256,
deadline: uint256,
v: uint8,
r: bytes32,
s: bytes32,
):
"""
@dev Sets `amount` as the allowance of `spender`
over `owner`'s tokens, given `owner`'s signed
approval.
@notice Note that `spender` cannot be the zero address.
Also, `deadline` must be a block timestamp in
the future. `v`, `r`, and `s` must be a valid
secp256k1 signature from `owner` over the
EIP-712-formatted function arguments. Eventually,
the signature must use `owner`'s current nonce.
@param owner The 20-byte owner address.
@param spender The 20-byte spender address.
@param amount The 32-byte token amount that is
allowed to be spent by the `spender`.
@param deadline The 32-byte block timestamp up
which the `spender` is allowed to spend `amount`.
@param v The secp256k1 1-byte signature parameter `v`.
@param r The secp256k1 32-byte signature parameter `r`.
@param s The secp256k1 32-byte signature parameter `s`.
"""
assert block.timestamp <= deadline, "erc20: expired deadline"
current_nonce: uint256 = self.nonces[owner]
self.nonces[owner] = unsafe_add(current_nonce, 1)
struct_hash: bytes32 = keccak256(
abi_encode(
_PERMIT_TYPE_HASH, owner, spender, amount, current_nonce, deadline
)
)
hash: bytes32 = eip712_domain_separator._hash_typed_data_v4(struct_hash)
signer: address = ecdsa._recover_vrs(
hash, convert(v, uint256), convert(r, uint256), convert(s, uint256)
)
assert signer == owner, "erc20: invalid signature"
self._approve(owner, spender, amount)
@external
@view
def DOMAIN_SEPARATOR() -> bytes32:
"""
@dev Returns the domain separator for the current chain.
@return bytes32 The 32-byte domain separator.
"""
return eip712_domain_separator._domain_separator_v4()
@external
def transfer_ownership(new_owner: address):
"""
@dev Transfers the ownership of the contract
to a new account `new_owner`.
@notice Note that this function can only be
called by the current `owner`. Also,
the `new_owner` cannot be the zero address.
WARNING: The ownership transfer also removes
the previous owner's minter role and assigns
the minter role to `new_owner` accordingly.
@param new_owner The 20-byte address of the new owner.
"""
ownable._check_owner()
assert new_owner != empty(address), "erc20: new owner is the zero address"
self.is_minter[msg.sender] = False
log RoleMinterChanged(minter=msg.sender, status=False)
ownable._transfer_ownership(new_owner)
self.is_minter[new_owner] = True
log RoleMinterChanged(minter=new_owner, status=True)
@external
def renounce_ownership():
"""
@dev Leaves the contract without an owner.
@notice Renouncing ownership will leave the
contract without an owner, thereby
removing any functionality that is
only available to the owner. Note
that the `owner` is also removed from
the list of allowed minters.
WARNING: All other existing `minter`
addresses will still be able to create
new tokens. Consider removing all non-owner
minter addresses first via `set_minter`
before calling `renounce_ownership`.
"""
ownable._check_owner()
self.is_minter[msg.sender] = False
log RoleMinterChanged(minter=msg.sender, status=False)
ownable._transfer_ownership(empty(address))
# CUSTOM ADMIN FUNCTIONS
@external
def update_name(new_name: String[30]):
"""
@notice Set new token name
@dev May not be compatible with all block scanners, best not to use
@param new_name New token name (up to 30 characters)
"""
ownable._check_owner()
self.name = new_name
@external
def update_symbol(new_symbol: String[8]):
"""
@notice Set new token symbol
@dev May not be compatible with all block scanners, best not to use
@param new_symbol New token symbol (up to 8 characters)
"""
ownable._check_owner()
self.symbol = new_symbol
# INTERNAL FUNCTIONS
@internal
def _transfer(owner: address, to: address, amount: uint256):
"""
@dev Moves `amount` tokens from the owner's
account to `to`.
@notice Note that `owner` and `to` cannot be
the zero address. Also, `owner` must
have a balance of at least `amount`.
@param owner The 20-byte owner address.
@param to The 20-byte receiver address.
@param amount The 32-byte token amount to be transferred.
"""
assert owner != empty(address), "erc20: transfer from the zero address"
assert to != empty(address), "erc20: transfer to the zero address"
self._before_token_transfer(owner, to, amount)
owner_balanceOf: uint256 = self.balanceOf[owner]
assert owner_balanceOf >= amount, "erc20: transfer amount exceeds balance"
self.balanceOf[owner] = unsafe_sub(owner_balanceOf, amount)
self.balanceOf[to] = unsafe_add(self.balanceOf[to], amount)
log IERC20.Transfer(sender=owner, receiver=to, value=amount)
self._after_token_transfer(owner, to, amount)
@internal
def _mint(owner: address, amount: uint256):
"""
@dev Creates `amount` tokens and assigns
them to `owner`, increasing the
total supply.
@notice This is an `internal` function without
access restriction. Note that `owner`
cannot be the zero address.
@param owner The 20-byte owner address.
@param amount The 32-byte token amount to be created.
"""
assert owner != empty(address), "erc20: mint to the zero address"
self._before_token_transfer(empty(address), owner, amount)
self.totalSupply += amount
self.balanceOf[owner] = unsafe_add(self.balanceOf[owner], amount)
log IERC20.Transfer(sender=empty(address), receiver=owner, value=amount)
self._after_token_transfer(empty(address), owner, amount)
@internal
def _burn(owner: address, amount: uint256):
"""
@dev Destroys `amount` tokens from `owner`,
reducing the total supply.
@notice Note that `owner` cannot be the
zero address. Also, `owner` must
have at least `amount` tokens.
@param owner The 20-byte owner address.
@param amount The 32-byte token amount to be destroyed.
"""
assert owner != empty(address), "erc20: burn from the zero address"
self._before_token_transfer(owner, empty(address), amount)
account_balance: uint256 = self.balanceOf[owner]
assert account_balance >= amount, "erc20: burn amount exceeds balance"
self.balanceOf[owner] = unsafe_sub(account_balance, amount)
self.totalSupply = unsafe_sub(self.totalSupply, amount)
log IERC20.Transfer(sender=owner, receiver=empty(address), value=amount)
self._after_token_transfer(owner, empty(address), amount)
@internal
def _approve(owner: address, spender: address, amount: uint256):
"""
@dev Sets `amount` as the allowance of `spender`
over the `owner`'s tokens.
@notice Note that `owner` and `spender` cannot
be the zero address.
@param owner The 20-byte owner address.
@param spender The 20-byte spender address.
@param amount The 32-byte token amount that is
allowed to be spent by the `spender`.
"""
assert owner != empty(address), "erc20: approve from the zero address"
assert spender != empty(address), "erc20: approve to the zero address"
self.allowance[owner][spender] = amount
log IERC20.Approval(owner=owner, spender=spender, value=amount)
@internal
def _spend_allowance(owner: address, spender: address, amount: uint256):
"""
@dev Updates `owner`'s allowance for `spender`
based on spent `amount`.
@notice WARNING: Note that it does not update the
allowance `amount` in case of infinite
allowance. Also, it reverts if not enough
allowance is available.
@param owner The 20-byte owner address.
@param spender The 20-byte spender address.
@param amount The 32-byte token amount that is
allowed to be spent by the `spender`.
"""
current_allowance: uint256 = self.allowance[owner][spender]
if current_allowance < max_value(uint256):
# The following line allows the commonly known address
# poisoning attack, where `transferFrom` instructions
# are executed from arbitrary addresses with an `amount`
# of `0`. However, this poisoning attack is not an on-chain
# vulnerability. All assets are safe. It is an off-chain
# log interpretation issue.
assert current_allowance >= amount, "erc20: insufficient allowance"
self._approve(owner, spender, unsafe_sub(current_allowance, amount))
@internal
def _before_token_transfer(owner: address, to: address, amount: uint256):
"""
@dev Hook that is called before any transfer of tokens.
This includes minting and burning.
@notice The calling conditions are:
- when `owner` and `to` are both non-zero,
`amount` of `owner`'s tokens will be
transferred to `to`,
- when `owner` is zero, `amount` tokens will
be minted for `to`,
- when `to` is zero, `amount` of `owner`'s
tokens will be burned,
- `owner` and `to` are never both zero.
@param owner The 20-byte owner address.
@param to The 20-byte receiver address.
@param amount The 32-byte token amount to be transferred.
"""
pass
@internal
def _after_token_transfer(owner: address, to: address, amount: uint256):
"""
@dev Hook that is called after any transfer of tokens.
This includes minting and burning.
@notice The calling conditions are:
- when `owner` and `to` are both non-zero,
`amount` of `owner`'s tokens has been
transferred to `to`,
- when `owner` is zero, `amount` tokens
have been minted for `to`,
- when `to` is zero, `amount` of `owner`'s
tokens have been burned,
- `owner` and `to` are never both zero.
@param owner The 20-byte owner address.
@param to The 20-byte receiver address.
@param amount The 32-byte token amount that has
been transferred.
"""
pass# pragma version ~=0.4.1
"""
@title EIP-2612 Interface Definition
@custom:contract-name IERC20Permit
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice The `permit` function implements approvals via
EIP-712 secp256k1 signatures:
https://eips.ethereum.org/EIPS/eip-2612.
The `permit` function allows users to modify
the allowance mapping using a signed message
(via secp256k1 signatures), instead of through
`msg.sender`. By not relying on `approve`,
the token holder's account does not need to
send a transaction and therefore does not need
to hold ether, enabling important use cases such
as meta-transactions.
On how to use interfaces in Vyper, please visit:
https://vyper.readthedocs.io/en/latest/interfaces.html#interfaces.
"""
@external
def permit(
owner: address,
spender: address,
amount: uint256,
deadline: uint256,
v: uint8,
r: bytes32,
s: bytes32,
):
"""
@dev Sets `amount` as the allowance of `spender`
over `owner`'s tokens, given `owner`'s signed
approval.
@notice Note that `spender` cannot be the zero address.
Also, `deadline` must be a block timestamp in
the future. `v`, `r`, and `s` must be a valid
secp256k1 signature from `owner` over the
EIP-712-formatted function arguments. Eventually,
the signature must use `owner`'s current nonce.
@param owner The 20-byte owner address.
@param spender The 20-byte spender address.
@param amount The 32-byte token amount that is
allowed to be spent by the `spender`.
@param deadline The 32-byte block timestamp up
which the `spender` is allowed to spend `amount`.
@param v The secp256k1 1-byte signature parameter `v`.
@param r The secp256k1 32-byte signature parameter `r`.
@param s The secp256k1 32-byte signature parameter `s`.
"""
...
@external
@view
def nonces(owner: address) -> uint256:
"""
@dev Returns the current on-chain tracked nonce of `owner`.
@param owner The 20-byte owner address.
@return uint256 The 32-byte owner nonce.
"""
...
@external
@view
def DOMAIN_SEPARATOR() -> bytes32:
"""
@dev Returns the domain separator for the current chain.
@return bytes32 The 32-byte domain separator.
"""
...# pragma version ~=0.4.1
"""
@title EIP-5267 Interface Definition
@custom:contract-name IERC5267
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice The ERC-5267 standard complements the EIP-712 standard
by standardising how contracts should publish the fields
and values that describe their domain. This enables
applications to retrieve this description and generate
appropriate domain separators in a general way, and thus
integrate EIP-712 signatures securely and scalably. For
more details, please refer to:
https://eips.ethereum.org/EIPS/eip-5267.
Note that Vyper interfaces that implement functions
with return values that require an upper bound (e.g.
`Bytes`, `DynArray`, or `String`), the upper bound
defined in the interface represents the lower bound
of the implementation:
https://github.com/vyperlang/vyper/pull/3205.
On how to use interfaces in Vyper, please visit:
https://vyper.readthedocs.io/en/latest/interfaces.html#interfaces.
"""
# @dev May be emitted to signal that the domain could
# have changed.
event EIP712DomainChanged:
pass
@external
@view
def eip712Domain() -> (
bytes1,
String[50],
String[20],
uint256,
address,
bytes32,
DynArray[uint256, 32],
):
"""
@dev Returns the fields and values that describe the domain
separator used by this contract for EIP-712 signatures.
@notice The bits in the 1-byte bit map are read from the least
significant to the most significant, and fields are indexed
in the order that is specified by EIP-712, identical to the
order in which they are listed in the function type.
@return bytes1 The 1-byte bit map where bit `i` is set to `1`
if and only if domain field `i` is present (`0 ≤ i ≤ 4`).
@return String The maximum 50-character user-readable string name
of the signing domain, i.e. the name of the dApp or protocol.
@return String The maximum 20-character current main version of
the signing domain. Signatures from different versions are
not compatible.
@return uint256 The 32-byte EIP-155 chain ID.
@return address The 20-byte address of the verifying contract.
@return bytes32 The 32-byte disambiguation salt for the protocol.
@return DynArray The 32-byte array of EIP-712 extensions.
"""
...# pragma version ~=0.4.1
"""
@title Owner-Based Access Control Functions
@custom:contract-name ownable
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions can be used to implement a basic access
control mechanism, where there is an account (an owner)
that can be granted exclusive access to specific functions.
By default, the owner account will be the one that deploys
the contract. This can later be changed with `transfer_ownership`.
An exemplary integration can be found in the ERC-20 implementation here:
https://github.com/pcaversaccio/snekmate/blob/main/src/snekmate/tokens/erc20.vy.
The implementation is inspired by OpenZeppelin's implementation here:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol.
"""
# @dev Returns the address of the current owner.
# @notice If you declare a variable as `public`,
# Vyper automatically generates an `external`
# getter function for the variable.
owner: public(address)
# @dev Emitted when the ownership is transferred
# from `previous_owner` to `new_owner`.
event OwnershipTransferred:
previous_owner: indexed(address)
new_owner: indexed(address)
@deploy
@payable
def __init__():
"""
@dev To omit the opcodes for checking the `msg.value`
in the creation-time EVM bytecode, the constructor
is declared as `payable`.
@notice The `owner` role will be assigned to
the `msg.sender`.
"""
self._transfer_ownership(msg.sender)
@external
def transfer_ownership(new_owner: address):
"""
@dev Transfers the ownership of the contract
to a new account `new_owner`.
@notice Note that this function can only be
called by the current `owner`. Also,
the `new_owner` cannot be the zero address.
@param new_owner The 20-byte address of the new owner.
"""
self._check_owner()
assert new_owner != empty(address), "ownable: new owner is the zero address"
self._transfer_ownership(new_owner)
@external
def renounce_ownership():
"""
@dev Leaves the contract without an owner.
@notice Renouncing ownership will leave the
contract without an owner, thereby
removing any functionality that is
only available to the owner.
"""
self._check_owner()
self._transfer_ownership(empty(address))
@internal
def _check_owner():
"""
@dev Throws if the sender is not the owner.
"""
assert msg.sender == self.owner, "ownable: caller is not the owner"
@internal
def _transfer_ownership(new_owner: address):
"""
@dev Transfers the ownership of the contract
to a new account `new_owner`.
@notice This is an `internal` function without
access restriction.
@param new_owner The 20-byte address of the new owner.
"""
old_owner: address = self.owner
self.owner = new_owner
log OwnershipTransferred(previous_owner=old_owner, new_owner=new_owner)# pragma version ~=0.4.1
"""
@title Elliptic Curve Digital Signature Algorithm (ECDSA) Secp256k1-Based Functions
@custom:contract-name ecdsa
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions can be used to verify that a message was signed by
the holder of the private key of a given address. All cryptographic
calculations are based on the Ethereum-native secp256k1 elliptic curve
(see https://en.bitcoin.it/wiki/Secp256k1). For verification functions
based on the NIST P-256 elliptic curve (also known as secp256r1), see
the {p256} contract. The implementation is inspired by OpenZeppelin's
implementation here:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol.
@custom:security Signatures must not be used as unique identifiers since the
`ecrecover` EVM precompile allows for malleable (non-unique)
signatures (see EIP-2: https://eips.ethereum.org/EIPS/eip-2)
or signatures can be malleablised using EIP-2098:
https://eips.ethereum.org/EIPS/eip-2098.
"""
# @dev The malleability threshold used as part of the ECDSA
# verification function.
_MALLEABILITY_THRESHOLD: constant(uint256) = (
57_896_044_618_658_097_711_785_492_504_343_953_926_418_782_139_537_452_191_302_581_570_759_080_747_168
)
@deploy
@payable
def __init__():
"""
@dev To omit the opcodes for checking the `msg.value`
in the creation-time EVM bytecode, the constructor
is declared as `payable`.
"""
pass
@internal
@pure
def _recover_sig(hash: bytes32, signature: Bytes[65]) -> address:
"""
@dev Recovers the signer address from a message digest `hash`
and the signature `signature`.
@notice WARNING: This function is vulnerable to a kind of
signature malleability due to accepting EIP-2098
compact signatures in addition to the traditional
65-byte signature format. The potentially affected
contracts are those that implement signature reuse
or replay protection by marking the signature itself
as used rather than the signed message or a nonce
included in it. A user may take a signature that has
already been submitted, submit it again in a different
form, and bypass this protection. Also, see OpenZeppelin's
security advisory for more information:
https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-4h98-2769-gh6h.
@param hash The 32-byte message digest that was signed.
@param signature The secp256k1 64/65-byte signature of `hash`.
@return address The recovered 20-byte signer address.
"""
sig_length: uint256 = len(signature)
# 65-byte case: `(r,s,v)` standard signature.
if sig_length == 65:
r: uint256 = extract32(signature, empty(uint256), output_type=uint256)
s: uint256 = extract32(signature, 32, output_type=uint256)
v: uint256 = convert(slice(signature, 64, 1), uint256)
return self._try_recover_vrs(hash, v, r, s)
# 64-byte case: `(r,vs)` signature; see: https://eips.ethereum.org/EIPS/eip-2098.
elif sig_length == 64:
r: uint256 = extract32(signature, empty(uint256), output_type=uint256)
vs: uint256 = extract32(signature, 32, output_type=uint256)
return self._try_recover_r_vs(hash, r, vs)
return empty(address)
@internal
@pure
def _recover_vrs(hash: bytes32, v: uint256, r: uint256, s: uint256) -> address:
"""
@dev Recovers the signer address from a message digest `hash`
and the secp256k1 signature parameters `v`, `r`, and `s`.
@param hash The 32-byte message digest that was signed.
@param v The secp256k1 1-byte signature parameter `v`.
@param r The secp256k1 32-byte signature parameter `r`.
@param s The secp256k1 32-byte signature parameter `s`.
@return address The recovered 20-byte signer address.
"""
return self._try_recover_vrs(hash, v, r, s)
@internal
@pure
def _try_recover_r_vs(hash: bytes32, r: uint256, vs: uint256) -> address:
"""
@dev Recovers the signer address from a message digest `hash`
and the secp256k1 short signature fields `r` and `vs`.
@notice See https://eips.ethereum.org/EIPS/eip-2098 for the
compact signature representation.
@param hash The 32-byte message digest that was signed.
@param r The secp256k1 32-byte signature parameter `r`.
@param vs The secp256k1 32-byte short signature field of `v` and `s`.
@return address The recovered 20-byte signer address.
"""
s: uint256 = vs & convert(max_value(int256), uint256)
# We do not check for an overflow here, as the shift operation
# `vs >> 255` results in `0` or `1`.
v: uint256 = unsafe_add(vs >> 255, 27)
return self._try_recover_vrs(hash, v, r, s)
@internal
@pure
def _try_recover_vrs(
hash: bytes32, v: uint256, r: uint256, s: uint256
) -> address:
"""
@dev Recovers the signer address from a message digest `hash`
and the secp256k1 signature parameters `v`, `r`, and `s`.
@notice All client implementations of the precompile `ecrecover`
check if the value of `v` is `27` or `28`. The references
for the different client implementations can be found here:
https://github.com/ethereum/yellowpaper/pull/860. Thus,
the signature check on the value of `v` is neglected.
@param hash The 32-byte message digest that was signed.
@param v The secp256k1 1-byte signature parameter `v`.
@param r The secp256k1 32-byte signature parameter `r`.
@param s The secp256k1 32-byte signature parameter `s`.
@return address The recovered 20-byte signer address.
"""
assert s <= _MALLEABILITY_THRESHOLD, "ecdsa: invalid signature `s` value"
signer: address = ecrecover(hash, v, r, s)
assert signer != empty(address), "ecdsa: invalid signature"
return signer# pragma version ~=0.4.1
"""
@title Signature Message Hash Utility Functions
@custom:contract-name message_hash_utils
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions can be used to generate message hashes that conform
to the EIP-191 (https://eips.ethereum.org/EIPS/eip-191) as well as
EIP-712 (https://eips.ethereum.org/EIPS/eip-712) specifications. The
implementation is inspired by OpenZeppelin's implementation here:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MessageHashUtils.sol.
"""
@deploy
@payable
def __init__():
"""
@dev To omit the opcodes for checking the `msg.value`
in the creation-time EVM bytecode, the constructor
is declared as `payable`.
"""
pass
@internal
@pure
def _to_eth_signed_message_hash(hash: bytes32) -> bytes32:
"""
@dev Returns an Ethereum signed message from a 32-byte
message digest `hash`.
@notice This function returns a 32-byte hash that
corresponds to the one signed with the JSON-RPC method:
https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign.
This method is part of EIP-191:
https://eips.ethereum.org/EIPS/eip-191.
@param hash The 32-byte message digest.
@return bytes32 The 32-byte Ethereum signed message.
"""
return keccak256(concat(b"\x19Ethereum Signed Message:\n32", hash))
@internal
@view
def _to_data_with_intended_validator_hash_self(data: Bytes[1_024]) -> bytes32:
"""
@dev Returns an Ethereum signed data with this contract
as the intended validator and a maximum 1,024-byte
payload `data`.
@notice This function structures the data according to
the version `0x00` of EIP-191:
https://eips.ethereum.org/EIPS/eip-191#version-0x00.
@param data The maximum 1,024-byte data to be signed.
@return bytes32 The 32-byte Ethereum signed data.
"""
return self._to_data_with_intended_validator_hash(self, data)
@internal
@pure
def _to_data_with_intended_validator_hash(
validator: address, data: Bytes[1_024]
) -> bytes32:
"""
@dev Returns an Ethereum signed data with `validator` as
the intended validator and a maximum 1,024-byte payload
`data`.
@notice This function structures the data according to
the version `0x00` of EIP-191:
https://eips.ethereum.org/EIPS/eip-191#version-0x00.
@param validator The 20-byte intended validator address.
@param data The maximum 1,024-byte data to be signed.
@return bytes32 The 32-byte Ethereum signed data.
"""
return keccak256(concat(x"1900", convert(validator, bytes20), data))
@internal
@pure
def _to_typed_data_hash(
domain_separator: bytes32, struct_hash: bytes32
) -> bytes32:
"""
@dev Returns an Ethereum signed typed data from a 32-byte
`domain_separator` and a 32-byte `struct_hash`.
@notice This function returns a 32-byte hash that
corresponds to the one signed with the JSON-RPC method:
https://eips.ethereum.org/EIPS/eip-712#specification-of-the-eth_signtypeddata-json-rpc.
This method is part of EIP-712:
https://eips.ethereum.org/EIPS/eip-712.
@param domain_separator The 32-byte domain separator that is
used as part of the EIP-712 encoding scheme.
@param struct_hash The 32-byte struct hash that is used as
part of the EIP-712 encoding scheme. See the definition:
https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.
@return bytes32 The 32-byte Ethereum signed typed data.
"""
return keccak256(concat(x"1901", domain_separator, struct_hash))# pragma version ~=0.4.1
"""
@title EIP-712 Domain Separator
@custom:contract-name eip712_domain_separator
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions are part of EIP-712: https://eips.ethereum.org/EIPS/eip-712.
These functions implement the version of encoding known
as "v4" as implemented by the JSON-RPC method:
https://docs.metamask.io/guide/signing-data.html#sign-typed-data-v4.
In addition, this contract also implements EIP-5267:
https://eips.ethereum.org/EIPS/eip-5267.
The implementation is inspired by OpenZeppelin's implementation here:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol.
"""
# @dev We import and implement the `IERC5267` interface,
# which is written using standard Vyper syntax.
from ..interfaces import IERC5267
implements: IERC5267
# @dev We import the `message_hash_utils` module.
# @notice Please note that the `message_hash_utils`
# module is stateless and therefore does not require
# the `uses` keyword for usage.
from ..imports import message_hash_utils
# @dev The 32-byte type hash for the EIP-712 domain separator.
_TYPE_HASH: constant(bytes32) = keccak256(
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
)
# @dev Caches the domain separator as an `immutable`
# value, but also stores the corresponding chain ID
# to invalidate the cached domain separator if the
# chain ID changes.
_CACHED_DOMAIN_SEPARATOR: immutable(bytes32)
_CACHED_CHAIN_ID: immutable(uint256)
# @dev Caches `self` to `immutable` storage to avoid
# potential issues if a vanilla contract is used in
# a `delegatecall` context.
_CACHED_SELF: immutable(address)
# @dev `immutable` variables to store the (hashed)
# name and (hashed) version during contract creation.
_NAME: immutable(String[50])
_HASHED_NAME: immutable(bytes32)
_VERSION: immutable(String[20])
_HASHED_VERSION: immutable(bytes32)
@deploy
@payable
def __init__(name_: String[50], version_: String[20]):
"""
@dev Initialises the domain separator and the parameter caches.
To omit the opcodes for checking the `msg.value` in the
creation-time EVM bytecode, the constructor is declared as
`payable`.
@notice The definition of the domain separator can be found here:
https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.
Since the Vyper design requires strings of fixed size,
we arbitrarily set the maximum length for `name` to 50
characters and `version` to 20 characters.
@param name_ The maximum 50-character user-readable string name
of the signing domain, i.e. the name of the dApp or protocol.
@param version_ The maximum 20-character current main version of
the signing domain. Signatures from different versions are
not compatible.
"""
_NAME = name_
_VERSION = version_
_HASHED_NAME = keccak256(name_)
_HASHED_VERSION = keccak256(version_)
_CACHED_DOMAIN_SEPARATOR = self._build_domain_separator()
_CACHED_CHAIN_ID = chain.id
_CACHED_SELF = self
@external
@view
def eip712Domain() -> (
bytes1,
String[50],
String[20],
uint256,
address,
bytes32,
DynArray[uint256, 32],
):
"""
@dev Returns the fields and values that describe the domain
separator used by this contract for EIP-712 signatures.
@notice The bits in the 1-byte bit map are read from the least
significant to the most significant, and fields are indexed
in the order that is specified by EIP-712, identical to the
order in which they are listed in the function type.
@return bytes1 The 1-byte bit map where bit `i` is set to `1`
if and only if domain field `i` is present (`0 ≤ i ≤ 4`).
@return String The maximum 50-character user-readable string name
of the signing domain, i.e. the name of the dApp or protocol.
@return String The maximum 20-character current main version of
the signing domain. Signatures from different versions are
not compatible.
@return uint256 The 32-byte EIP-155 chain ID.
@return address The 20-byte address of the verifying contract.
@return bytes32 The 32-byte disambiguation salt for the protocol.
@return DynArray The 32-byte array of EIP-712 extensions.
"""
# Note that `0x0f` equals `01111`.
return (
0x0f,
_NAME,
_VERSION,
chain.id,
self,
empty(bytes32),
empty(DynArray[uint256, 32]),
)
@internal
@view
def _domain_separator_v4() -> bytes32:
"""
@dev Returns the domain separator for the current chain.
@return bytes32 The 32-byte domain separator.
"""
if self == _CACHED_SELF and chain.id == _CACHED_CHAIN_ID:
return _CACHED_DOMAIN_SEPARATOR
return self._build_domain_separator()
@internal
@view
def _build_domain_separator() -> bytes32:
"""
@dev Builds the domain separator for the current chain.
@return bytes32 The 32-byte domain separator.
"""
return keccak256(
abi_encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, chain.id, self)
)
@internal
@view
def _hash_typed_data_v4(struct_hash: bytes32) -> bytes32:
"""
@dev Returns the hash of the fully encoded EIP-712
message for this domain.
@notice The definition of the hashed struct can be found here:
https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.
@param struct_hash The 32-byte hashed struct.
@return bytes32 The 32-byte fully encoded EIP712
message hash for this domain.
"""
return message_hash_utils._to_typed_data_hash(
self._domain_separator_v4(), struct_hash
){
"outputSelection": {
"contracts/Token.vy": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
},
"search_paths": [
"."
]
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"name":"minter","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"RoleMinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previous_owner","type":"address"},{"indexed":true,"name":"new_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"name":"","type":"bytes1"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"bytes32"},{"name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"owner","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"owner","type":"address"},{"name":"amount","type":"uint256"}],"name":"burn_from","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"owner","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"minter","type":"address"},{"name":"status","type":"bool"}],"name":"set_minter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"new_owner","type":"address"}],"name":"transfer_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounce_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"new_name","type":"string"}],"name":"update_name","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"new_symbol","type":"string"}],"name":"update_symbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"is_minter","outputs":[{"name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"nonces","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"name_","type":"string"},{"name":"symbol_","type":"string"},{"name":"decimals_","type":"uint8"},{"name":"name_eip712_","type":"string"},{"name":"version_eip712_","type":"string"}],"outputs":[],"stateMutability":"payable","type":"constructor"}]Contract Creation Code
6117895150602061193b5f395f5160208161193b015f395f51601e81116102b55750602060208261193b015f395f5101808261193b016101c0395050602061195b5f395f5160208161193b015f395f51600681116102b55750602060208261193b015f395f5101808261193b01610200395050602061197b5f395f518060081c6102b55761024052602061199b5f395f5160208161193b015f395f51603281116102b55750602060208261193b015f395f5101808261193b0161026039505060206119bb5f395f5160208161193b015f395f51601481116102b55750602060208261193b015f395f5101808261193b016102c03950506101c0516001556101e0516002556102005160035561022051600455610240516117895260016008336020525f5260405f2055337fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef46001610300526020610300a260206102605101806102606101005e5060206102c05101806102c06101605e5061017e6101e7565b6101866102a7565b6116496102b9610000396117a9610000f35b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f606052611709516080526117695160a0524660c0523060e05260a06040526040805160208201209050815250565b602061010051015f81601f0160051c600381116102b557801561022657905b8060051b61010001518160051b6060016116490152600101818118610206575b5050506101605161172952610180516117495261010051610120206117095261016051610180206117695261025c6101a0610198565b6101a0516116495246611669523061168952565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b336040526102b3610270565b565b5f80fd5f3560e01c60026017820660011b61161b01601e395f51565b638da5cb5b8118610b5b5734611617575f5460405260206040f35b6384b0196e8118610b5b57346116175760e07f0f000000000000000000000000000000000000000000000000000000000000006040528060605280604001602060206116a95f395f5101806116a98339508051806020830101601f825f03163682375050601f19601f825160200101169050810190508060805280604001602060206117295f395f5101806117298339508051806020830101601f825f03163682375050601f19601f825160200101169050810190504660a0523060c0525f60e0528061010052806040015f5f82525f5f5f6020811161161757801561012b57905b5f8160051b602087010152600101818118610115575b5050810160200190509050810190506040f35b63a9059cbb8118610b5b57604436103417611617576004358060a01c61161757610220523360a0526102205160c05260243560e05261017b610b63565b6001610240526020610240f35b63095ea7b38118610b5b57604436103417611617576004358060a01c611617576101a052336040526101a0516060526024356080526101c5610e04565b60016101c05260206101c0f35b6323b872dd8118610b5b57606436103417611617576004358060a01c611617576102e0526024358060a01c61161757610300526102e0516101a052336101c0526044356101e052610221610fa3565b60406102e060a05e60443560e052610237610b63565b6001610320526020610320f35b6342966c68811861026d57602436103417611617573360a05260043560c05261026b61109a565b005b633644e5158118610b5b573461161757602061028a6101206113cc565b610120f35b630f536f8481186102e657604436103417611617576004358060a01c611617576102e0526102e0516101a052336101c0526024356101e0526102cf610fa3565b6102e05160a05260243560c0526102e461109a565b005b637ecebe008114600336111615610b5b57602436103417611617576004358060a01c6116175760405260096040516020525f5260405f205460605260206060f35b6340c10f198118610b5b57604436103417611617576004358060a01c6116175760405260016008336020525f5260405f205418156103d55760208060c05260076060527f216d696e7465720000000000000000000000000000000000000000000000000060805260608160c00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60056040516020525f5260405f208054602435808201828110611617579050905081555060075460243580820182811061161757905090506007556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3005b637c3bec3c8118610b5b57604436103417611617576004358060a01c61161757610100526024358060011c611617576101205261047d611285565b336101005118610504576020806101a052601e610140527f65726332303a206d696e746572206973206f776e65722061646472657373000061016052610140816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610120516008610100516020525f5260405f2055005b63d505accf8118610b5b5760e436103417611617576004358060a01c61161757610260526024358060a01c61161757610280526084358060081c611617576102a0526064354211156105e3576020806103205260176102c0527f65726332303a206578706972656420646561646c696e650000000000000000006102e0526102c0816103200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610300528060040161031cfd5b6009610260516020525f5260405f20546102c05260016102c051016009610260516020525f5260405f20557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96103205260406102606103405e604435610380526102c0516103a0526064356103c05260c0610300526103008051602082012090506102e0526102e0516101605261067b610320611415565b6103205161030052610300516101c0526102a0516101e05260a4356102005260c435610220526106ac6103406115c4565b61034051610320526102605161032051181561073f576020806103a0526018610340527f65726332303a20696e76616c6964207369676e6174757265000000000000000061036052610340816103a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610380528060040161039cfd5b604061026060405e604435608052610755610e04565b005b63f0350c048118610b5b57602436103417611617576004358060a01c6116175761010052610783611285565b6101005161082d576020806101a0526024610120527f65726332303a206e6577206f776e657220697320746865207a65726f20616464610140527f726573730000000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b5f6008336020525f5260405f2055337fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef45f610120526020610120a2610100516040526108776115e0565b60016008610100516020525f5260405f2055610100517fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef46001610120526020610120a2005b63b15e13ee811861091d5734611617576108d4611285565b5f6008336020525f5260405f2055337fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef45f610100526020610100a25f60405261091b6115e0565b005b63dd62ed3e8118610b5b57604436103417611617576004358060a01c611617576040526024358060a01c6116175760605260066040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63d6023d6e81186109c057602436103417611617576004356004018035601e81116116175750602081350180826101003750506109b0611285565b6101005160015561012051600255005b6392c94f658118610b5b57602436103417611617576004358060a01c6116175760405260086040516020525f5260405f205460605260206060f35b63f66dbe898118610a465760243610341761161757600435600401803560088111611617575060208135018082610100375050610a36611285565b6101005160035561012051600455005b6370a082318118610b5b57602436103417611617576004358060a01c6116175760405260056040516020525f5260405f205460605260206060f35b6306fdde038118610b5b57346116175760208060405280604001600154815260025460208201528051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6395d89b418118610b5b57346116175760208060405280604001600354815260045460208201528051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63313ce5678118610b5b573461161757602061178960403960206040f35b6318160ddd8118610b5b57346116175760075460405260206040f35b5f5ffd5b565b565b60a051610c0c57602080610180526025610100527f65726332303a207472616e736665722066726f6d20746865207a65726f206164610120527f647265737300000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b60c051610cb557602080610180526023610100527f65726332303a207472616e7366657220746f20746865207a65726f2061646472610120527f657373000000000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b606060a060405e610cc4610b5f565b600560a0516020525f5260405f20546101005260e051610100511015610d86576020806101a0526026610120527f65726332303a207472616e7366657220616d6f756e7420657863656564732062610140527f616c616e6365000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b60e0516101005103600560a0516020525f5260405f205560e051600560c0516020525f5260405f205401600560c0516020525f5260405f205560c05160a0517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60e051610120526020610120a3606060a060405e610e02610b61565b565b604051610ea95760208061012052602460a0527f65726332303a20617070726f76652066726f6d20746865207a65726f2061646460c0527f726573730000000000000000000000000000000000000000000000000000000060e05260a0816101200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b606051610f4e5760208061012052602260a0527f65726332303a20617070726f766520746f20746865207a65726f20616464726560c0527f737300000000000000000000000000000000000000000000000000000000000060e05260a0816101200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b60805160066040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560805160a052602060a0a3565b60066101a0516020525f5260405f20806101c0516020525f5260405f20905054610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102005114611098576101e05161020051101561107c5760208061028052601d610220527f65726332303a20696e73756666696369656e7420616c6c6f77616e636500000061024052610220816102800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610260528060040161027cfd5b60406101a060405e6101e0516102005103608052611098610e04565b565b60a0516111415760208061016052602160e0527f65726332303a206275726e2066726f6d20746865207a65726f20616464726573610100527f73000000000000000000000000000000000000000000000000000000000000006101205260e0816101600160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610140528060040161015cfd5b60a0516040525f60605260c051608052611159610b5f565b600560a0516020525f5260405f205460e05260c05160e051101561121957602080610180526022610100527f65726332303a206275726e20616d6f756e7420657863656564732062616c616e610120527f636500000000000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b60c05160e05103600560a0516020525f5260405f205560c051600754036007555f60a0517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60c051610100526020610100a360a0516040525f60605260c051608052611283610b61565b565b5f543318156113045760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f60026080527f190100000000000000000000000000000000000000000000000000000000000060a05260808051602082018360e001815181525050808301925050506040518160e001526020810190506060518160e001526020810190508060c05260c09050805160208201209050815250565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6060526020611709608039602061176960a0394660c0523060e05260a06040526040805160208201209050815250565b60206116895f395f5130186113ec5760206116695f395f514618156113ee565b5f5b15611400576020611649823950611413565b61140b61010061137b565b610100518152505b565b6114206101806113cc565b610180516101c052610160516101e05260406101c060405e6114436101a0611306565b6101a051815250565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a060a05111156115155760208061014052602260c0527f65636473613a20696e76616c6964207369676e6174757265206073602076616c60e0527f75650000000000000000000000000000000000000000000000000000000000006101005260c0816101400160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b5f610160526080604060e05e6020610160608060e060015afa15611617576101605160c05260c0516115bc5760208061014052601860e0527f65636473613a20696e76616c6964207369676e617475726500000000000000006101005260e0816101400160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b60c051815250565b60806101c060405e6115d761024061144c565b61024051815250565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b5f80fd0b5b04420b3f0a8109fb07570b5b028f0b2108bc051a0ad1001801d20b5b0b5b032709750244013e003301880b5b8558209a64207609907d2ce7383ab56894021f964d86fa3aafc157a231eb26aae340c219164981182e190160a165767970657283000401003900000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000d53717569642050726f2051756f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006535155494c4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164f70656e20537461626c65636f696e7320496e6465780000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x5f3560e01c60026017820660011b61161b01601e395f51565b638da5cb5b8118610b5b5734611617575f5460405260206040f35b6384b0196e8118610b5b57346116175760e07f0f000000000000000000000000000000000000000000000000000000000000006040528060605280604001602060206116a95f395f5101806116a98339508051806020830101601f825f03163682375050601f19601f825160200101169050810190508060805280604001602060206117295f395f5101806117298339508051806020830101601f825f03163682375050601f19601f825160200101169050810190504660a0523060c0525f60e0528061010052806040015f5f82525f5f5f6020811161161757801561012b57905b5f8160051b602087010152600101818118610115575b5050810160200190509050810190506040f35b63a9059cbb8118610b5b57604436103417611617576004358060a01c61161757610220523360a0526102205160c05260243560e05261017b610b63565b6001610240526020610240f35b63095ea7b38118610b5b57604436103417611617576004358060a01c611617576101a052336040526101a0516060526024356080526101c5610e04565b60016101c05260206101c0f35b6323b872dd8118610b5b57606436103417611617576004358060a01c611617576102e0526024358060a01c61161757610300526102e0516101a052336101c0526044356101e052610221610fa3565b60406102e060a05e60443560e052610237610b63565b6001610320526020610320f35b6342966c68811861026d57602436103417611617573360a05260043560c05261026b61109a565b005b633644e5158118610b5b573461161757602061028a6101206113cc565b610120f35b630f536f8481186102e657604436103417611617576004358060a01c611617576102e0526102e0516101a052336101c0526024356101e0526102cf610fa3565b6102e05160a05260243560c0526102e461109a565b005b637ecebe008114600336111615610b5b57602436103417611617576004358060a01c6116175760405260096040516020525f5260405f205460605260206060f35b6340c10f198118610b5b57604436103417611617576004358060a01c6116175760405260016008336020525f5260405f205418156103d55760208060c05260076060527f216d696e7465720000000000000000000000000000000000000000000000000060805260608160c00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b60056040516020525f5260405f208054602435808201828110611617579050905081555060075460243580820182811061161757905090506007556040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60243560605260206060a3005b637c3bec3c8118610b5b57604436103417611617576004358060a01c61161757610100526024358060011c611617576101205261047d611285565b336101005118610504576020806101a052601e610140527f65726332303a206d696e746572206973206f776e65722061646472657373000061016052610140816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610120516008610100516020525f5260405f2055005b63d505accf8118610b5b5760e436103417611617576004358060a01c61161757610260526024358060a01c61161757610280526084358060081c611617576102a0526064354211156105e3576020806103205260176102c0527f65726332303a206578706972656420646561646c696e650000000000000000006102e0526102c0816103200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610300528060040161031cfd5b6009610260516020525f5260405f20546102c05260016102c051016009610260516020525f5260405f20557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96103205260406102606103405e604435610380526102c0516103a0526064356103c05260c0610300526103008051602082012090506102e0526102e0516101605261067b610320611415565b6103205161030052610300516101c0526102a0516101e05260a4356102005260c435610220526106ac6103406115c4565b61034051610320526102605161032051181561073f576020806103a0526018610340527f65726332303a20696e76616c6964207369676e6174757265000000000000000061036052610340816103a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610380528060040161039cfd5b604061026060405e604435608052610755610e04565b005b63f0350c048118610b5b57602436103417611617576004358060a01c6116175761010052610783611285565b6101005161082d576020806101a0526024610120527f65726332303a206e6577206f776e657220697320746865207a65726f20616464610140527f726573730000000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b5f6008336020525f5260405f2055337fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef45f610120526020610120a2610100516040526108776115e0565b60016008610100516020525f5260405f2055610100517fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef46001610120526020610120a2005b63b15e13ee811861091d5734611617576108d4611285565b5f6008336020525f5260405f2055337fbb6e183664bd7425a9e444072cb0f1c7f7c4d5486a36d7d24d0b0735687c2ef45f610100526020610100a25f60405261091b6115e0565b005b63dd62ed3e8118610b5b57604436103417611617576004358060a01c611617576040526024358060a01c6116175760605260066040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63d6023d6e81186109c057602436103417611617576004356004018035601e81116116175750602081350180826101003750506109b0611285565b6101005160015561012051600255005b6392c94f658118610b5b57602436103417611617576004358060a01c6116175760405260086040516020525f5260405f205460605260206060f35b63f66dbe898118610a465760243610341761161757600435600401803560088111611617575060208135018082610100375050610a36611285565b6101005160035561012051600455005b6370a082318118610b5b57602436103417611617576004358060a01c6116175760405260056040516020525f5260405f205460605260206060f35b6306fdde038118610b5b57346116175760208060405280604001600154815260025460208201528051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b6395d89b418118610b5b57346116175760208060405280604001600354815260045460208201528051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63313ce5678118610b5b573461161757602061178960403960206040f35b6318160ddd8118610b5b57346116175760075460405260206040f35b5f5ffd5b565b565b60a051610c0c57602080610180526025610100527f65726332303a207472616e736665722066726f6d20746865207a65726f206164610120527f647265737300000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b60c051610cb557602080610180526023610100527f65726332303a207472616e7366657220746f20746865207a65726f2061646472610120527f657373000000000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b606060a060405e610cc4610b5f565b600560a0516020525f5260405f20546101005260e051610100511015610d86576020806101a0526026610120527f65726332303a207472616e7366657220616d6f756e7420657863656564732062610140527f616c616e6365000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b60e0516101005103600560a0516020525f5260405f205560e051600560c0516020525f5260405f205401600560c0516020525f5260405f205560c05160a0517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60e051610120526020610120a3606060a060405e610e02610b61565b565b604051610ea95760208061012052602460a0527f65726332303a20617070726f76652066726f6d20746865207a65726f2061646460c0527f726573730000000000000000000000000000000000000000000000000000000060e05260a0816101200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b606051610f4e5760208061012052602260a0527f65726332303a20617070726f766520746f20746865207a65726f20616464726560c0527f737300000000000000000000000000000000000000000000000000000000000060e05260a0816101200160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b60805160066040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560805160a052602060a0a3565b60066101a0516020525f5260405f20806101c0516020525f5260405f20905054610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6102005114611098576101e05161020051101561107c5760208061028052601d610220527f65726332303a20696e73756666696369656e7420616c6c6f77616e636500000061024052610220816102800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610260528060040161027cfd5b60406101a060405e6101e0516102005103608052611098610e04565b565b60a0516111415760208061016052602160e0527f65726332303a206275726e2066726f6d20746865207a65726f20616464726573610100527f73000000000000000000000000000000000000000000000000000000000000006101205260e0816101600160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610140528060040161015cfd5b60a0516040525f60605260c051608052611159610b5f565b600560a0516020525f5260405f205460e05260c05160e051101561121957602080610180526022610100527f65726332303a206275726e20616d6f756e7420657863656564732062616c616e610120527f636500000000000000000000000000000000000000000000000000000000000061014052610100816101800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b60c05160e05103600560a0516020525f5260405f205560c051600754036007555f60a0517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60c051610100526020610100a360a0516040525f60605260c051608052611283610b61565b565b5f543318156113045760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f60026080527f190100000000000000000000000000000000000000000000000000000000000060a05260808051602082018360e001815181525050808301925050506040518160e001526020810190506060518160e001526020810190508060c05260c09050805160208201209050815250565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6060526020611709608039602061176960a0394660c0523060e05260a06040526040805160208201209050815250565b60206116895f395f5130186113ec5760206116695f395f514618156113ee565b5f5b15611400576020611649823950611413565b61140b61010061137b565b610100518152505b565b6114206101806113cc565b610180516101c052610160516101e05260406101c060405e6114436101a0611306565b6101a051815250565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a060a05111156115155760208061014052602260c0527f65636473613a20696e76616c6964207369676e6174757265206073602076616c60e0527f75650000000000000000000000000000000000000000000000000000000000006101005260c0816101400160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b5f610160526080604060e05e6020610160608060e060015afa15611617576101605160c05260c0516115bc5760208061014052601860e0527f65636473613a20696e76616c6964207369676e617475726500000000000000006101005260e0816101400160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610120528060040161013cfd5b60c051815250565b60806101c060405e6115d761024061144c565b61024051815250565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b5f80fd0b5b04420b3f0a8109fb07570b5b028f0b2108bc051a0ad1001801d20b5b0b5b032709750244013e003301880b5b67e928a0b9961cc39a9f1f835ea5a0c7e14d9b803460ae4cbda8c5ae7686aae800000000000000000000000000000000000000000000000000000000000000010000000000000000000000007ebab7190d3d574ce82d29f2fa1422f18e29969c00000000000000000000000000000000000000000000000000000000000000164f70656e20537461626c65636f696e7320496e6465780000000000000000000000000000000000000000000000000000000000000000000000000000000000006b8e35559bfe104e3b342968690e9d471081de1293cedd04746949d705c5ce7600000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc60000000000000000000000000000000000000000000000000000000000000012
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000d53717569642050726f2051756f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006535155494c4c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164f70656e20537461626c65636f696e7320496e6465780000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Squid Pro Quo
Arg [1] : symbol_ (string): SQUILL
Arg [2] : decimals_ (uint8): 18
Arg [3] : name_eip712_ (string): Open Stablecoins Index
Arg [4] : version_eip712_ (string): 1
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [6] : 53717569642050726f2051756f00000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [8] : 535155494c4c0000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000016
Arg [10] : 4f70656e20537461626c65636f696e7320496e64657800000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [12] : 3100000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
0:23175:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1054:22:3;-1:-1:-1;1054:22:3;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;4556:4:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4603:8:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;4621:4:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3242:1452:5;-1:-1:-1;3242:1452:5;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;7636:11:0;-1:-1:-1;-1:-1:-1;7636:11:0;8203:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;8215:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;8219:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;8188:38:0;-1:-1:-1;-1:-1:-1;8188:38:0:i;8188:38:0:-;8238:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;7623:619:0;-1:-1:-1;-1:-1:-1;7623:619:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;8267:16:0;-1:-1:-1;-1:-1:-1;8267:16:0;9509:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;9521:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;9530:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;9495:42:0;-1:-1:-1;-1:-1:-1;9495:42:0:i;9495:42:0:-;9549:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;8255:1298:0;-1:-1:-1;-1:-1:-1;8255:1298:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;9583:14:0;-1:-1:-1;-1:-1:-1;9583:14:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;9599:11:0;-1:-1:-1;-1:-1:-1;9599:11:0;10570:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10577:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10627:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10548:48:0;-1:-1:-1;-1:-1:-1;10548:48:0:i;10548:48:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10627:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10601:33:0;-1:-1:-1;-1:-1:-1;10601:33:0:i;10601:33:0:-;10646:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;9566:1084:0;-1:-1:-1;-1:-1:-1;9566:1084:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;10832:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;10844:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10663:188:0;-1:-1:-1;-1:-1:-1;10821:30:0;-1:-1:-1;-1:-1:-1;10821:30:0:i;10663:188:0:-;10663:188:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;14383:219:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14556:46:0;-1:-1:-1;-1:-1:-1;14556:46:0;-1:-1:-1;-1:-1:-1;14556:46:0:i;14556:46:0:-;14556:46:0;-1:-1:-1;-1:-1:-1;14383:219:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;10878:14:0;-1:-1:-1;-1:-1:-1;10878:14:0;11331:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11338:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11380:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11309:48:0;-1:-1:-1;-1:-1:-1;11309:48:0:i;11309:48:0:-;11373:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11380:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;10864:523:0;-1:-1:-1;-1:-1:-1;11362:25:0;-1:-1:-1;-1:-1:-1;11362:25:0:i;10864:523:0:-;10864:523:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5974:41:0;-1:-1:-1;5974:41:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;11409:14:0;-1:-1:-1;11409:14:0;11784:4:0;-1:-1:-1;11754:14:0;-1:-1:-1;11769:10:0;11754:26:0;-1:-1:-1;11754:26:0;11754:26:0;11754:26:0;11754:26:0;-1:-1:-1;11754:26:0;11754:26:0;11754:34:0;11754:34:0;11754:34:0;11747:52:0;-1:-1:-1;-1:-1:-1;11747:52:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11790:9:0;-1:-1:-1;11790:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11790:9:0;11790:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11747:52:0:-;11804:14:0;-1:-1:-1;11819:5:0;-1:-1:-1;-1:-1:-1;11804:21:0;-1:-1:-1;11804:21:0;11804:21:0;11804:21:0;11804:21:0;-1:-1:-1;11804:21:0;11804:21:0;11804:31:0;-1:-1:-1;11936:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11804:31:0;-1:-1:-1;11804:31:0;11840:16:0;-1:-1:-1;-1:-1:-1;11936:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11840:16:0;-1:-1:-1;11840:26:0;11923:5:0;-1:-1:-1;11871:72:0;11871:72:0;11871:72:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11936:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;11871:72:0;-1:-1:-1;11871:72:0;11400:543:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;11970:15:0;-1:-1:-1;-1:-1:-1;11970:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;11987:12:0;-1:-1:-1;-1:-1:-1;11987:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;12448:22:0;-1:-1:-1;-1:-1:-1;12448:22:0:i;12448:22:0:-;12492:10:0;12482:6:0;-1:-1:-1;-1:-1:-1;12482:20:0;12482:20:0;12475:61:0;-1:-1:-1;-1:-1:-1;12475:61:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;12504:32:0;-1:-1:-1;-1:-1:-1;12504:32:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;12504:32:0;12504:32:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;12475:61:0:-;12566:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;12541:14:0;-1:-1:-1;12556:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;12541:22:0;-1:-1:-1;12541:22:0;12541:22:0;12541:22:0;12541:22:0;-1:-1:-1;12541:22:0;12541:22:0;-1:-1:-1;11955:649:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;12633:14:0;-1:-1:-1;-1:-1:-1;12633:14:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;12653:16:0;-1:-1:-1;-1:-1:-1;12653:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;12719:8:0;-1:-1:-1;-1:-1:-1;12719:8:0;14040:8:0;-1:-1:-1;13753:27:0;13753:15:0;-1:-1:-1;13746:61:0;13746:61:0;-1:-1:-1;-1:-1:-1;13746:61:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;13782:25:0;-1:-1:-1;-1:-1:-1;13782:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;13782:25:0;13782:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;13746:61:0:-;13838:11:0;-1:-1:-1;13850:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;13838:18:0;-1:-1:-1;13838:18:0;13838:18:0;13838:18:0;13838:18:0;-1:-1:-1;13838:18:0;13838:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;13813:43:0;13908:1:0;-1:-1:-1;13893:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;13882:28:0;13861:11:0;-1:-1:-1;13873:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;13861:18:0;-1:-1:-1;13861:18:0;13861:18:0;13861:18:0;13861:18:0;-1:-1:-1;13861:18:0;13861:18:0;-1:-1:-1;13982:17:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14357:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14025:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14040:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;13958:100:0;-1:-1:-1;-1:-1:-1;13958:100:0;13958:100:0;-1:-1:-1;-1:-1:-1;13939:125:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;13939:125:0;-1:-1:-1;13939:125:0;13939:125:0;13939:125:0;13916:148:0;-1:-1:-1;-1:-1:-1;13916:148:0;14129:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14085:56:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;14085:56:0;-1:-1:-1;-1:-1:-1;14085:56:0;-1:-1:-1;-1:-1:-1;14085:56:0:i;14085:56:0:-;14085:56:0;-1:-1:-1;-1:-1:-1;14069:72:0;14069:72:0;-1:-1:-1;-1:-1:-1;14069:72:0;14193:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14199:19:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14228:1:0;-1:-1:-1;14220:19:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14249:1:0;-1:-1:-1;14241:19:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14165:101:0;-1:-1:-1;-1:-1:-1;14165:101:0;-1:-1:-1;-1:-1:-1;14165:101:0:i;14165:101:0:-;14165:101:0;-1:-1:-1;-1:-1:-1;14147:119:0;14147:119:0;-1:-1:-1;-1:-1:-1;14147:119:0;14288:5:0;-1:-1:-1;-1:-1:-1;14278:15:0;14278:6:0;-1:-1:-1;-1:-1:-1;14278:15:0;14278:15:0;14278:15:0;14271:50:0;-1:-1:-1;-1:-1:-1;14271:50:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14295:26:0;-1:-1:-1;-1:-1:-1;14295:26:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14295:26:0;14295:26:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14271:50:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;14357:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;12617:1747:0;-1:-1:-1;-1:-1:-1;14327:37:0;-1:-1:-1;-1:-1:-1;14327:37:0:i;12617:1747:0:-;12617:1747:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;14638:18:0;-1:-1:-1;-1:-1:-1;14638:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;15150:22:0;-1:-1:-1;-1:-1:-1;15150:22:0:i;15150:22:0:-;15184:9:0;-1:-1:-1;-1:-1:-1;15184:27:0;15177:74:0;-1:-1:-1;-1:-1:-1;15177:74:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15213:38:0;-1:-1:-1;-1:-1:-1;15213:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15213:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15213:38:0;15213:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15177:74:0:-;15286:5:0;15257:14:0;-1:-1:-1;15272:10:0;15257:26:0;-1:-1:-1;15257:26:0;15257:26:0;15257:26:0;15257:26:0;-1:-1:-1;15257:26:0;15257:26:0;-1:-1:-1;15325:10:0;15296:54:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15344:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15296:54:0;-1:-1:-1;-1:-1:-1;15296:54:0;15384:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15356:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;15356:38:0;-1:-1:-1;-1:-1:-1;15356:38:0:i;15356:38:0:-;15427:4:0;-1:-1:-1;15399:14:0;-1:-1:-1;15414:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;15399:25:0;-1:-1:-1;15399:25:0;15399:25:0;15399:25:0;15399:25:0;-1:-1:-1;15399:25:0;15399:25:0;-1:-1:-1;15465:9:0;-1:-1:-1;-1:-1:-1;15436:52:0;15436:52:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15483:4:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;15436:52:0;-1:-1:-1;-1:-1:-1;15436:52:0;14615:873:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;16131:22:0;-1:-1:-1;-1:-1:-1;16131:22:0:i;16131:22:0:-;16187:5:0;16158:14:0;-1:-1:-1;16173:10:0;16158:26:0;-1:-1:-1;16158:26:0;16158:26:0;16158:26:0;16158:26:0;-1:-1:-1;16158:26:0;16158:26:0;-1:-1:-1;16226:10:0;16197:54:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16245:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16197:54:0;-1:-1:-1;-1:-1:-1;16197:54:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16256:43:0;15501:798:0;-1:-1:-1;-1:-1:-1;16256:43:0;-1:-1:-1;-1:-1:-1;16256:43:0:i;15501:798:0:-;15501:798:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5644:62:0;-1:-1:-1;5644:62:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16353:20:0;16353:20:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;16353:20:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16353:20:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16353:20:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16556:22:0;-1:-1:-1;-1:-1:-1;16556:22:0:i;16556:22:0:-;16595:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16583:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16337:266:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5864:41:0;-1:-1:-1;5864:41:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16634:21:0;16634:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;16634:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16634:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16634:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16844:22:0;-1:-1:-1;-1:-1:-1;16844:22:0:i;16844:22:0:-;16885:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;16871:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;16616:279:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5367:44:0;-1:-1:-1;5367:44:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5002:24:0;-1:-1:-1;5002:24:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5132:25:0;-1:-1:-1;5132:25:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5271:34:0;-1:-1:-1;5271:34:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5759:28:0;-1:-1:-1;5759:28:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;17388:5:0;-1:-1:-1;17388:23:0;17381:71:0;-1:-1:-1;-1:-1:-1;17381:71:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17413:39:0;-1:-1:-1;-1:-1:-1;17413:39:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17413:39:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17413:39:0;17413:39:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17381:71:0:-;17464:2:0;-1:-1:-1;17464:20:0;17457:66:0;-1:-1:-1;-1:-1:-1;17457:66:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17486:37:0;-1:-1:-1;-1:-1:-1;17486:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17486:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17486:37:0;17486:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17457:66:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17529:46:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17529:46:0:o;17529:46:0:-;17608:14:0;-1:-1:-1;17623:5:0;-1:-1:-1;-1:-1:-1;17608:21:0;-1:-1:-1;17608:21:0;17608:21:0;17608:21:0;17608:21:0;-1:-1:-1;17608:21:0;17608:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17581:48:0;17660:6:0;-1:-1:-1;-1:-1:-1;17641:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17634:74:0;17634:74:0;-1:-1:-1;-1:-1:-1;17634:74:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17668:40:0;-1:-1:-1;-1:-1:-1;17668:40:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17668:40:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17668:40:0;17668:40:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17634:74:0:-;17765:6:0;-1:-1:-1;-1:-1:-1;17748:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;17737:35:0;17713:14:0;-1:-1:-1;17728:5:0;-1:-1:-1;-1:-1:-1;17713:21:0;-1:-1:-1;17713:21:0;17713:21:0;17713:21:0;17713:21:0;-1:-1:-1;17713:21:0;17713:21:0;-1:-1:-1;17829:6:0;-1:-1:-1;-1:-1:-1;17809:14:0;-1:-1:-1;17824:2:0;-1:-1:-1;-1:-1:-1;17809:18:0;-1:-1:-1;17809:18:0;17809:18:0;17809:18:0;17809:18:0;-1:-1:-1;17809:18:0;17809:18:0;-1:-1:-1;17798:38:0;17777:14:0;-1:-1:-1;17792:2:0;-1:-1:-1;-1:-1:-1;17777:18:0;-1:-1:-1;17777:18:0;17777:18:0;17777:18:0;17777:18:0;-1:-1:-1;17777:18:0;17777:18:0;-1:-1:-1;17884:2:0;-1:-1:-1;17841:60:0;17868:5:0;-1:-1:-1;17841:60:0;17841:60:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17894:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17841:60:0;-1:-1:-1;-1:-1:-1;17841:60:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17907:45:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;17907:45:0:o;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;20143:5:0;-1:-1:-1;20143:23:0;20136:70:0;-1:-1:-1;-1:-1:-1;20136:70:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20168:38:0;-1:-1:-1;20168:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20168:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20168:38:0;20168:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20136:70:0:-;20218:7:0;-1:-1:-1;20218:25:0;20211:70:0;-1:-1:-1;-1:-1:-1;20211:70:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20245:36:0;-1:-1:-1;20245:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20245:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20245:36:0;20245:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20211:70:0:-;20320:6:0;-1:-1:-1;-1:-1:-1;20287:14:0;-1:-1:-1;20302:5:0;-1:-1:-1;-1:-1:-1;20287:21:0;-1:-1:-1;20287:21:0;20287:21:0;20287:21:0;20287:21:0;-1:-1:-1;20287:21:0;20287:21:0;-1:-1:-1;20309:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20287:30:0;20287:30:0;-1:-1:-1;20372:7:0;-1:-1:-1;20331:63:0;20357:5:0;-1:-1:-1;20331:63:0;20331:63:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20387:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20331:63:0;-1:-1:-1;20331:63:0;-1:-1:-1:-;-1:-1:-1:-;21001:14:0;-1:-1:-1;21016:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;21001:21:0;-1:-1:-1;21001:21:0;21001:21:0;21001:21:0;21001:21:0;-1:-1:-1;21001:21:0;21001:21:0;-1:-1:-1;21023:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21001:30:0;21001:30:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;20972:59:0;21059:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21039:17:0;-1:-1:-1;-1:-1:-1;21039:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21036:554:0:-;21474:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;21453:17:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21446:67:0;21446:67:0;-1:-1:-1;-1:-1:-1;21446:67:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21482:31:0;-1:-1:-1;-1:-1:-1;21482:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21482:31:0;21482:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21446:67:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21582:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;21563:17:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;21552:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;21522:68:0;-1:-1:-1;-1:-1:-1;21522:68:0:i;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;19156:5:0;-1:-1:-1;19156:23:0;19149:67:0;-1:-1:-1;-1:-1:-1;19149:67:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19181:35:0;-1:-1:-1;19181:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19181:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19181:35:0;19181:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19149:67:0:-;19250:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19273:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19222:58:0:o;19222:58:0:-;19313:14:0;-1:-1:-1;19328:5:0;-1:-1:-1;-1:-1:-1;19313:21:0;-1:-1:-1;19313:21:0;19313:21:0;19313:21:0;19313:21:0;-1:-1:-1;19313:21:0;19313:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;19286:48:0;19365:6:0;-1:-1:-1;-1:-1:-1;19346:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;19339:70:0;19339:70:0;-1:-1:-1;-1:-1:-1;19339:70:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19373:36:0;-1:-1:-1;-1:-1:-1;19373:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19373:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19373:36:0;19373:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19339:70:0:-;19466:6:0;-1:-1:-1;-1:-1:-1;19449:15:0;-1:-1:-1;-1:-1:-1;19438:35:0;19414:14:0;-1:-1:-1;19429:5:0;-1:-1:-1;-1:-1:-1;19414:21:0;-1:-1:-1;19414:21:0;19414:21:0;19414:21:0;19414:21:0;-1:-1:-1;19414:21:0;19414:21:0;-1:-1:-1;19526:6:0;-1:-1:-1;-1:-1:-1;19508:16:0;-1:-1:-1;-1:-1:-1;19497:36:0;19478:16:0;-1:-1:-1;-1:-1:-1;19538:72:0;19565:5:0;-1:-1:-1;19538:72:0;19538:72:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19603:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19538:72:0;-1:-1:-1;-1:-1:-1;19538:72:0;19643:5:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19666:6:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;19616:57:0:o;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;2580:10:3;2566:24:3;2566:10:3;2566:24:3;2566:24:3;-1:-1:-1;-1:-1:-1;-1:-1:-1;2559:67:3:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:3;-1:-1:-1;2592:34:3;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:3;2592:34:3;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;3753:46:6;-1:-1:-1;-1:-1:-1;3761:6:6;-1:-1:-1;3761:6:6;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3761:6:6;3761:6:6;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3769:16:6;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3787:11:6;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3753:46:6;3753:46:6;3743:57:6;-1:-1:-1;-1:-1:-1;-1:-1:-1;3743:57:6;-1:-1:-1;3743:57:6;3743:57:6;3743:57:6;-1:-1:-1;3736:64:6;3736:64:6;-1:-1:-1:-;-1:-1:-1:-;5251:10:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5294:8:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;5304:4:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5240:69:5;-1:-1:-1;5240:69:5;5240:69:5;-1:-1:-1;5221:94:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;5221:94:5;-1:-1:-1;5221:94:5;5221:94:5;5221:94:5;-1:-1:-1;5214:101:5;5214:101:5;-1:-1:-1:-;-1:-1:-1:-;4886:20:5;4886:20:5;4886:20:5;-1:-1:-1;-1:-1:-1;4886:20:5;4886:20:5;4886:20:5;4886:20:5;4886:4:5;4886:20:5;4886:53:5;-1:-1:-1;-1:-1:-1;4886:53:5:-;4911:28:5;4911:28:5;4911:28:5;-1:-1:-1;-1:-1:-1;4911:28:5;4911:28:5;4911:28:5;4911:28:5;4911:8:5;4911:28:5;4911:28:5;4886:53:5;-1:-1:-1;-1:-1:-1;4886:53:5:-;4886:53:5:-;4886:53:5;4886:53:5:-;4883:97:5;4883:97:5;-1:-1:-1;-1:-1:-1;4883:97:5:-;-1:-1:-1;4949:31:5;4949:31:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;4949:31:5;4949:31:5;4949:31:5;-1:-1:-1;-1:-1:-1;4949:31:5:o;4883:97:5:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;4993:30:5;-1:-1:-1;-1:-1:-1;4993:30:5;-1:-1:-1;-1:-1:-1;4993:30:5:i;4993:30:5:-;4993:30:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4986:37:5;4986:37:5;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;5845:27:5;-1:-1:-1;-1:-1:-1;5845:27:5;-1:-1:-1;-1:-1:-1;5845:27:5:i;5845:27:5:-;5845:27:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5874:11:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5797:94:5;-1:-1:-1;-1:-1:-1;5797:94:5;-1:-1:-1;-1:-1:-1;5797:94:5:i;5797:94:5:-;5797:94:5;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5790:101:5;5790:101:5;-1:-1:-1:-;-1:-1:-1:-;5913:23:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5908:1:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;5901:73:4;5901:73:4;-1:-1:-1;-1:-1:-1;5901:73:4:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5938:36:4;-1:-1:-1;5938:36:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5938:36:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5938:36:4;5938:36:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5901:73:4:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5998:24:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5998:24:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5998:24:4;5998:24:4;-1:-1:-1;-1:-1:-1;5998:24:4:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;5998:24:4;5980:42:4;-1:-1:-1;5980:42:4;6034:6:4;-1:-1:-1;6034:24:4;6027:59:4;-1:-1:-1;-1:-1:-1;6027:59:4:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6060:26:4;-1:-1:-1;6060:26:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6060:26:4;6060:26:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6027:59:4:-;6099:6:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;6092:13:4;6092:13:4;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4104:36:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;4104:36:4;-1:-1:-1;-1:-1:-1;4104:36:4;-1:-1:-1;-1:-1:-1;4104:36:4:i;4104:36:4:-;4104:36:4;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4097:43:4;4097:43:4;-1:-1:-1:-;-1:-1:-1:-;2955:10:3;-1:-1:-1;-1:-1:-1;-1:-1:-1;2934:31:3;2983:9:3;-1:-1:-1;-1:-1:-1;2970:10:3;-1:-1:-1;3058:9:3;-1:-1:-1;2997:71:3;3037:9:3;-1:-1:-1;2997:71:3;2997:71:3;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2997:71:3;2997:71:3;-1:-1:-1;2997:71:3;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1
Loading...
Loading
Loading...
Loading
OVERVIEW
SQUILL Token is the newly launched native token by Leviathan, designed to fuel the ecosystem’s growth and governance. With strong backing and a clear roadmap, SQUILL aims to integrate utility, staking rewards, and community-driven governance into its framework.Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.