Source Code
Overview
ETH Balance
0.244035 ETH
Eth Value
$508.53 (@ $2,083.84/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 69 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 18419040 | 870 days ago | IN | 0 ETH | 0.0004211 | ||||
| Set Approval For... | 14242973 | 1481 days ago | IN | 0 ETH | 0.00125782 | ||||
| Set Approval For... | 13815368 | 1547 days ago | IN | 0 ETH | 0.00259334 | ||||
| Mint | 13762011 | 1555 days ago | IN | 0 ETH | 0.00308905 | ||||
| Release | 13736394 | 1559 days ago | IN | 0 ETH | 0.00916775 | ||||
| Mint | 13736391 | 1559 days ago | IN | 0 ETH | 0.02119816 | ||||
| Release | 13726493 | 1561 days ago | IN | 0 ETH | 0.00467851 | ||||
| Release | 13684131 | 1567 days ago | IN | 0 ETH | 0.00869554 | ||||
| Release | 13678385 | 1568 days ago | IN | 0 ETH | 0.01013073 | ||||
| Release | 13673614 | 1569 days ago | IN | 0 ETH | 0.00926631 | ||||
| Mint | 13657113 | 1572 days ago | IN | 0 ETH | 0.00809826 | ||||
| Mint | 13657111 | 1572 days ago | IN | 0 ETH | 0.00766597 | ||||
| Mint | 13654596 | 1572 days ago | IN | 0 ETH | 0.00480519 | ||||
| Whitelist User B... | 13654401 | 1572 days ago | IN | 0 ETH | 0.00340092 | ||||
| Mint | 13654267 | 1572 days ago | IN | 0 ETH | 0.0034127 | ||||
| Mint | 13654250 | 1572 days ago | IN | 0 ETH | 0.00352477 | ||||
| Mint | 13654228 | 1572 days ago | IN | 0 ETH | 0.00366431 | ||||
| Mint | 13654148 | 1572 days ago | IN | 0.07 ETH | 0.00684996 | ||||
| Mint | 13654125 | 1572 days ago | IN | 0.14 ETH | 0.01088877 | ||||
| Mint | 13653916 | 1572 days ago | IN | 0.07 ETH | 0.00688685 | ||||
| Set Approval For... | 13653910 | 1572 days ago | IN | 0 ETH | 0.00532305 | ||||
| Transfer | 13653869 | 1572 days ago | IN | 0.012 ETH | 0.00326188 | ||||
| Mint | 13653815 | 1572 days ago | IN | 0.07 ETH | 0.00715476 | ||||
| Whitelist User B... | 13653814 | 1572 days ago | IN | 0 ETH | 0.00471669 | ||||
| Whitelist User B... | 13653804 | 1572 days ago | IN | 0 ETH | 0.00419732 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
YubbaWorld
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-11-08
*/
// Sources flattened with hardhat v2.6.8 https://hardhat.org
// File @openzeppelin/contracts/utils/Context.sol@v4.3.2
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File @openzeppelin/contracts/access/Ownable.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Contract module which provides 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 {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File @openzeppelin/contracts/utils/introspection/IERC165.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File @openzeppelin/contracts/token/ERC1155/IERC1155.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*
* _Available since v3.1._
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the amount of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
external
view
returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes calldata data
) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata amounts,
bytes calldata data
) external;
}
// File @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev _Available since v3.1._
*/
interface IERC1155Receiver is IERC165 {
/**
@dev Handles the receipt of a single ERC1155 token type. This function is
called at the end of a `safeTransferFrom` after the balance has been updated.
To accept the transfer, this must return
`bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
(i.e. 0xf23a6e61, or its own function selector).
@param operator The address which initiated the transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param id The ID of the token being transferred
@param value The amount of tokens being transferred
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
*/
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external returns (bytes4);
/**
@dev Handles the receipt of a multiple ERC1155 token types. This function
is called at the end of a `safeBatchTransferFrom` after the balances have
been updated. To accept the transfer(s), this must return
`bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
(i.e. 0xbc197c81, or its own function selector).
@param operator The address which initiated the batch transfer (i.e. msg.sender)
@param from The address which previously owned the token
@param ids An array containing ids of each token being transferred (order and length must match values array)
@param values An array containing amounts of each token being transferred (order and length must match ids array)
@param data Additional data with no specified format
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
*/
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external returns (bytes4);
}
// File @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Interface of the optional ERC1155MetadataExtension interface, as defined
* in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
*
* _Available since v3.1._
*/
interface IERC1155MetadataURI is IERC1155 {
/**
* @dev Returns the URI for token type `id`.
*
* If the `\{id\}` substring is present in the URI, it must be replaced by
* clients with the actual token type ID.
*/
function uri(uint256 id) external view returns (string memory);
}
// File @openzeppelin/contracts/utils/Address.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File @openzeppelin/contracts/utils/introspection/ERC165.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// File @openzeppelin/contracts/token/ERC1155/ERC1155.sol@v4.3.2
pragma solidity ^0.8.0;
/**
* @dev Implementation of the basic standard multi-token.
* See https://eips.ethereum.org/EIPS/eip-1155
* Originally based on code by Enjin: https://github.com/enjin/erc-1155
*
* _Available since v3.1._
*/
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
using Address for address;
// Mapping from token ID to account balances
mapping(uint256 => mapping(address => uint256)) private _balances;
// Mapping from account to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
string private _uri;
/**
* @dev See {_setURI}.
*/
constructor(string memory uri_) {
_setURI(uri_);
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC1155).interfaceId ||
interfaceId == type(IERC1155MetadataURI).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC1155MetadataURI-uri}.
*
* This implementation returns the same URI for *all* token types. It relies
* on the token type ID substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* Clients calling this function must replace the `\{id\}` substring with the
* actual token type ID.
*/
function uri(uint256) public view virtual override returns (string memory) {
return _uri;
}
/**
* @dev See {IERC1155-balanceOf}.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
require(account != address(0), "ERC1155: balance query for the zero address");
return _balances[id][account];
}
/**
* @dev See {IERC1155-balanceOfBatch}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
public
view
virtual
override
returns (uint256[] memory)
{
require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");
uint256[] memory batchBalances = new uint256[](accounts.length);
for (uint256 i = 0; i < accounts.length; ++i) {
batchBalances[i] = balanceOf(accounts[i], ids[i]);
}
return batchBalances;
}
/**
* @dev See {IERC1155-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
require(_msgSender() != operator, "ERC1155: setting approval status for self");
_operatorApprovals[_msgSender()][operator] = approved;
emit ApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC1155-isApprovedForAll}.
*/
function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
return _operatorApprovals[account][operator];
}
/**
* @dev See {IERC1155-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: caller is not owner nor approved"
);
_safeTransferFrom(from, to, id, amount, data);
}
/**
* @dev See {IERC1155-safeBatchTransferFrom}.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public virtual override {
require(
from == _msgSender() || isApprovedForAll(from, _msgSender()),
"ERC1155: transfer caller is not owner nor approved"
);
_safeBatchTransferFrom(from, to, ids, amounts, data);
}
/**
* @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `from` must have a balance of tokens of type `id` of at least `amount`.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _safeTransferFrom(
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
emit TransferSingle(operator, from, to, id, amount);
_doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
*
* Emits a {TransferBatch} event.
*
* Requirements:
*
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
require(to != address(0), "ERC1155: transfer to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, from, to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; ++i) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 fromBalance = _balances[id][from];
require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
unchecked {
_balances[id][from] = fromBalance - amount;
}
_balances[id][to] += amount;
}
emit TransferBatch(operator, from, to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
}
/**
* @dev Sets a new URI for all token types, by relying on the token type ID
* substitution mechanism
* https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
*
* By this mechanism, any occurrence of the `\{id\}` substring in either the
* URI or any of the amounts in the JSON file at said URI will be replaced by
* clients with the token type ID.
*
* For example, the `https://token-cdn-domain/\{id\}.json` URI would be
* interpreted by clients as
* `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
* for token type ID 0x4cce0.
*
* See {uri}.
*
* Because these URIs cannot be meaningfully represented by the {URI} event,
* this function emits no events.
*/
function _setURI(string memory newuri) internal virtual {
_uri = newuri;
}
/**
* @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function _mint(
address account,
uint256 id,
uint256 amount,
bytes memory data
) internal virtual {
require(account != address(0), "ERC1155: mint to the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);
_balances[id][account] += amount;
emit TransferSingle(operator, address(0), account, id, amount);
_doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function _mintBatch(
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {
require(to != address(0), "ERC1155: mint to the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, address(0), to, ids, amounts, data);
for (uint256 i = 0; i < ids.length; i++) {
_balances[ids[i]][to] += amounts[i];
}
emit TransferBatch(operator, address(0), to, ids, amounts);
_doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
}
/**
* @dev Destroys `amount` tokens of token type `id` from `account`
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens of token type `id`.
*/
function _burn(
address account,
uint256 id,
uint256 amount
) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][account] = accountBalance - amount;
}
emit TransferSingle(operator, account, address(0), id, amount);
}
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
*
* Requirements:
*
* - `ids` and `amounts` must have the same length.
*/
function _burnBatch(
address account,
uint256[] memory ids,
uint256[] memory amounts
) internal virtual {
require(account != address(0), "ERC1155: burn from the zero address");
require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
address operator = _msgSender();
_beforeTokenTransfer(operator, account, address(0), ids, amounts, "");
for (uint256 i = 0; i < ids.length; i++) {
uint256 id = ids[i];
uint256 amount = amounts[i];
uint256 accountBalance = _balances[id][account];
require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
unchecked {
_balances[id][account] = accountBalance - amount;
}
}
emit TransferBatch(operator, account, address(0), ids, amounts);
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning, as well as batched variants.
*
* The same hook is called on both single and batched variants. For single
* transfers, the length of the `id` and `amount` arrays will be 1.
*
* Calling conditions (for each `id` and `amount` pair):
*
* - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* of token type `id` will be transferred to `to`.
* - When `from` is zero, `amount` tokens of token type `id` will be minted
* for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
* will be burned.
* - `from` and `to` are never both zero.
* - `ids` and `amounts` have the same, non-zero length.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal virtual {}
function _doSafeTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256 id,
uint256 amount,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
if (response != IERC1155Receiver.onERC1155Received.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _doSafeBatchTransferAcceptanceCheck(
address operator,
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) private {
if (to.isContract()) {
try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
bytes4 response
) {
if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
revert("ERC1155: ERC1155Receiver rejected tokens");
}
} catch Error(string memory reason) {
revert(reason);
} catch {
revert("ERC1155: transfer to non ERC1155Receiver implementer");
}
}
}
function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;
}
}
// File contracts/PaymentSplitter.sol
/*****************************************************************************************
ÔûêÔûêÔòùÔûæÔûæÔûæÔûêÔûêÔòùÔûêÔûêÔòùÔûæÔûæÔûæÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûæÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔÇâÔÇâÔûæÔûêÔûêÔòùÔûæÔûæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔòùÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæ
ÔòÜÔûêÔûêÔòùÔûæÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔÇâÔÇâÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòùÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòù
ÔûæÔòÜÔûêÔûêÔûêÔûêÔòöÔòØÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔûêÔòæÔÇâÔÇâÔûæÔòÜÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔòùÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæ
ÔûæÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòæÔÇâÔÇâÔûæÔûæÔûêÔûêÔûêÔûêÔòöÔòÉÔûêÔûêÔûêÔûêÔòæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæ
ÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔòÜÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔÇâÔÇâÔûæÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔòÜÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØ
ÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòØÔûæÔûæÔòÜÔòÉÔòØÔÇâÔÇâÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòØÔûæÔûæÔòÜÔòÉÔòØÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæ
*********************Development done by Yubbabian Tech Wizard****************************
******************************************************************************************/
pragma solidity ^0.8.0;
/********************Begin of Payment Splitter *********************************/
/**
* @dev this section contains the methods used
* to split payment between all collaborators of this project
*/
contract PaymentSplitter is Ownable{
event PayeeAdded(address account, uint256 shares);
event PaymentReleased(address to, uint256 amount);
event PaymentReceived(address from, uint256 amount);
uint256 private _totalShares;
uint256 private _totalReleased;
mapping(address => uint256) private _shares;
mapping(address => uint256) private _released;
address[] private _payees;
bool private initialized = false;
/**
* @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully
* reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the
* reliability of the events, and not the actual splitting of Ether.
*
* To learn more about this see the Solidity documentation for
* https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback
* functions].
*/
receive() external payable virtual {
emit PaymentReceived(msg.sender, msg.value);
}
/**
* @dev Getter for the total shares held by payees.
*/
function totalShares() public view returns (uint256) {
return _totalShares;
}
/**
* @dev Getter for the total amount of Ether already released.
*/
function totalReleased() public view returns (uint256) {
return _totalReleased;
}
/**
* @dev Getter for the amount of shares held by an account.
*/
function shares(address account) public view returns (uint256) {
return _shares[account];
}
/**
* @dev Getter for the amount of Ether already released to a payee.
*/
function released(address account) public view returns (uint256) {
return _released[account];
}
/**
* @dev Getter for the address of the payee number `index`.
*/
function payee(uint256 index) public view returns (address) {
return _payees[index];
}
/**
* @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the
* total shares and their previous withdrawals.
*/
function release(address payable account) public virtual {
require(_shares[account] > 0, "PaymentSplitter: account has no shares");
require(msg.sender == account,"Not authorized");
uint256 totalReceived = address(this).balance + _totalReleased;
uint256 payment = (totalReceived * _shares[account]) /
_totalShares -
_released[account];
require(payment != 0, "Account is not due payment");
_released[account] = _released[account] + payment;
_totalReleased = _totalReleased + payment;
Address.sendValue(account, payment);
// payable(account).send(payment);
emit PaymentReleased(account, payment);
}
/**
* @dev Add a new payee to the contract.
* @param account The address of the payee to add.
* @param shares_ The number of shares owned by the payee.
*/
function _addPayee(address account, uint256 shares_) internal {
require(
account != address(0),
"Account is the zero address"
);
require(shares_ > 0, "PaymentSplitter: shares are 0");
require(
_shares[account] == 0,
"Account already has shares"
);
_payees.push(account);
_shares[account] = shares_;
_totalShares = _totalShares + shares_;
emit PayeeAdded(account, shares_);
}
/**
* @dev Return all payees
*/
function getPayees() public view returns (address[] memory) {
return _payees;
}
/**
* @dev Set up all holders shares
* @param payees wallets of holders.
* @param shares_ shares of each holder.
*/
function initializePaymentSplitter(
address[] memory payees,
uint256[] memory shares_
) public onlyOwner {
require(!initialized, "Payment Split Already Initialized!");
require(
payees.length == shares_.length,
"Payees and shares length mismatch"
);
require(payees.length > 0, "PaymentSplitter: no payees");
for (uint256 i = 0; i < payees.length; i++) {
_addPayee(payees[i], shares_[i]);
}
initialized = true;
}
}
/********************End of Payment Splitter *********************************/
// File contracts/YubbaWorld.sol
/*****************************************************************************************
ÔûêÔûêÔòùÔûæÔûæÔûæÔûêÔûêÔòùÔûêÔûêÔòùÔûæÔûæÔûæÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûæÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔÇâÔÇâÔûæÔûêÔûêÔòùÔûæÔûæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæÔûêÔûêÔòùÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûæ
ÔòÜÔûêÔûêÔòùÔûæÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔÇâÔÇâÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòùÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòù
ÔûæÔòÜÔûêÔûêÔûêÔûêÔòöÔòØÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔûêÔòæÔÇâÔÇâÔûæÔòÜÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔòùÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæ
ÔûæÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòæÔÇâÔÇâÔûæÔûæÔûêÔûêÔûêÔûêÔòöÔòÉÔûêÔûêÔûêÔûêÔòæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔòöÔòÉÔòÉÔûêÔûêÔòùÔûêÔûêÔòæÔûæÔûæÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæ
ÔûæÔûæÔûæÔûêÔûêÔòæÔûæÔûæÔûæÔòÜÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔûêÔûêÔûêÔûêÔòªÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔÇâÔÇâÔûæÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔòÜÔûêÔûêÔòöÔòØÔûæÔòÜÔûêÔûêÔûêÔûêÔûêÔòöÔòØÔûêÔûêÔòæÔûæÔûæÔûêÔûêÔòæÔûêÔûêÔûêÔûêÔûêÔûêÔûêÔòùÔûêÔûêÔûêÔûêÔûêÔûêÔòöÔòØ
ÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòØÔûæÔûæÔòÜÔòÉÔòØÔÇâÔÇâÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔòÜÔòÉÔòØÔûæÔûæÔûæÔòÜÔòÉÔòÉÔòÉÔòÉÔòØÔûæÔòÜÔòÉÔòØÔûæÔûæÔòÜÔòÉÔòØÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔòÜÔòÉÔòÉÔòÉÔòÉÔòÉÔòØÔûæ
*********************Development done by Hiich/Yubbabian Tech Wizard**********************
******************************************************************************************/
pragma solidity ^0.8.0;
/**
* @dev contract module which defines YubbaWorld NFT Collection
* and all the interactions it uses
*/
contract YubbaWorld is ERC1155, Ownable, PaymentSplitter {
//@dev Attributes for NFT configuration
uint256 internal tokenId;
uint256 public cost = 0.05 ether;
uint256 public maxSupply = 10000;
uint256 public maxMintAmount = 5;
mapping(address => uint256) public whitelist;
bool public paused;
bool public consumables;
uint256 public constant healthPotion = 99999;
uint256 public constant GOLD = 99998;
// @dev inner attributes of the contract
/**
* @dev Create an instance of YubbaWorld contract
*/
constructor(
string memory _baseURI
) ERC1155(_baseURI) {
tokenId = 0;
}
/**
* @dev Mint edition to a wallet
* @param _to wallet receiving the edition(s).
* @param _mintAmount number of editions to mint.
*/
function mint(address _to, uint256 _mintAmount, uint256 _tokenId) public payable {
require(!paused, "Sales are paused");
require(_mintAmount <= maxMintAmount, "Max amount exceeded");
require(
tokenId + _mintAmount <= maxSupply,
"Not enough mintable editions !"
);
if(whitelist[_to] < _mintAmount)
require(
msg.value >= cost * _mintAmount,
"Insufficient transaction amount."
);
else
whitelist[_to] -= _mintAmount;
if(_tokenId > maxSupply){
require(consumables == true, "consumables not mintable yet");
_mint(_to, _tokenId, _mintAmount, "");
}
else
for (uint256 i = 0; i < _mintAmount; i++) {
tokenId++;
_mint(_to, tokenId, 1, "");
}
}
// /**
// * @dev Mint edition to a wallet
// * @param _to wallet receiving the edition(s).
// * @param _mintAmount number of editions to mint.
// */
// function mintConsumables(
// address _to,
// uint256 _mintAmount,
// uint256 _id
// ) public payable {
// require(!consumables, "Sales are paused");
// require(_id > tokenId);
// require(
// msg.value >= cost * _mintAmount,
// "Insufficient transaction amount."
// );
// _mint(_to, _id, _mintAmount, "");
// }
/**
* @dev change cost of NFT
* @param _newCost new cost of each edition
*/
function setCost(uint256 _newCost) public onlyOwner {
cost = _newCost;
}
/**
* @dev restrict max mintable amount of edition at a time
* @param _newmaxMintAmount new max mintable amount
*/
function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner {
maxMintAmount = _newmaxMintAmount;
}
/**
* @dev restrict max mintable amount of edition at a time
* @param _nexMaxSupply new max supply
*/
function setmaxSupply(uint256 _nexMaxSupply) public onlyOwner {
maxSupply = _nexMaxSupply;
}
/**
* @dev set uri
* @param _newURI new URI
*/
function setURI(string memory _newURI) public onlyOwner {
_setURI(_newURI);
}
/**
* @dev Disable minting process
*/
function pause() public onlyOwner {
paused = !paused;
}
/**
* @dev Disable minting process
*/
function pauseConsumables() public onlyOwner {
consumables = !consumables;
}
/**
* @dev Add user to white list
* @param _user Users wallet to whitelist
*/
function whitelistUserBatch(
address[] memory _user,
uint256[] memory _amount
) public onlyOwner {
require(_user.length == _amount.length);
for (uint256 i = 0; i < _user.length; i++)
whitelist[_user[i]] = _amount[i];
}
/**
* @dev Destroys `amount` tokens of token type `id` from `from`
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `from` must have at least `amount` tokens of token type `id`.
*/
function burn(
uint256 id,
uint256 amount)
public {
_burn(msg.sender, id, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"GOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"consumables","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPayees","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"healthPotion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"name":"initializePaymentSplitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseConsumables","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nexMaxSupply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"whitelistUserBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526000600960006101000a81548160ff02191690831515021790555066b1a2bc2ec50000600b55612710600c556005600d553480156200004257600080fd5b50604051620057e2380380620057e28339818101604052810190620000689190620002c2565b806200007a81620000aa60201b60201c565b506200009b6200008f620000c660201b60201c565b620000ce60201b60201c565b6000600a819055505062000497565b8060029080519060200190620000c292919062000194565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001a290620003a8565b90600052602060002090601f016020900481019282620001c6576000855562000212565b82601f10620001e157805160ff191683800117855562000212565b8280016001018555821562000212579182015b8281111562000211578251825591602001919060010190620001f4565b5b50905062000221919062000225565b5090565b5b808211156200024057600081600090555060010162000226565b5090565b60006200025b62000255846200033c565b62000313565b9050828152602081018484840111156200027a576200027962000477565b5b6200028784828562000372565b509392505050565b600082601f830112620002a757620002a662000472565b5b8151620002b984826020860162000244565b91505092915050565b600060208284031215620002db57620002da62000481565b5b600082015167ffffffffffffffff811115620002fc57620002fb6200047c565b5b6200030a848285016200028f565b91505092915050565b60006200031f62000332565b90506200032d8282620003de565b919050565b6000604051905090565b600067ffffffffffffffff8211156200035a576200035962000443565b5b620003658262000486565b9050602081019050919050565b60005b838110156200039257808201518184015260208101905062000375565b83811115620003a2576000848401525b50505050565b60006002820490506001821680620003c157607f821691505b60208210811415620003d857620003d762000414565b5b50919050565b620003e98262000486565b810181811067ffffffffffffffff821117156200040b576200040a62000443565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61533b80620004a76000396000f3fe6080604052600436106102125760003560e01c80637f00c7a611610118578063b390c0ab116100a0578063e33b7de31161006f578063e33b7de3146107bf578063e7e1290f146107ea578063e985e9c514610813578063f242432a14610850578063f2fde38b1461087957610252565b8063b390c0ab14610703578063ce7c2ac21461072c578063d5abeb0114610769578063deac5bbd1461079457610252565b806390528e11116100e757806390528e111461061e5780639852595c146106495780639b19251a14610686578063a22cb465146106c3578063a82f1e1c146106ec57610252565b80637f00c7a6146105765780638456cb591461059f5780638b83209b146105b65780638da5cb5b146105f357610252565b806327f381131161019b57806344a0d68a1161016a57806344a0d68a146104a55780634e1273f4146104ce5780635c975abb1461050b5780636e260c1e14610536578063715018a61461055f57610252565b806327f38113146103fb5780632eb2c2d6146104265780633a98ef391461044f5780633e4bee381461047a57610252565b806313faede6116101e257806313faede614610337578063156e29f614610362578063191655871461037e578063228025e8146103a7578063239c70ae146103d057610252565b8062fdd58e1461025757806301ffc9a71461029457806302fe5305146102d15780630e89341c146102fa57610252565b36610252577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7703334604051610248929190613fba565b60405180910390a1005b600080fd5b34801561026357600080fd5b5061027e6004803603810190610279919061366c565b6108a2565b60405161028b919061447b565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190613777565b61096b565b6040516102c8919061405e565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906137d1565b610a4d565b005b34801561030657600080fd5b50610321600480360381019061031c919061381a565b610ad5565b60405161032e9190614079565b60405180910390f35b34801561034357600080fd5b5061034c610b69565b604051610359919061447b565b60405180910390f35b61037c600480360381019061037791906136ac565b610b6f565b005b34801561038a57600080fd5b506103a560048036038101906103a09190613459565b610e24565b005b3480156103b357600080fd5b506103ce60048036038101906103c9919061381a565b6110fa565b005b3480156103dc57600080fd5b506103e5611180565b6040516103f2919061447b565b60405180910390f35b34801561040757600080fd5b50610410611186565b60405161041d9190613fe3565b60405180910390f35b34801561043257600080fd5b5061044d600480360381019061044891906134c6565b611214565b005b34801561045b57600080fd5b506104646112b5565b604051610471919061447b565b60405180910390f35b34801561048657600080fd5b5061048f6112bf565b60405161049c919061447b565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c7919061381a565b6112c6565b005b3480156104da57600080fd5b506104f560048036038101906104f091906136ff565b61134c565b6040516105029190614005565b60405180910390f35b34801561051757600080fd5b50610520611465565b60405161052d919061405e565b60405180910390f35b34801561054257600080fd5b5061055d600480360381019061055891906136ff565b611478565b005b34801561056b57600080fd5b50610574611649565b005b34801561058257600080fd5b5061059d6004803603810190610598919061381a565b6116d1565b005b3480156105ab57600080fd5b506105b4611757565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061381a565b6117ff565b6040516105ea9190613eb4565b60405180910390f35b3480156105ff57600080fd5b50610608611847565b6040516106159190613eb4565b60405180910390f35b34801561062a57600080fd5b50610633611871565b604051610640919061405e565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061342c565b611884565b60405161067d919061447b565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a8919061342c565b6118cd565b6040516106ba919061447b565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e5919061362c565b6118e5565b005b3480156106f857600080fd5b50610701611a66565b005b34801561070f57600080fd5b5061072a60048036038101906107259190613847565b611b0e565b005b34801561073857600080fd5b50610753600480360381019061074e919061342c565b611b1d565b604051610760919061447b565b60405180910390f35b34801561077557600080fd5b5061077e611b66565b60405161078b919061447b565b60405180910390f35b3480156107a057600080fd5b506107a9611b6c565b6040516107b6919061447b565b60405180910390f35b3480156107cb57600080fd5b506107d4611b73565b6040516107e1919061447b565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c91906136ff565b611b7d565b005b34801561081f57600080fd5b5061083a60048036038101906108359190613486565b611ca3565b604051610847919061405e565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613595565b611d37565b005b34801561088557600080fd5b506108a0600480360381019061089b919061342c565b611dd8565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a9061413b565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a3657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a465750610a4582611ed0565b5b9050919050565b610a55611f3a565b73ffffffffffffffffffffffffffffffffffffffff16610a73611847565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac0906142db565b60405180910390fd5b610ad281611f42565b50565b606060028054610ae490614866565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1090614866565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b50505050509050919050565b600b5481565b600f60009054906101000a900460ff1615610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906140bb565b60405180910390fd5b600d54821115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb906140db565b60405180910390fd5b600c5482600a54610c159190614653565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d9061433b565b60405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cf25781600b54610cab91906146da565b341015610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061435b565b60405180910390fd5b610d49565b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d419190614734565b925050819055505b600c54811115610dc95760011515600f60019054906101000a900460ff16151514610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da09061431b565b60405180910390fd5b610dc483828460405180602001604052806000815250611f5c565b610e1f565b60005b82811015610e1d57600a6000815480929190610de7906148c9565b9190505550610e0a84600a54600160405180602001604052806000815250611f5c565b8080610e15906148c9565b915050610dcc565b505b505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9d906141bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b9061443b565b60405180910390fd5b600060055447610f249190614653565b90506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600454600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484610fb691906146da565b610fc091906146a9565b610fca9190614734565b90506000811415611010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110079061423b565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105b9190614653565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806005546110ac9190614653565b6005819055506110bc83826120f2565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b05683826040516110ed929190613ecf565b60405180910390a1505050565b611102611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611120611847565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d906142db565b60405180910390fd5b80600c8190555050565b600d5481565b6060600880548060200260200160405190810160405280929190818152602001828054801561120a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111c0575b5050505050905090565b61121c611f3a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061126257506112618561125c611f3a565b611ca3565b5b6112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061427b565b60405180910390fd5b6112ae85858585856121e6565b5050505050565b6000600454905090565b6201869e81565b6112ce611f3a565b73ffffffffffffffffffffffffffffffffffffffff166112ec611847565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611339906142db565b60405180910390fd5b80600b8190555050565b60608151835114611392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113899061439b565b60405180910390fd5b6000835167ffffffffffffffff8111156113af576113ae6149ce565b5b6040519080825280602002602001820160405280156113dd5781602001602082028036833780820191505090505b50905060005b845181101561145a5761142a8582815181106114025761140161499f565b5b602002602001015185838151811061141d5761141c61499f565b5b60200260200101516108a2565b82828151811061143d5761143c61499f565b5b60200260200101818152505080611453906148c9565b90506113e3565b508091505092915050565b600f60009054906101000a900460ff1681565b611480611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661149e611847565b73ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906142db565b60405180910390fd5b600960009054906101000a900460ff1615611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b906141db565b60405180910390fd5b8051825114611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f9061445b565b60405180910390fd5b60008251116115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906143fb565b60405180910390fd5b60005b8251811015611629576116168382815181106115ee576115ed61499f565b5b60200260200101518383815181106116095761160861499f565b5b60200260200101516124fa565b8080611621906148c9565b9150506115cf565b506001600960006101000a81548160ff0219169083151502179055505050565b611651611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661166f611847565b73ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc906142db565b60405180910390fd5b6116cf6000612727565b565b6116d9611f3a565b73ffffffffffffffffffffffffffffffffffffffff166116f7611847565b73ffffffffffffffffffffffffffffffffffffffff161461174d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611744906142db565b60405180910390fd5b80600d8190555050565b61175f611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661177d611847565b73ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca906142db565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b6000600882815481106118155761181461499f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e6020528060005260406000206000915090505481565b8173ffffffffffffffffffffffffffffffffffffffff16611904611f3a565b73ffffffffffffffffffffffffffffffffffffffff16141561195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061437b565b60405180910390fd5b8060016000611968611f3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a15611f3a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a5a919061405e565b60405180910390a35050565b611a6e611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611a8c611847565b73ffffffffffffffffffffffffffffffffffffffff1614611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad9906142db565b60405180910390fd5b600f60019054906101000a900460ff1615600f60016101000a81548160ff021916908315150217905550565b611b193383836127ed565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6201869f81565b6000600554905090565b611b85611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611ba3611847565b73ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf0906142db565b60405180910390fd5b8051825114611c0757600080fd5b60005b8251811015611c9e57818181518110611c2657611c2561499f565b5b6020026020010151600e6000858481518110611c4557611c4461499f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611c96906148c9565b915050611c0a565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d3f611f3a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611d855750611d8485611d7f611f3a565b611ca3565b5b611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061419b565b60405180910390fd5b611dd18585858585612a0a565b5050505050565b611de0611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611dfe611847565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b906142db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061415b565b60405180910390fd5b611ecd81612727565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611f589291906130ef565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc3906143db565b60405180910390fd5b6000611fd6611f3a565b9050611ff781600087611fe888612c8c565b611ff188612c8c565b87612d06565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120569190614653565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516120d4929190614496565b60405180910390a46120eb81600087878787612d0e565b5050505050565b80471015612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061421b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161215b90613e9f565b60006040518083038185875af1925050503d8060008114612198576040519150601f19603f3d011682016040523d82523d6000602084013e61219d565b606091505b50509050806121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d8906141fb565b60405180910390fd5b505050565b815183511461222a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612221906143bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122919061425b565b60405180910390fd5b60006122a4611f3a565b90506122b4818787878787612d06565b60005b84518110156124655760008582815181106122d5576122d461499f565b5b6020026020010151905060008583815181106122f4576122f361499f565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906142bb565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461244a9190614653565b925050819055505050508061245e906148c9565b90506122b7565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516124dc929190614027565b60405180910390a46124f2818787878787612ef5565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612561906142fb565b60405180910390fd5b600081116125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a49061441b565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461262f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126269061411b565b60405180910390fd5b6008829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806004546126e49190614653565b6004819055507f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac828260405161271b929190613fba565b60405180910390a15050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561285d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128549061429b565b60405180910390fd5b6000612867611f3a565b90506128978185600061287987612c8c565b61288287612c8c565b60405180602001604052806000815250612d06565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561292e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129259061417b565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516129fb929190614496565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a719061425b565b60405180910390fd5b6000612a84611f3a565b9050612aa4818787612a9588612c8c565b612a9e88612c8c565b87612d06565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b32906142bb565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf09190614653565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612c6d929190614496565b60405180910390a4612c83828888888888612d0e565b50505050505050565b60606000600167ffffffffffffffff811115612cab57612caa6149ce565b5b604051908082528060200260200182016040528015612cd95781602001602082028036833780820191505090505b5090508281600081518110612cf157612cf061499f565b5b60200260200101818152505080915050919050565b505050505050565b612d2d8473ffffffffffffffffffffffffffffffffffffffff166130dc565b15612eed578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612d73959493929190613f60565b602060405180830381600087803b158015612d8d57600080fd5b505af1925050508015612dbe57506040513d601f19601f82011682018060405250810190612dbb91906137a4565b60015b612e6457612dca6149fd565b806308c379a01415612e275750612ddf6151fc565b80612dea5750612e29565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1e9190614079565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5b9061409b565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee2906140fb565b60405180910390fd5b505b505050505050565b612f148473ffffffffffffffffffffffffffffffffffffffff166130dc565b156130d4578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612f5a959493929190613ef8565b602060405180830381600087803b158015612f7457600080fd5b505af1925050508015612fa557506040513d601f19601f82011682018060405250810190612fa291906137a4565b60015b61304b57612fb16149fd565b806308c379a0141561300e5750612fc66151fc565b80612fd15750613010565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130059190614079565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130429061409b565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146130d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c9906140fb565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b8280546130fb90614866565b90600052602060002090601f01602090048101928261311d5760008555613164565b82601f1061313657805160ff1916838001178555613164565b82800160010185558215613164579182015b82811115613163578251825591602001919060010190613148565b5b5090506131719190613175565b5090565b5b8082111561318e576000816000905550600101613176565b5090565b60006131a56131a0846144e4565b6144bf565b905080838252602082019050828560208602820111156131c8576131c7614a24565b5b60005b858110156131f857816131de88826132f6565b8452602084019350602083019250506001810190506131cb565b5050509392505050565b600061321561321084614510565b6144bf565b9050808382526020820190508285602086028201111561323857613237614a24565b5b60005b85811015613268578161324e8882613417565b84526020840193506020830192505060018101905061323b565b5050509392505050565b60006132856132808461453c565b6144bf565b9050828152602081018484840111156132a1576132a0614a29565b5b6132ac848285614824565b509392505050565b60006132c76132c28461456d565b6144bf565b9050828152602081018484840111156132e3576132e2614a29565b5b6132ee848285614824565b509392505050565b60008135905061330581615292565b92915050565b60008135905061331a816152a9565b92915050565b600082601f83011261333557613334614a1f565b5b8135613345848260208601613192565b91505092915050565b600082601f83011261336357613362614a1f565b5b8135613373848260208601613202565b91505092915050565b60008135905061338b816152c0565b92915050565b6000813590506133a0816152d7565b92915050565b6000815190506133b5816152d7565b92915050565b600082601f8301126133d0576133cf614a1f565b5b81356133e0848260208601613272565b91505092915050565b600082601f8301126133fe576133fd614a1f565b5b813561340e8482602086016132b4565b91505092915050565b600081359050613426816152ee565b92915050565b60006020828403121561344257613441614a33565b5b6000613450848285016132f6565b91505092915050565b60006020828403121561346f5761346e614a33565b5b600061347d8482850161330b565b91505092915050565b6000806040838503121561349d5761349c614a33565b5b60006134ab858286016132f6565b92505060206134bc858286016132f6565b9150509250929050565b600080600080600060a086880312156134e2576134e1614a33565b5b60006134f0888289016132f6565b9550506020613501888289016132f6565b945050604086013567ffffffffffffffff81111561352257613521614a2e565b5b61352e8882890161334e565b935050606086013567ffffffffffffffff81111561354f5761354e614a2e565b5b61355b8882890161334e565b925050608086013567ffffffffffffffff81111561357c5761357b614a2e565b5b613588888289016133bb565b9150509295509295909350565b600080600080600060a086880312156135b1576135b0614a33565b5b60006135bf888289016132f6565b95505060206135d0888289016132f6565b94505060406135e188828901613417565b93505060606135f288828901613417565b925050608086013567ffffffffffffffff81111561361357613612614a2e565b5b61361f888289016133bb565b9150509295509295909350565b6000806040838503121561364357613642614a33565b5b6000613651858286016132f6565b92505060206136628582860161337c565b9150509250929050565b6000806040838503121561368357613682614a33565b5b6000613691858286016132f6565b92505060206136a285828601613417565b9150509250929050565b6000806000606084860312156136c5576136c4614a33565b5b60006136d3868287016132f6565b93505060206136e486828701613417565b92505060406136f586828701613417565b9150509250925092565b6000806040838503121561371657613715614a33565b5b600083013567ffffffffffffffff81111561373457613733614a2e565b5b61374085828601613320565b925050602083013567ffffffffffffffff81111561376157613760614a2e565b5b61376d8582860161334e565b9150509250929050565b60006020828403121561378d5761378c614a33565b5b600061379b84828501613391565b91505092915050565b6000602082840312156137ba576137b9614a33565b5b60006137c8848285016133a6565b91505092915050565b6000602082840312156137e7576137e6614a33565b5b600082013567ffffffffffffffff81111561380557613804614a2e565b5b613811848285016133e9565b91505092915050565b6000602082840312156138305761382f614a33565b5b600061383e84828501613417565b91505092915050565b6000806040838503121561385e5761385d614a33565b5b600061386c85828601613417565b925050602061387d85828601613417565b9150509250929050565b600061389383836138c6565b60208301905092915050565b60006138ab8383613e81565b60208301905092915050565b6138c0816147ee565b82525050565b6138cf81614768565b82525050565b6138de81614768565b82525050565b60006138ef826145be565b6138f98185614604565b93506139048361459e565b8060005b8381101561393557815161391c8882613887565b9750613927836145ea565b925050600181019050613908565b5085935050505092915050565b600061394d826145c9565b6139578185614615565b9350613962836145ae565b8060005b8381101561399357815161397a888261389f565b9750613985836145f7565b925050600181019050613966565b5085935050505092915050565b6139a98161478c565b82525050565b60006139ba826145d4565b6139c48185614626565b93506139d4818560208601614833565b6139dd81614a38565b840191505092915050565b60006139f3826145df565b6139fd8185614642565b9350613a0d818560208601614833565b613a1681614a38565b840191505092915050565b6000613a2e603483614642565b9150613a3982614a56565b604082019050919050565b6000613a51601083614642565b9150613a5c82614aa5565b602082019050919050565b6000613a74601383614642565b9150613a7f82614ace565b602082019050919050565b6000613a97602883614642565b9150613aa282614af7565b604082019050919050565b6000613aba601a83614642565b9150613ac582614b46565b602082019050919050565b6000613add602b83614642565b9150613ae882614b6f565b604082019050919050565b6000613b00602683614642565b9150613b0b82614bbe565b604082019050919050565b6000613b23602483614642565b9150613b2e82614c0d565b604082019050919050565b6000613b46602983614642565b9150613b5182614c5c565b604082019050919050565b6000613b69602683614642565b9150613b7482614cab565b604082019050919050565b6000613b8c602283614642565b9150613b9782614cfa565b604082019050919050565b6000613baf603a83614642565b9150613bba82614d49565b604082019050919050565b6000613bd2601d83614642565b9150613bdd82614d98565b602082019050919050565b6000613bf5601a83614642565b9150613c0082614dc1565b602082019050919050565b6000613c18602583614642565b9150613c2382614dea565b604082019050919050565b6000613c3b603283614642565b9150613c4682614e39565b604082019050919050565b6000613c5e602383614642565b9150613c6982614e88565b604082019050919050565b6000613c81602a83614642565b9150613c8c82614ed7565b604082019050919050565b6000613ca4602083614642565b9150613caf82614f26565b602082019050919050565b6000613cc7601b83614642565b9150613cd282614f4f565b602082019050919050565b6000613cea601c83614642565b9150613cf582614f78565b602082019050919050565b6000613d0d601e83614642565b9150613d1882614fa1565b602082019050919050565b6000613d30600083614637565b9150613d3b82614fca565b600082019050919050565b6000613d53602083614642565b9150613d5e82614fcd565b602082019050919050565b6000613d76602983614642565b9150613d8182614ff6565b604082019050919050565b6000613d99602983614642565b9150613da482615045565b604082019050919050565b6000613dbc602883614642565b9150613dc782615094565b604082019050919050565b6000613ddf602183614642565b9150613dea826150e3565b604082019050919050565b6000613e02601a83614642565b9150613e0d82615132565b602082019050919050565b6000613e25601d83614642565b9150613e308261515b565b602082019050919050565b6000613e48600e83614642565b9150613e5382615184565b602082019050919050565b6000613e6b602183614642565b9150613e76826151ad565b604082019050919050565b613e8a816147e4565b82525050565b613e99816147e4565b82525050565b6000613eaa82613d23565b9150819050919050565b6000602082019050613ec960008301846138d5565b92915050565b6000604082019050613ee460008301856138b7565b613ef16020830184613e90565b9392505050565b600060a082019050613f0d60008301886138d5565b613f1a60208301876138d5565b8181036040830152613f2c8186613942565b90508181036060830152613f408185613942565b90508181036080830152613f5481846139af565b90509695505050505050565b600060a082019050613f7560008301886138d5565b613f8260208301876138d5565b613f8f6040830186613e90565b613f9c6060830185613e90565b8181036080830152613fae81846139af565b90509695505050505050565b6000604082019050613fcf60008301856138d5565b613fdc6020830184613e90565b9392505050565b60006020820190508181036000830152613ffd81846138e4565b905092915050565b6000602082019050818103600083015261401f8184613942565b905092915050565b600060408201905081810360008301526140418185613942565b905081810360208301526140558184613942565b90509392505050565b600060208201905061407360008301846139a0565b92915050565b6000602082019050818103600083015261409381846139e8565b905092915050565b600060208201905081810360008301526140b481613a21565b9050919050565b600060208201905081810360008301526140d481613a44565b9050919050565b600060208201905081810360008301526140f481613a67565b9050919050565b6000602082019050818103600083015261411481613a8a565b9050919050565b6000602082019050818103600083015261413481613aad565b9050919050565b6000602082019050818103600083015261415481613ad0565b9050919050565b6000602082019050818103600083015261417481613af3565b9050919050565b6000602082019050818103600083015261419481613b16565b9050919050565b600060208201905081810360008301526141b481613b39565b9050919050565b600060208201905081810360008301526141d481613b5c565b9050919050565b600060208201905081810360008301526141f481613b7f565b9050919050565b6000602082019050818103600083015261421481613ba2565b9050919050565b6000602082019050818103600083015261423481613bc5565b9050919050565b6000602082019050818103600083015261425481613be8565b9050919050565b6000602082019050818103600083015261427481613c0b565b9050919050565b6000602082019050818103600083015261429481613c2e565b9050919050565b600060208201905081810360008301526142b481613c51565b9050919050565b600060208201905081810360008301526142d481613c74565b9050919050565b600060208201905081810360008301526142f481613c97565b9050919050565b6000602082019050818103600083015261431481613cba565b9050919050565b6000602082019050818103600083015261433481613cdd565b9050919050565b6000602082019050818103600083015261435481613d00565b9050919050565b6000602082019050818103600083015261437481613d46565b9050919050565b6000602082019050818103600083015261439481613d69565b9050919050565b600060208201905081810360008301526143b481613d8c565b9050919050565b600060208201905081810360008301526143d481613daf565b9050919050565b600060208201905081810360008301526143f481613dd2565b9050919050565b6000602082019050818103600083015261441481613df5565b9050919050565b6000602082019050818103600083015261443481613e18565b9050919050565b6000602082019050818103600083015261445481613e3b565b9050919050565b6000602082019050818103600083015261447481613e5e565b9050919050565b60006020820190506144906000830184613e90565b92915050565b60006040820190506144ab6000830185613e90565b6144b86020830184613e90565b9392505050565b60006144c96144da565b90506144d58282614898565b919050565b6000604051905090565b600067ffffffffffffffff8211156144ff576144fe6149ce565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561452b5761452a6149ce565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614557576145566149ce565b5b61456082614a38565b9050602081019050919050565b600067ffffffffffffffff821115614588576145876149ce565b5b61459182614a38565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061465e826147e4565b9150614669836147e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561469e5761469d614912565b5b828201905092915050565b60006146b4826147e4565b91506146bf836147e4565b9250826146cf576146ce614941565b5b828204905092915050565b60006146e5826147e4565b91506146f0836147e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561472957614728614912565b5b828202905092915050565b600061473f826147e4565b915061474a836147e4565b92508282101561475d5761475c614912565b5b828203905092915050565b6000614773826147c4565b9050919050565b6000614785826147c4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006147f982614800565b9050919050565b600061480b82614812565b9050919050565b600061481d826147c4565b9050919050565b82818337600083830152505050565b60005b83811015614851578082015181840152602081019050614836565b83811115614860576000848401525b50505050565b6000600282049050600182168061487e57607f821691505b6020821081141561489257614891614970565b5b50919050565b6148a182614a38565b810181811067ffffffffffffffff821117156148c0576148bf6149ce565b5b80604052505050565b60006148d4826147e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490757614906614912565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614a1c5760046000803e614a19600051614a49565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f53616c6573206172652070617573656400000000000000000000000000000000600082015250565b7f4d617820616d6f756e7420657863656564656400000000000000000000000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420616c72656164792068617320736861726573000000000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060008201527f7368617265730000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e742053706c697420416c726561647920496e697469616c697a6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f4163636f756e74206973206e6f7420647565207061796d656e74000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4163636f756e7420697320746865207a65726f20616464726573730000000000600082015250565b7f636f6e73756d61626c6573206e6f74206d696e7461626c652079657400000000600082015250565b7f4e6f7420656e6f756768206d696e7461626c652065646974696f6e7320210000600082015250565b50565b7f496e73756666696369656e74207472616e73616374696f6e20616d6f756e742e600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206e6f20706179656573000000000000600082015250565b7f5061796d656e7453706c69747465723a20736861726573206172652030000000600082015250565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b7f50617965657320616e6420736861726573206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561520c5761528f565b6152146144da565b60043d036004823e80513d602482011167ffffffffffffffff8211171561523c57505061528f565b808201805167ffffffffffffffff81111561525a575050505061528f565b80602083010160043d03850181111561527757505050505061528f565b61528682602001850186614898565b82955050505050505b90565b61529b81614768565b81146152a657600080fd5b50565b6152b28161477a565b81146152bd57600080fd5b50565b6152c98161478c565b81146152d457600080fd5b50565b6152e081614798565b81146152eb57600080fd5b50565b6152f7816147e4565b811461530257600080fd5b5056fea26469706673582212202659926cbd1188875c9593433c108d44768651b15a0fa2956c4791b2834a62cd64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102125760003560e01c80637f00c7a611610118578063b390c0ab116100a0578063e33b7de31161006f578063e33b7de3146107bf578063e7e1290f146107ea578063e985e9c514610813578063f242432a14610850578063f2fde38b1461087957610252565b8063b390c0ab14610703578063ce7c2ac21461072c578063d5abeb0114610769578063deac5bbd1461079457610252565b806390528e11116100e757806390528e111461061e5780639852595c146106495780639b19251a14610686578063a22cb465146106c3578063a82f1e1c146106ec57610252565b80637f00c7a6146105765780638456cb591461059f5780638b83209b146105b65780638da5cb5b146105f357610252565b806327f381131161019b57806344a0d68a1161016a57806344a0d68a146104a55780634e1273f4146104ce5780635c975abb1461050b5780636e260c1e14610536578063715018a61461055f57610252565b806327f38113146103fb5780632eb2c2d6146104265780633a98ef391461044f5780633e4bee381461047a57610252565b806313faede6116101e257806313faede614610337578063156e29f614610362578063191655871461037e578063228025e8146103a7578063239c70ae146103d057610252565b8062fdd58e1461025757806301ffc9a71461029457806302fe5305146102d15780630e89341c146102fa57610252565b36610252577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7703334604051610248929190613fba565b60405180910390a1005b600080fd5b34801561026357600080fd5b5061027e6004803603810190610279919061366c565b6108a2565b60405161028b919061447b565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190613777565b61096b565b6040516102c8919061405e565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906137d1565b610a4d565b005b34801561030657600080fd5b50610321600480360381019061031c919061381a565b610ad5565b60405161032e9190614079565b60405180910390f35b34801561034357600080fd5b5061034c610b69565b604051610359919061447b565b60405180910390f35b61037c600480360381019061037791906136ac565b610b6f565b005b34801561038a57600080fd5b506103a560048036038101906103a09190613459565b610e24565b005b3480156103b357600080fd5b506103ce60048036038101906103c9919061381a565b6110fa565b005b3480156103dc57600080fd5b506103e5611180565b6040516103f2919061447b565b60405180910390f35b34801561040757600080fd5b50610410611186565b60405161041d9190613fe3565b60405180910390f35b34801561043257600080fd5b5061044d600480360381019061044891906134c6565b611214565b005b34801561045b57600080fd5b506104646112b5565b604051610471919061447b565b60405180910390f35b34801561048657600080fd5b5061048f6112bf565b60405161049c919061447b565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c7919061381a565b6112c6565b005b3480156104da57600080fd5b506104f560048036038101906104f091906136ff565b61134c565b6040516105029190614005565b60405180910390f35b34801561051757600080fd5b50610520611465565b60405161052d919061405e565b60405180910390f35b34801561054257600080fd5b5061055d600480360381019061055891906136ff565b611478565b005b34801561056b57600080fd5b50610574611649565b005b34801561058257600080fd5b5061059d6004803603810190610598919061381a565b6116d1565b005b3480156105ab57600080fd5b506105b4611757565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061381a565b6117ff565b6040516105ea9190613eb4565b60405180910390f35b3480156105ff57600080fd5b50610608611847565b6040516106159190613eb4565b60405180910390f35b34801561062a57600080fd5b50610633611871565b604051610640919061405e565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b919061342c565b611884565b60405161067d919061447b565b60405180910390f35b34801561069257600080fd5b506106ad60048036038101906106a8919061342c565b6118cd565b6040516106ba919061447b565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e5919061362c565b6118e5565b005b3480156106f857600080fd5b50610701611a66565b005b34801561070f57600080fd5b5061072a60048036038101906107259190613847565b611b0e565b005b34801561073857600080fd5b50610753600480360381019061074e919061342c565b611b1d565b604051610760919061447b565b60405180910390f35b34801561077557600080fd5b5061077e611b66565b60405161078b919061447b565b60405180910390f35b3480156107a057600080fd5b506107a9611b6c565b6040516107b6919061447b565b60405180910390f35b3480156107cb57600080fd5b506107d4611b73565b6040516107e1919061447b565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c91906136ff565b611b7d565b005b34801561081f57600080fd5b5061083a60048036038101906108359190613486565b611ca3565b604051610847919061405e565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613595565b611d37565b005b34801561088557600080fd5b506108a0600480360381019061089b919061342c565b611dd8565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a9061413b565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a3657507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a465750610a4582611ed0565b5b9050919050565b610a55611f3a565b73ffffffffffffffffffffffffffffffffffffffff16610a73611847565b73ffffffffffffffffffffffffffffffffffffffff1614610ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac0906142db565b60405180910390fd5b610ad281611f42565b50565b606060028054610ae490614866565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1090614866565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b50505050509050919050565b600b5481565b600f60009054906101000a900460ff1615610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb6906140bb565b60405180910390fd5b600d54821115610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb906140db565b60405180910390fd5b600c5482600a54610c159190614653565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d9061433b565b60405180910390fd5b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cf25781600b54610cab91906146da565b341015610ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce49061435b565b60405180910390fd5b610d49565b81600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d419190614734565b925050819055505b600c54811115610dc95760011515600f60019054906101000a900460ff16151514610da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da09061431b565b60405180910390fd5b610dc483828460405180602001604052806000815250611f5c565b610e1f565b60005b82811015610e1d57600a6000815480929190610de7906148c9565b9190505550610e0a84600a54600160405180602001604052806000815250611f5c565b8080610e15906148c9565b915050610dcc565b505b505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610ea6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9d906141bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b9061443b565b60405180910390fd5b600060055447610f249190614653565b90506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600454600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484610fb691906146da565b610fc091906146a9565b610fca9190614734565b90506000811415611010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110079061423b565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461105b9190614653565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806005546110ac9190614653565b6005819055506110bc83826120f2565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b05683826040516110ed929190613ecf565b60405180910390a1505050565b611102611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611120611847565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d906142db565b60405180910390fd5b80600c8190555050565b600d5481565b6060600880548060200260200160405190810160405280929190818152602001828054801561120a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111c0575b5050505050905090565b61121c611f3a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061126257506112618561125c611f3a565b611ca3565b5b6112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061427b565b60405180910390fd5b6112ae85858585856121e6565b5050505050565b6000600454905090565b6201869e81565b6112ce611f3a565b73ffffffffffffffffffffffffffffffffffffffff166112ec611847565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611339906142db565b60405180910390fd5b80600b8190555050565b60608151835114611392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113899061439b565b60405180910390fd5b6000835167ffffffffffffffff8111156113af576113ae6149ce565b5b6040519080825280602002602001820160405280156113dd5781602001602082028036833780820191505090505b50905060005b845181101561145a5761142a8582815181106114025761140161499f565b5b602002602001015185838151811061141d5761141c61499f565b5b60200260200101516108a2565b82828151811061143d5761143c61499f565b5b60200260200101818152505080611453906148c9565b90506113e3565b508091505092915050565b600f60009054906101000a900460ff1681565b611480611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661149e611847565b73ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb906142db565b60405180910390fd5b600960009054906101000a900460ff1615611544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153b906141db565b60405180910390fd5b8051825114611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f9061445b565b60405180910390fd5b60008251116115cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c3906143fb565b60405180910390fd5b60005b8251811015611629576116168382815181106115ee576115ed61499f565b5b60200260200101518383815181106116095761160861499f565b5b60200260200101516124fa565b8080611621906148c9565b9150506115cf565b506001600960006101000a81548160ff0219169083151502179055505050565b611651611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661166f611847565b73ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc906142db565b60405180910390fd5b6116cf6000612727565b565b6116d9611f3a565b73ffffffffffffffffffffffffffffffffffffffff166116f7611847565b73ffffffffffffffffffffffffffffffffffffffff161461174d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611744906142db565b60405180910390fd5b80600d8190555050565b61175f611f3a565b73ffffffffffffffffffffffffffffffffffffffff1661177d611847565b73ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca906142db565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b6000600882815481106118155761181461499f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e6020528060005260406000206000915090505481565b8173ffffffffffffffffffffffffffffffffffffffff16611904611f3a565b73ffffffffffffffffffffffffffffffffffffffff16141561195b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119529061437b565b60405180910390fd5b8060016000611968611f3a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a15611f3a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a5a919061405e565b60405180910390a35050565b611a6e611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611a8c611847565b73ffffffffffffffffffffffffffffffffffffffff1614611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad9906142db565b60405180910390fd5b600f60019054906101000a900460ff1615600f60016101000a81548160ff021916908315150217905550565b611b193383836127ed565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b6201869f81565b6000600554905090565b611b85611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611ba3611847565b73ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf0906142db565b60405180910390fd5b8051825114611c0757600080fd5b60005b8251811015611c9e57818181518110611c2657611c2561499f565b5b6020026020010151600e6000858481518110611c4557611c4461499f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080611c96906148c9565b915050611c0a565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d3f611f3a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611d855750611d8485611d7f611f3a565b611ca3565b5b611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061419b565b60405180910390fd5b611dd18585858585612a0a565b5050505050565b611de0611f3a565b73ffffffffffffffffffffffffffffffffffffffff16611dfe611847565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b906142db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb9061415b565b60405180910390fd5b611ecd81612727565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611f589291906130ef565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc3906143db565b60405180910390fd5b6000611fd6611f3a565b9050611ff781600087611fe888612c8c565b611ff188612c8c565b87612d06565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120569190614653565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516120d4929190614496565b60405180910390a46120eb81600087878787612d0e565b5050505050565b80471015612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061421b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161215b90613e9f565b60006040518083038185875af1925050503d8060008114612198576040519150601f19603f3d011682016040523d82523d6000602084013e61219d565b606091505b50509050806121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d8906141fb565b60405180910390fd5b505050565b815183511461222a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612221906143bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561229a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122919061425b565b60405180910390fd5b60006122a4611f3a565b90506122b4818787878787612d06565b60005b84518110156124655760008582815181106122d5576122d461499f565b5b6020026020010151905060008583815181106122f4576122f361499f565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c906142bb565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461244a9190614653565b925050819055505050508061245e906148c9565b90506122b7565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516124dc929190614027565b60405180910390a46124f2818787878787612ef5565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561256a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612561906142fb565b60405180910390fd5b600081116125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a49061441b565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461262f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126269061411b565b60405180910390fd5b6008829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806004546126e49190614653565b6004819055507f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac828260405161271b929190613fba565b60405180910390a15050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561285d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128549061429b565b60405180910390fd5b6000612867611f3a565b90506128978185600061287987612c8c565b61288287612c8c565b60405180602001604052806000815250612d06565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561292e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129259061417b565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516129fb929190614496565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a719061425b565b60405180910390fd5b6000612a84611f3a565b9050612aa4818787612a9588612c8c565b612a9e88612c8c565b87612d06565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b32906142bb565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bf09190614653565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051612c6d929190614496565b60405180910390a4612c83828888888888612d0e565b50505050505050565b60606000600167ffffffffffffffff811115612cab57612caa6149ce565b5b604051908082528060200260200182016040528015612cd95781602001602082028036833780820191505090505b5090508281600081518110612cf157612cf061499f565b5b60200260200101818152505080915050919050565b505050505050565b612d2d8473ffffffffffffffffffffffffffffffffffffffff166130dc565b15612eed578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612d73959493929190613f60565b602060405180830381600087803b158015612d8d57600080fd5b505af1925050508015612dbe57506040513d601f19601f82011682018060405250810190612dbb91906137a4565b60015b612e6457612dca6149fd565b806308c379a01415612e275750612ddf6151fc565b80612dea5750612e29565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1e9190614079565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5b9061409b565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee2906140fb565b60405180910390fd5b505b505050505050565b612f148473ffffffffffffffffffffffffffffffffffffffff166130dc565b156130d4578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612f5a959493929190613ef8565b602060405180830381600087803b158015612f7457600080fd5b505af1925050508015612fa557506040513d601f19601f82011682018060405250810190612fa291906137a4565b60015b61304b57612fb16149fd565b806308c379a0141561300e5750612fc66151fc565b80612fd15750613010565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130059190614079565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130429061409b565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146130d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c9906140fb565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b8280546130fb90614866565b90600052602060002090601f01602090048101928261311d5760008555613164565b82601f1061313657805160ff1916838001178555613164565b82800160010185558215613164579182015b82811115613163578251825591602001919060010190613148565b5b5090506131719190613175565b5090565b5b8082111561318e576000816000905550600101613176565b5090565b60006131a56131a0846144e4565b6144bf565b905080838252602082019050828560208602820111156131c8576131c7614a24565b5b60005b858110156131f857816131de88826132f6565b8452602084019350602083019250506001810190506131cb565b5050509392505050565b600061321561321084614510565b6144bf565b9050808382526020820190508285602086028201111561323857613237614a24565b5b60005b85811015613268578161324e8882613417565b84526020840193506020830192505060018101905061323b565b5050509392505050565b60006132856132808461453c565b6144bf565b9050828152602081018484840111156132a1576132a0614a29565b5b6132ac848285614824565b509392505050565b60006132c76132c28461456d565b6144bf565b9050828152602081018484840111156132e3576132e2614a29565b5b6132ee848285614824565b509392505050565b60008135905061330581615292565b92915050565b60008135905061331a816152a9565b92915050565b600082601f83011261333557613334614a1f565b5b8135613345848260208601613192565b91505092915050565b600082601f83011261336357613362614a1f565b5b8135613373848260208601613202565b91505092915050565b60008135905061338b816152c0565b92915050565b6000813590506133a0816152d7565b92915050565b6000815190506133b5816152d7565b92915050565b600082601f8301126133d0576133cf614a1f565b5b81356133e0848260208601613272565b91505092915050565b600082601f8301126133fe576133fd614a1f565b5b813561340e8482602086016132b4565b91505092915050565b600081359050613426816152ee565b92915050565b60006020828403121561344257613441614a33565b5b6000613450848285016132f6565b91505092915050565b60006020828403121561346f5761346e614a33565b5b600061347d8482850161330b565b91505092915050565b6000806040838503121561349d5761349c614a33565b5b60006134ab858286016132f6565b92505060206134bc858286016132f6565b9150509250929050565b600080600080600060a086880312156134e2576134e1614a33565b5b60006134f0888289016132f6565b9550506020613501888289016132f6565b945050604086013567ffffffffffffffff81111561352257613521614a2e565b5b61352e8882890161334e565b935050606086013567ffffffffffffffff81111561354f5761354e614a2e565b5b61355b8882890161334e565b925050608086013567ffffffffffffffff81111561357c5761357b614a2e565b5b613588888289016133bb565b9150509295509295909350565b600080600080600060a086880312156135b1576135b0614a33565b5b60006135bf888289016132f6565b95505060206135d0888289016132f6565b94505060406135e188828901613417565b93505060606135f288828901613417565b925050608086013567ffffffffffffffff81111561361357613612614a2e565b5b61361f888289016133bb565b9150509295509295909350565b6000806040838503121561364357613642614a33565b5b6000613651858286016132f6565b92505060206136628582860161337c565b9150509250929050565b6000806040838503121561368357613682614a33565b5b6000613691858286016132f6565b92505060206136a285828601613417565b9150509250929050565b6000806000606084860312156136c5576136c4614a33565b5b60006136d3868287016132f6565b93505060206136e486828701613417565b92505060406136f586828701613417565b9150509250925092565b6000806040838503121561371657613715614a33565b5b600083013567ffffffffffffffff81111561373457613733614a2e565b5b61374085828601613320565b925050602083013567ffffffffffffffff81111561376157613760614a2e565b5b61376d8582860161334e565b9150509250929050565b60006020828403121561378d5761378c614a33565b5b600061379b84828501613391565b91505092915050565b6000602082840312156137ba576137b9614a33565b5b60006137c8848285016133a6565b91505092915050565b6000602082840312156137e7576137e6614a33565b5b600082013567ffffffffffffffff81111561380557613804614a2e565b5b613811848285016133e9565b91505092915050565b6000602082840312156138305761382f614a33565b5b600061383e84828501613417565b91505092915050565b6000806040838503121561385e5761385d614a33565b5b600061386c85828601613417565b925050602061387d85828601613417565b9150509250929050565b600061389383836138c6565b60208301905092915050565b60006138ab8383613e81565b60208301905092915050565b6138c0816147ee565b82525050565b6138cf81614768565b82525050565b6138de81614768565b82525050565b60006138ef826145be565b6138f98185614604565b93506139048361459e565b8060005b8381101561393557815161391c8882613887565b9750613927836145ea565b925050600181019050613908565b5085935050505092915050565b600061394d826145c9565b6139578185614615565b9350613962836145ae565b8060005b8381101561399357815161397a888261389f565b9750613985836145f7565b925050600181019050613966565b5085935050505092915050565b6139a98161478c565b82525050565b60006139ba826145d4565b6139c48185614626565b93506139d4818560208601614833565b6139dd81614a38565b840191505092915050565b60006139f3826145df565b6139fd8185614642565b9350613a0d818560208601614833565b613a1681614a38565b840191505092915050565b6000613a2e603483614642565b9150613a3982614a56565b604082019050919050565b6000613a51601083614642565b9150613a5c82614aa5565b602082019050919050565b6000613a74601383614642565b9150613a7f82614ace565b602082019050919050565b6000613a97602883614642565b9150613aa282614af7565b604082019050919050565b6000613aba601a83614642565b9150613ac582614b46565b602082019050919050565b6000613add602b83614642565b9150613ae882614b6f565b604082019050919050565b6000613b00602683614642565b9150613b0b82614bbe565b604082019050919050565b6000613b23602483614642565b9150613b2e82614c0d565b604082019050919050565b6000613b46602983614642565b9150613b5182614c5c565b604082019050919050565b6000613b69602683614642565b9150613b7482614cab565b604082019050919050565b6000613b8c602283614642565b9150613b9782614cfa565b604082019050919050565b6000613baf603a83614642565b9150613bba82614d49565b604082019050919050565b6000613bd2601d83614642565b9150613bdd82614d98565b602082019050919050565b6000613bf5601a83614642565b9150613c0082614dc1565b602082019050919050565b6000613c18602583614642565b9150613c2382614dea565b604082019050919050565b6000613c3b603283614642565b9150613c4682614e39565b604082019050919050565b6000613c5e602383614642565b9150613c6982614e88565b604082019050919050565b6000613c81602a83614642565b9150613c8c82614ed7565b604082019050919050565b6000613ca4602083614642565b9150613caf82614f26565b602082019050919050565b6000613cc7601b83614642565b9150613cd282614f4f565b602082019050919050565b6000613cea601c83614642565b9150613cf582614f78565b602082019050919050565b6000613d0d601e83614642565b9150613d1882614fa1565b602082019050919050565b6000613d30600083614637565b9150613d3b82614fca565b600082019050919050565b6000613d53602083614642565b9150613d5e82614fcd565b602082019050919050565b6000613d76602983614642565b9150613d8182614ff6565b604082019050919050565b6000613d99602983614642565b9150613da482615045565b604082019050919050565b6000613dbc602883614642565b9150613dc782615094565b604082019050919050565b6000613ddf602183614642565b9150613dea826150e3565b604082019050919050565b6000613e02601a83614642565b9150613e0d82615132565b602082019050919050565b6000613e25601d83614642565b9150613e308261515b565b602082019050919050565b6000613e48600e83614642565b9150613e5382615184565b602082019050919050565b6000613e6b602183614642565b9150613e76826151ad565b604082019050919050565b613e8a816147e4565b82525050565b613e99816147e4565b82525050565b6000613eaa82613d23565b9150819050919050565b6000602082019050613ec960008301846138d5565b92915050565b6000604082019050613ee460008301856138b7565b613ef16020830184613e90565b9392505050565b600060a082019050613f0d60008301886138d5565b613f1a60208301876138d5565b8181036040830152613f2c8186613942565b90508181036060830152613f408185613942565b90508181036080830152613f5481846139af565b90509695505050505050565b600060a082019050613f7560008301886138d5565b613f8260208301876138d5565b613f8f6040830186613e90565b613f9c6060830185613e90565b8181036080830152613fae81846139af565b90509695505050505050565b6000604082019050613fcf60008301856138d5565b613fdc6020830184613e90565b9392505050565b60006020820190508181036000830152613ffd81846138e4565b905092915050565b6000602082019050818103600083015261401f8184613942565b905092915050565b600060408201905081810360008301526140418185613942565b905081810360208301526140558184613942565b90509392505050565b600060208201905061407360008301846139a0565b92915050565b6000602082019050818103600083015261409381846139e8565b905092915050565b600060208201905081810360008301526140b481613a21565b9050919050565b600060208201905081810360008301526140d481613a44565b9050919050565b600060208201905081810360008301526140f481613a67565b9050919050565b6000602082019050818103600083015261411481613a8a565b9050919050565b6000602082019050818103600083015261413481613aad565b9050919050565b6000602082019050818103600083015261415481613ad0565b9050919050565b6000602082019050818103600083015261417481613af3565b9050919050565b6000602082019050818103600083015261419481613b16565b9050919050565b600060208201905081810360008301526141b481613b39565b9050919050565b600060208201905081810360008301526141d481613b5c565b9050919050565b600060208201905081810360008301526141f481613b7f565b9050919050565b6000602082019050818103600083015261421481613ba2565b9050919050565b6000602082019050818103600083015261423481613bc5565b9050919050565b6000602082019050818103600083015261425481613be8565b9050919050565b6000602082019050818103600083015261427481613c0b565b9050919050565b6000602082019050818103600083015261429481613c2e565b9050919050565b600060208201905081810360008301526142b481613c51565b9050919050565b600060208201905081810360008301526142d481613c74565b9050919050565b600060208201905081810360008301526142f481613c97565b9050919050565b6000602082019050818103600083015261431481613cba565b9050919050565b6000602082019050818103600083015261433481613cdd565b9050919050565b6000602082019050818103600083015261435481613d00565b9050919050565b6000602082019050818103600083015261437481613d46565b9050919050565b6000602082019050818103600083015261439481613d69565b9050919050565b600060208201905081810360008301526143b481613d8c565b9050919050565b600060208201905081810360008301526143d481613daf565b9050919050565b600060208201905081810360008301526143f481613dd2565b9050919050565b6000602082019050818103600083015261441481613df5565b9050919050565b6000602082019050818103600083015261443481613e18565b9050919050565b6000602082019050818103600083015261445481613e3b565b9050919050565b6000602082019050818103600083015261447481613e5e565b9050919050565b60006020820190506144906000830184613e90565b92915050565b60006040820190506144ab6000830185613e90565b6144b86020830184613e90565b9392505050565b60006144c96144da565b90506144d58282614898565b919050565b6000604051905090565b600067ffffffffffffffff8211156144ff576144fe6149ce565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561452b5761452a6149ce565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614557576145566149ce565b5b61456082614a38565b9050602081019050919050565b600067ffffffffffffffff821115614588576145876149ce565b5b61459182614a38565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061465e826147e4565b9150614669836147e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561469e5761469d614912565b5b828201905092915050565b60006146b4826147e4565b91506146bf836147e4565b9250826146cf576146ce614941565b5b828204905092915050565b60006146e5826147e4565b91506146f0836147e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561472957614728614912565b5b828202905092915050565b600061473f826147e4565b915061474a836147e4565b92508282101561475d5761475c614912565b5b828203905092915050565b6000614773826147c4565b9050919050565b6000614785826147c4565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006147f982614800565b9050919050565b600061480b82614812565b9050919050565b600061481d826147c4565b9050919050565b82818337600083830152505050565b60005b83811015614851578082015181840152602081019050614836565b83811115614860576000848401525b50505050565b6000600282049050600182168061487e57607f821691505b6020821081141561489257614891614970565b5b50919050565b6148a182614a38565b810181811067ffffffffffffffff821117156148c0576148bf6149ce565b5b80604052505050565b60006148d4826147e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561490757614906614912565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d1115614a1c5760046000803e614a19600051614a49565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f53616c6573206172652070617573656400000000000000000000000000000000600082015250565b7f4d617820616d6f756e7420657863656564656400000000000000000000000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420616c72656164792068617320736861726573000000000000600082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060008201527f7368617265730000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e742053706c697420416c726561647920496e697469616c697a6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f4163636f756e74206973206e6f7420647565207061796d656e74000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4163636f756e7420697320746865207a65726f20616464726573730000000000600082015250565b7f636f6e73756d61626c6573206e6f74206d696e7461626c652079657400000000600082015250565b7f4e6f7420656e6f756768206d696e7461626c652065646974696f6e7320210000600082015250565b50565b7f496e73756666696369656e74207472616e73616374696f6e20616d6f756e742e600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206e6f20706179656573000000000000600082015250565b7f5061796d656e7453706c69747465723a20736861726573206172652030000000600082015250565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b7f50617965657320616e6420736861726573206c656e677468206d69736d61746360008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d101561520c5761528f565b6152146144da565b60043d036004823e80513d602482011167ffffffffffffffff8211171561523c57505061528f565b808201805167ffffffffffffffff81111561525a575050505061528f565b80602083010160043d03850181111561527757505050505061528f565b61528682602001850186614898565b82955050505050505b90565b61529b81614768565b81146152a657600080fd5b50565b6152b28161477a565b81146152bd57600080fd5b50565b6152c98161478c565b81146152d457600080fd5b50565b6152e081614798565b81146152eb57600080fd5b50565b6152f7816147e4565b811461530257600080fd5b5056fea26469706673582212202659926cbd1188875c9593433c108d44768651b15a0fa2956c4791b2834a62cd64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _baseURI (string):
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
47762:4315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40481:38;40497:10;40509:9;40481:38;;;;;;;:::i;:::-;;;;;;;;47762:4315;;;;;22335:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21358:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50926:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22079:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47902:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48613:925;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41685:722;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50738:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47980:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43170:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24430:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40610:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48176:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50251:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22732:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48070:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43420:542;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2593:94;;;;;;;;;;;;;:::i;:::-;;50483:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51080:69;;;;;;;;;;;;;:::i;:::-;;41385:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1942:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48095:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41185:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48019:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23329:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51212:90;;;;;;;;;;;;;:::i;:::-;;51941:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40981:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47941:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48125:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40795:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51409:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23712:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23952:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2842:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22335:231;22421:7;22468:1;22449:21;;:7;:21;;;;22441:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22536:9;:13;22546:2;22536:13;;;;;;;;;;;:22;22550:7;22536:22;;;;;;;;;;;;;;;;22529:29;;22335:231;;;;:::o;21358:310::-;21460:4;21512:26;21497:41;;;:11;:41;;;;:110;;;;21570:37;21555:52;;;:11;:52;;;;21497:110;:163;;;;21624:36;21648:11;21624:23;:36::i;:::-;21497:163;21477:183;;21358:310;;;:::o;50926:91::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50993:16:::1;51001:7;50993;:16::i;:::-;50926:91:::0;:::o;22079:105::-;22139:13;22172:4;22165:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22079:105;;;:::o;47902:32::-;;;;:::o;48613:925::-;48714:6;;;;;;;;;;;48713:7;48705:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;48775:13;;48760:11;:28;;48752:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;48870:9;;48855:11;48845:7;;:21;;;;:::i;:::-;:34;;48823:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;48978:11;48961:9;:14;48971:3;48961:14;;;;;;;;;;;;;;;;:28;48958:229;;;49050:11;49043:4;;:18;;;;:::i;:::-;49030:9;:31;;49004:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;48958:229;;;49176:11;49158:9;:14;49168:3;49158:14;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;48958:229;49222:9;;49211:8;:20;49208:323;;;49270:4;49255:19;;:11;;;;;;;;;;;:19;;;49247:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;49322:37;49328:3;49333:8;49343:11;49322:37;;;;;;;;;;;;:5;:37::i;:::-;49208:323;;;49405:9;49400:131;49424:11;49420:1;:15;49400:131;;;49461:7;;:9;;;;;;;;;:::i;:::-;;;;;;49489:26;49495:3;49500:7;;49509:1;49489:26;;;;;;;;;;;;:5;:26::i;:::-;49437:3;;;;;:::i;:::-;;;;49400:131;;;;49208:323;48613:925;;;:::o;41685:722::-;41780:1;41761:7;:16;41769:7;41761:16;;;;;;;;;;;;;;;;:20;41753:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;41857:7;41843:21;;:10;:21;;;41835:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;41893:21;41941:14;;41917:21;:38;;;;:::i;:::-;41893:62;;41966:15;42062:9;:18;42072:7;42062:18;;;;;;;;;;;;;;;;42034:12;;42001:7;:16;42009:7;42001:16;;;;;;;;;;;;;;;;41985:13;:32;;;;:::i;:::-;41984:62;;;;:::i;:::-;:96;;;;:::i;:::-;41966:114;;42112:1;42101:7;:12;;42093:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;42199:7;42178:9;:18;42188:7;42178:18;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;42157:9;:18;42167:7;42157:18;;;;;;;;;;;;;;;:49;;;;42251:7;42234:14;;:24;;;;:::i;:::-;42217:14;:41;;;;42271:35;42289:7;42298;42271:17;:35::i;:::-;42366:33;42382:7;42391;42366:33;;;;;;;:::i;:::-;;;;;;;;41742:665;;41685:722;:::o;50738:106::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50823:13:::1;50811:9;:25;;;;50738:106:::0;:::o;47980:32::-;;;;:::o;43170:93::-;43212:16;43248:7;43241:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43170:93;:::o;24430:442::-;24671:12;:10;:12::i;:::-;24663:20;;:4;:20;;;:60;;;;24687:36;24704:4;24710:12;:10;:12::i;:::-;24687:16;:36::i;:::-;24663:60;24641:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;24812:52;24835:4;24841:2;24845:3;24850:7;24859:4;24812:22;:52::i;:::-;24430:442;;;;;:::o;40610:91::-;40654:7;40681:12;;40674:19;;40610:91;:::o;48176:36::-;48207:5;48176:36;:::o;50251:86::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50321:8:::1;50314:4;:15;;;;50251:86:::0;:::o;22732:524::-;22888:16;22949:3;:10;22930:8;:15;:29;22922:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23018:30;23065:8;:15;23051:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23018:63;;23099:9;23094:122;23118:8;:15;23114:1;:19;23094:122;;;23174:30;23184:8;23193:1;23184:11;;;;;;;;:::i;:::-;;;;;;;;23197:3;23201:1;23197:6;;;;;;;;:::i;:::-;;;;;;;;23174:9;:30::i;:::-;23155:13;23169:1;23155:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;23135:3;;;;:::i;:::-;;;23094:122;;;;23235:13;23228:20;;;22732:524;;;;:::o;48070:18::-;;;;;;;;;;;;;:::o;43420:542::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43568:11:::1;;;;;;;;;;;43567:12;43559:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;43668:7;:14;43651:6;:13;:31;43629:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;43778:1;43762:6;:13;:17;43754:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;43828:9;43823:103;43847:6;:13;43843:1;:17;43823:103;;;43882:32;43892:6;43899:1;43892:9;;;;;;;;:::i;:::-;;;;;;;;43903:7;43911:1;43903:10;;;;;;;;:::i;:::-;;;;;;;;43882:9;:32::i;:::-;43862:3;;;;;:::i;:::-;;;;43823:103;;;;43950:4;43936:11;;:18;;;;;;;;;;;;;;;;;;43420:542:::0;;:::o;2593:94::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2658:21:::1;2676:1;2658:9;:21::i;:::-;2593:94::o:0;50483:122::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50580:17:::1;50564:13;:33;;;;50483:122:::0;:::o;51080:69::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51135:6:::1;;;;;;;;;;;51134:7;51125:6;;:16;;;;;;;;;;;;;;;;;;51080:69::o:0;41385:100::-;41436:7;41463;41471:5;41463:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41456:21;;41385:100;;;:::o;1942:87::-;1988:7;2015:6;;;;;;;;;;;2008:13;;1942:87;:::o;48095:23::-;;;;;;;;;;;;;:::o;41185:109::-;41241:7;41268:9;:18;41278:7;41268:18;;;;;;;;;;;;;;;;41261:25;;41185:109;;;:::o;48019:44::-;;;;;;;;;;;;;;;;;:::o;23329:311::-;23448:8;23432:24;;:12;:10;:12::i;:::-;:24;;;;23424:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;23560:8;23515:18;:32;23534:12;:10;:12::i;:::-;23515:32;;;;;;;;;;;;;;;:42;23548:8;23515:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23613:8;23584:48;;23599:12;:10;:12::i;:::-;23584:48;;;23623:8;23584:48;;;;;;:::i;:::-;;;;;;;;23329:311;;:::o;51212:90::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51283:11:::1;;;;;;;;;;;51282:12;51268:11;;:26;;;;;;;;;;;;;;;;;;51212:90::o:0;51941:133::-;52033:29;52039:10;52051:2;52055:6;52033:5;:29::i;:::-;51941:133;;:::o;40981:105::-;41035:7;41062;:16;41070:7;41062:16;;;;;;;;;;;;;;;;41055:23;;40981:105;;;:::o;47941:32::-;;;;:::o;48125:44::-;48164:5;48125:44;:::o;40795:95::-;40841:7;40868:14;;40861:21;;40795:95;:::o;51409:277::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51564:7:::1;:14;51548:5;:12;:30;51540:39;;;::::0;::::1;;51595:9;51590:88;51614:5;:12;51610:1;:16;51590:88;;;51668:7;51676:1;51668:10;;;;;;;;:::i;:::-;;;;;;;;51646:9;:19;51656:5;51662:1;51656:8;;;;;;;;:::i;:::-;;;;;;;;51646:19;;;;;;;;;;;;;;;:32;;;;51628:3;;;;;:::i;:::-;;;;51590:88;;;;51409:277:::0;;:::o;23712:168::-;23811:4;23835:18;:27;23854:7;23835:27;;;;;;;;;;;;;;;:37;23863:8;23835:37;;;;;;;;;;;;;;;;;;;;;;;;;23828:44;;23712:168;;;;:::o;23952:401::-;24168:12;:10;:12::i;:::-;24160:20;;:4;:20;;;:60;;;;24184:36;24201:4;24207:12;:10;:12::i;:::-;24184:16;:36::i;:::-;24160:60;24138:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;24300:45;24318:4;24324:2;24328;24332:6;24340:4;24300:17;:45::i;:::-;23952:401;;;;;:::o;2842:192::-;2173:12;:10;:12::i;:::-;2162:23;;:7;:5;:7::i;:::-;:23;;;2154:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2951:1:::1;2931:22;;:8;:22;;;;2923:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3007:19;3017:8;3007:9;:19::i;:::-;2842:192:::0;:::o;20177:157::-;20262:4;20301:25;20286:40;;;:11;:40;;;;20279:47;;20177:157;;;:::o;726:98::-;779:7;806:10;799:17;;726:98;:::o;28432:88::-;28506:6;28499:4;:13;;;;;;;;;;;;:::i;:::-;;28432:88;:::o;28921:599::-;29098:1;29079:21;;:7;:21;;;;29071:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29151:16;29170:12;:10;:12::i;:::-;29151:31;;29195:107;29216:8;29234:1;29238:7;29247:21;29265:2;29247:17;:21::i;:::-;29270:25;29288:6;29270:17;:25::i;:::-;29297:4;29195:20;:107::i;:::-;29341:6;29315:9;:13;29325:2;29315:13;;;;;;;;;;;:22;29329:7;29315:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;29400:7;29363:57;;29396:1;29363:57;;29378:8;29363:57;;;29409:2;29413:6;29363:57;;;;;;;:::i;:::-;;;;;;;;29433:79;29464:8;29482:1;29486:7;29495:2;29499:6;29507:4;29433:30;:79::i;:::-;29060:460;28921:599;;;;:::o;13364:317::-;13479:6;13454:21;:31;;13446:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:12;13551:9;:14;;13573:6;13551:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13532:52;;;13603:7;13595:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13435:246;13364:317;;:::o;26514:1074::-;26741:7;:14;26727:3;:10;:28;26719:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26833:1;26819:16;;:2;:16;;;;26811:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26890:16;26909:12;:10;:12::i;:::-;26890:31;;26934:60;26955:8;26965:4;26971:2;26975:3;26980:7;26989:4;26934:20;:60::i;:::-;27012:9;27007:421;27031:3;:10;27027:1;:14;27007:421;;;27063:10;27076:3;27080:1;27076:6;;;;;;;;:::i;:::-;;;;;;;;27063:19;;27097:14;27114:7;27122:1;27114:10;;;;;;;;:::i;:::-;;;;;;;;27097:27;;27141:19;27163:9;:13;27173:2;27163:13;;;;;;;;;;;:19;27177:4;27163:19;;;;;;;;;;;;;;;;27141:41;;27220:6;27205:11;:21;;27197:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;27353:6;27339:11;:20;27317:9;:13;27327:2;27317:13;;;;;;;;;;;:19;27331:4;27317:19;;;;;;;;;;;;;;;:42;;;;27410:6;27389:9;:13;27399:2;27389:13;;;;;;;;;;;:17;27403:2;27389:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27048:380;;;27043:3;;;;:::i;:::-;;;27007:421;;;;27475:2;27445:47;;27469:4;27445:47;;27459:8;27445:47;;;27479:3;27484:7;27445:47;;;;;;;:::i;:::-;;;;;;;;27505:75;27541:8;27551:4;27557:2;27561:3;27566:7;27575:4;27505:35;:75::i;:::-;26708:880;26514:1074;;;;;:::o;42599:514::-;42713:1;42694:21;;:7;:21;;;;42672:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;42799:1;42789:7;:11;42781:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;42887:1;42867:7;:16;42875:7;42867:16;;;;;;;;;;;;;;;;:21;42845:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;42955:7;42968;42955:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43006:7;42987;:16;42995:7;42987:16;;;;;;;;;;;;;;;:26;;;;43054:7;43039:12;;:22;;;;:::i;:::-;43024:12;:37;;;;43077:28;43088:7;43097;43077:28;;;;;;;:::i;:::-;;;;;;;;42599:514;;:::o;3042:173::-;3098:16;3117:6;;;;;;;;;;;3098:25;;3143:8;3134:6;;:17;;;;;;;;;;;;;;;;;;3198:8;3167:40;;3188:8;3167:40;;;;;;;;;;;;3087:128;3042:173;:::o;30870:675::-;31019:1;31000:21;;:7;:21;;;;30992:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;31074:16;31093:12;:10;:12::i;:::-;31074:31;;31118:105;31139:8;31149:7;31166:1;31170:21;31188:2;31170:17;:21::i;:::-;31193:25;31211:6;31193:17;:25::i;:::-;31118:105;;;;;;;;;;;;:20;:105::i;:::-;31236:22;31261:9;:13;31271:2;31261:13;;;;;;;;;;;:22;31275:7;31261:22;;;;;;;;;;;;;;;;31236:47;;31320:6;31302:14;:24;;31294:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31445:6;31428:14;:23;31403:9;:13;31413:2;31403:13;;;;;;;;;;;:22;31417:7;31403:22;;;;;;;;;;;;;;;:48;;;;31522:1;31480:57;;31505:7;31480:57;;31495:8;31480:57;;;31526:2;31530:6;31480:57;;;;;;;:::i;:::-;;;;;;;;30981:564;;30870:675;;;:::o;25336:820::-;25538:1;25524:16;;:2;:16;;;;25516:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25595:16;25614:12;:10;:12::i;:::-;25595:31;;25639:96;25660:8;25670:4;25676:2;25680:21;25698:2;25680:17;:21::i;:::-;25703:25;25721:6;25703:17;:25::i;:::-;25730:4;25639:20;:96::i;:::-;25748:19;25770:9;:13;25780:2;25770:13;;;;;;;;;;;:19;25784:4;25770:19;;;;;;;;;;;;;;;;25748:41;;25823:6;25808:11;:21;;25800:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25948:6;25934:11;:20;25912:9;:13;25922:2;25912:13;;;;;;;;;;;:19;25926:4;25912:19;;;;;;;;;;;;;;;:42;;;;25997:6;25976:9;:13;25986:2;25976:13;;;;;;;;;;;:17;25990:2;25976:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26052:2;26021:46;;26046:4;26021:46;;26036:8;26021:46;;;26056:2;26060:6;26021:46;;;;;;;:::i;:::-;;;;;;;;26080:68;26111:8;26121:4;26127:2;26131;26135:6;26143:4;26080:30;:68::i;:::-;25505:651;;25336:820;;;;;:::o;35424:198::-;35490:16;35519:22;35558:1;35544:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35519:41;;35582:7;35571:5;35577:1;35571:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;35609:5;35602:12;;;35424:198;;;:::o;33622:221::-;;;;;;;:::o;33851:744::-;34066:15;:2;:13;;;:15::i;:::-;34062:526;;;34119:2;34102:38;;;34141:8;34151:4;34157:2;34161:6;34169:4;34102:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34098:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;34450:6;34443:14;;;;;;;;;;;:::i;:::-;;;;;;;;34098:479;;;34499:62;;;;;;;;;;:::i;:::-;;;;;;;;34098:479;34236:43;;;34224:55;;;:8;:55;;;;34220:154;;34304:50;;;;;;;;;;:::i;:::-;;;;;;;;34220:154;34175:214;34062:526;33851:744;;;;;;:::o;34603:813::-;34843:15;:2;:13;;;:15::i;:::-;34839:570;;;34896:2;34879:43;;;34923:8;34933:4;34939:3;34944:7;34953:4;34879:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34875:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35271:6;35264:14;;;;;;;;;;;:::i;:::-;;;;;;;;34875:523;;;35320:62;;;;;;;;;;:::i;:::-;;;;;;;;34875:523;35052:48;;;35040:60;;;:8;:60;;;;35036:159;;35125:50;;;;;;;;;;:::i;:::-;;;;;;;;35036:159;34959:251;34839:570;34603:813;;;;;;:::o;12042:387::-;12102:4;12310:12;12377:7;12365:20;12357:28;;12420:1;12413:4;:8;12406:15;;;12042:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2476:155::-;2530:5;2568:6;2555:20;2546:29;;2584:41;2619:5;2584:41;:::i;:::-;2476:155;;;;:::o;2654:370::-;2725:5;2774:3;2767:4;2759:6;2755:17;2751:27;2741:122;;2782:79;;:::i;:::-;2741:122;2899:6;2886:20;2924:94;3014:3;3006:6;2999:4;2991:6;2987:17;2924:94;:::i;:::-;2915:103;;2731:293;2654:370;;;;:::o;3047:::-;3118:5;3167:3;3160:4;3152:6;3148:17;3144:27;3134:122;;3175:79;;:::i;:::-;3134:122;3292:6;3279:20;3317:94;3407:3;3399:6;3392:4;3384:6;3380:17;3317:94;:::i;:::-;3308:103;;3124:293;3047:370;;;;:::o;3423:133::-;3466:5;3504:6;3491:20;3482:29;;3520:30;3544:5;3520:30;:::i;:::-;3423:133;;;;:::o;3562:137::-;3607:5;3645:6;3632:20;3623:29;;3661:32;3687:5;3661:32;:::i;:::-;3562:137;;;;:::o;3705:141::-;3761:5;3792:6;3786:13;3777:22;;3808:32;3834:5;3808:32;:::i;:::-;3705:141;;;;:::o;3865:338::-;3920:5;3969:3;3962:4;3954:6;3950:17;3946:27;3936:122;;3977:79;;:::i;:::-;3936:122;4094:6;4081:20;4119:78;4193:3;4185:6;4178:4;4170:6;4166:17;4119:78;:::i;:::-;4110:87;;3926:277;3865:338;;;;:::o;4223:340::-;4279:5;4328:3;4321:4;4313:6;4309:17;4305:27;4295:122;;4336:79;;:::i;:::-;4295:122;4453:6;4440:20;4478:79;4553:3;4545:6;4538:4;4530:6;4526:17;4478:79;:::i;:::-;4469:88;;4285:278;4223:340;;;;:::o;4569:139::-;4615:5;4653:6;4640:20;4631:29;;4669:33;4696:5;4669:33;:::i;:::-;4569:139;;;;:::o;4714:329::-;4773:6;4822:2;4810:9;4801:7;4797:23;4793:32;4790:119;;;4828:79;;:::i;:::-;4790:119;4948:1;4973:53;5018:7;5009:6;4998:9;4994:22;4973:53;:::i;:::-;4963:63;;4919:117;4714:329;;;;:::o;5049:345::-;5116:6;5165:2;5153:9;5144:7;5140:23;5136:32;5133:119;;;5171:79;;:::i;:::-;5133:119;5291:1;5316:61;5369:7;5360:6;5349:9;5345:22;5316:61;:::i;:::-;5306:71;;5262:125;5049:345;;;;:::o;5400:474::-;5468:6;5476;5525:2;5513:9;5504:7;5500:23;5496:32;5493:119;;;5531:79;;:::i;:::-;5493:119;5651:1;5676:53;5721:7;5712:6;5701:9;5697:22;5676:53;:::i;:::-;5666:63;;5622:117;5778:2;5804:53;5849:7;5840:6;5829:9;5825:22;5804:53;:::i;:::-;5794:63;;5749:118;5400:474;;;;;:::o;5880:1509::-;6034:6;6042;6050;6058;6066;6115:3;6103:9;6094:7;6090:23;6086:33;6083:120;;;6122:79;;:::i;:::-;6083:120;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6525:2;6514:9;6510:18;6497:32;6556:18;6548:6;6545:30;6542:117;;;6578:79;;:::i;:::-;6542:117;6683:78;6753:7;6744:6;6733:9;6729:22;6683:78;:::i;:::-;6673:88;;6468:303;6838:2;6827:9;6823:18;6810:32;6869:18;6861:6;6858:30;6855:117;;;6891:79;;:::i;:::-;6855:117;6996:78;7066:7;7057:6;7046:9;7042:22;6996:78;:::i;:::-;6986:88;;6781:303;7151:3;7140:9;7136:19;7123:33;7183:18;7175:6;7172:30;7169:117;;;7205:79;;:::i;:::-;7169:117;7310:62;7364:7;7355:6;7344:9;7340:22;7310:62;:::i;:::-;7300:72;;7094:288;5880:1509;;;;;;;;:::o;7395:1089::-;7499:6;7507;7515;7523;7531;7580:3;7568:9;7559:7;7555:23;7551:33;7548:120;;;7587:79;;:::i;:::-;7548:120;7707:1;7732:53;7777:7;7768:6;7757:9;7753:22;7732:53;:::i;:::-;7722:63;;7678:117;7834:2;7860:53;7905:7;7896:6;7885:9;7881:22;7860:53;:::i;:::-;7850:63;;7805:118;7962:2;7988:53;8033:7;8024:6;8013:9;8009:22;7988:53;:::i;:::-;7978:63;;7933:118;8090:2;8116:53;8161:7;8152:6;8141:9;8137:22;8116:53;:::i;:::-;8106:63;;8061:118;8246:3;8235:9;8231:19;8218:33;8278:18;8270:6;8267:30;8264:117;;;8300:79;;:::i;:::-;8264:117;8405:62;8459:7;8450:6;8439:9;8435:22;8405:62;:::i;:::-;8395:72;;8189:288;7395:1089;;;;;;;;:::o;8490:468::-;8555:6;8563;8612:2;8600:9;8591:7;8587:23;8583:32;8580:119;;;8618:79;;:::i;:::-;8580:119;8738:1;8763:53;8808:7;8799:6;8788:9;8784:22;8763:53;:::i;:::-;8753:63;;8709:117;8865:2;8891:50;8933:7;8924:6;8913:9;8909:22;8891:50;:::i;:::-;8881:60;;8836:115;8490:468;;;;;:::o;8964:474::-;9032:6;9040;9089:2;9077:9;9068:7;9064:23;9060:32;9057:119;;;9095:79;;:::i;:::-;9057:119;9215:1;9240:53;9285:7;9276:6;9265:9;9261:22;9240:53;:::i;:::-;9230:63;;9186:117;9342:2;9368:53;9413:7;9404:6;9393:9;9389:22;9368:53;:::i;:::-;9358:63;;9313:118;8964:474;;;;;:::o;9444:619::-;9521:6;9529;9537;9586:2;9574:9;9565:7;9561:23;9557:32;9554:119;;;9592:79;;:::i;:::-;9554:119;9712:1;9737:53;9782:7;9773:6;9762:9;9758:22;9737:53;:::i;:::-;9727:63;;9683:117;9839:2;9865:53;9910:7;9901:6;9890:9;9886:22;9865:53;:::i;:::-;9855:63;;9810:118;9967:2;9993:53;10038:7;10029:6;10018:9;10014:22;9993:53;:::i;:::-;9983:63;;9938:118;9444:619;;;;;:::o;10069:894::-;10187:6;10195;10244:2;10232:9;10223:7;10219:23;10215:32;10212:119;;;10250:79;;:::i;:::-;10212:119;10398:1;10387:9;10383:17;10370:31;10428:18;10420:6;10417:30;10414:117;;;10450:79;;:::i;:::-;10414:117;10555:78;10625:7;10616:6;10605:9;10601:22;10555:78;:::i;:::-;10545:88;;10341:302;10710:2;10699:9;10695:18;10682:32;10741:18;10733:6;10730:30;10727:117;;;10763:79;;:::i;:::-;10727:117;10868:78;10938:7;10929:6;10918:9;10914:22;10868:78;:::i;:::-;10858:88;;10653:303;10069:894;;;;;:::o;10969:327::-;11027:6;11076:2;11064:9;11055:7;11051:23;11047:32;11044:119;;;11082:79;;:::i;:::-;11044:119;11202:1;11227:52;11271:7;11262:6;11251:9;11247:22;11227:52;:::i;:::-;11217:62;;11173:116;10969:327;;;;:::o;11302:349::-;11371:6;11420:2;11408:9;11399:7;11395:23;11391:32;11388:119;;;11426:79;;:::i;:::-;11388:119;11546:1;11571:63;11626:7;11617:6;11606:9;11602:22;11571:63;:::i;:::-;11561:73;;11517:127;11302:349;;;;:::o;11657:509::-;11726:6;11775:2;11763:9;11754:7;11750:23;11746:32;11743:119;;;11781:79;;:::i;:::-;11743:119;11929:1;11918:9;11914:17;11901:31;11959:18;11951:6;11948:30;11945:117;;;11981:79;;:::i;:::-;11945:117;12086:63;12141:7;12132:6;12121:9;12117:22;12086:63;:::i;:::-;12076:73;;11872:287;11657:509;;;;:::o;12172:329::-;12231:6;12280:2;12268:9;12259:7;12255:23;12251:32;12248:119;;;12286:79;;:::i;:::-;12248:119;12406:1;12431:53;12476:7;12467:6;12456:9;12452:22;12431:53;:::i;:::-;12421:63;;12377:117;12172:329;;;;:::o;12507:474::-;12575:6;12583;12632:2;12620:9;12611:7;12607:23;12603:32;12600:119;;;12638:79;;:::i;:::-;12600:119;12758:1;12783:53;12828:7;12819:6;12808:9;12804:22;12783:53;:::i;:::-;12773:63;;12729:117;12885:2;12911:53;12956:7;12947:6;12936:9;12932:22;12911:53;:::i;:::-;12901:63;;12856:118;12507:474;;;;;:::o;12987:179::-;13056:10;13077:46;13119:3;13111:6;13077:46;:::i;:::-;13155:4;13150:3;13146:14;13132:28;;12987:179;;;;:::o;13172:::-;13241:10;13262:46;13304:3;13296:6;13262:46;:::i;:::-;13340:4;13335:3;13331:14;13317:28;;13172:179;;;;:::o;13357:147::-;13452:45;13491:5;13452:45;:::i;:::-;13447:3;13440:58;13357:147;;:::o;13510:108::-;13587:24;13605:5;13587:24;:::i;:::-;13582:3;13575:37;13510:108;;:::o;13624:118::-;13711:24;13729:5;13711:24;:::i;:::-;13706:3;13699:37;13624:118;;:::o;13778:732::-;13897:3;13926:54;13974:5;13926:54;:::i;:::-;13996:86;14075:6;14070:3;13996:86;:::i;:::-;13989:93;;14106:56;14156:5;14106:56;:::i;:::-;14185:7;14216:1;14201:284;14226:6;14223:1;14220:13;14201:284;;;14302:6;14296:13;14329:63;14388:3;14373:13;14329:63;:::i;:::-;14322:70;;14415:60;14468:6;14415:60;:::i;:::-;14405:70;;14261:224;14248:1;14245;14241:9;14236:14;;14201:284;;;14205:14;14501:3;14494:10;;13902:608;;;13778:732;;;;:::o;14546:::-;14665:3;14694:54;14742:5;14694:54;:::i;:::-;14764:86;14843:6;14838:3;14764:86;:::i;:::-;14757:93;;14874:56;14924:5;14874:56;:::i;:::-;14953:7;14984:1;14969:284;14994:6;14991:1;14988:13;14969:284;;;15070:6;15064:13;15097:63;15156:3;15141:13;15097:63;:::i;:::-;15090:70;;15183:60;15236:6;15183:60;:::i;:::-;15173:70;;15029:224;15016:1;15013;15009:9;15004:14;;14969:284;;;14973:14;15269:3;15262:10;;14670:608;;;14546:732;;;;:::o;15284:109::-;15365:21;15380:5;15365:21;:::i;:::-;15360:3;15353:34;15284:109;;:::o;15399:360::-;15485:3;15513:38;15545:5;15513:38;:::i;:::-;15567:70;15630:6;15625:3;15567:70;:::i;:::-;15560:77;;15646:52;15691:6;15686:3;15679:4;15672:5;15668:16;15646:52;:::i;:::-;15723:29;15745:6;15723:29;:::i;:::-;15718:3;15714:39;15707:46;;15489:270;15399:360;;;;:::o;15765:364::-;15853:3;15881:39;15914:5;15881:39;:::i;:::-;15936:71;16000:6;15995:3;15936:71;:::i;:::-;15929:78;;16016:52;16061:6;16056:3;16049:4;16042:5;16038:16;16016:52;:::i;:::-;16093:29;16115:6;16093:29;:::i;:::-;16088:3;16084:39;16077:46;;15857:272;15765:364;;;;:::o;16135:366::-;16277:3;16298:67;16362:2;16357:3;16298:67;:::i;:::-;16291:74;;16374:93;16463:3;16374:93;:::i;:::-;16492:2;16487:3;16483:12;16476:19;;16135:366;;;:::o;16507:::-;16649:3;16670:67;16734:2;16729:3;16670:67;:::i;:::-;16663:74;;16746:93;16835:3;16746:93;:::i;:::-;16864:2;16859:3;16855:12;16848:19;;16507:366;;;:::o;16879:::-;17021:3;17042:67;17106:2;17101:3;17042:67;:::i;:::-;17035:74;;17118:93;17207:3;17118:93;:::i;:::-;17236:2;17231:3;17227:12;17220:19;;16879:366;;;:::o;17251:::-;17393:3;17414:67;17478:2;17473:3;17414:67;:::i;:::-;17407:74;;17490:93;17579:3;17490:93;:::i;:::-;17608:2;17603:3;17599:12;17592:19;;17251:366;;;:::o;17623:::-;17765:3;17786:67;17850:2;17845:3;17786:67;:::i;:::-;17779:74;;17862:93;17951:3;17862:93;:::i;:::-;17980:2;17975:3;17971:12;17964:19;;17623:366;;;:::o;17995:::-;18137:3;18158:67;18222:2;18217:3;18158:67;:::i;:::-;18151:74;;18234:93;18323:3;18234:93;:::i;:::-;18352:2;18347:3;18343:12;18336:19;;17995:366;;;:::o;18367:::-;18509:3;18530:67;18594:2;18589:3;18530:67;:::i;:::-;18523:74;;18606:93;18695:3;18606:93;:::i;:::-;18724:2;18719:3;18715:12;18708:19;;18367:366;;;:::o;18739:::-;18881:3;18902:67;18966:2;18961:3;18902:67;:::i;:::-;18895:74;;18978:93;19067:3;18978:93;:::i;:::-;19096:2;19091:3;19087:12;19080:19;;18739:366;;;:::o;19111:::-;19253:3;19274:67;19338:2;19333:3;19274:67;:::i;:::-;19267:74;;19350:93;19439:3;19350:93;:::i;:::-;19468:2;19463:3;19459:12;19452:19;;19111:366;;;:::o;19483:::-;19625:3;19646:67;19710:2;19705:3;19646:67;:::i;:::-;19639:74;;19722:93;19811:3;19722:93;:::i;:::-;19840:2;19835:3;19831:12;19824:19;;19483:366;;;:::o;19855:::-;19997:3;20018:67;20082:2;20077:3;20018:67;:::i;:::-;20011:74;;20094:93;20183:3;20094:93;:::i;:::-;20212:2;20207:3;20203:12;20196:19;;19855:366;;;:::o;20227:::-;20369:3;20390:67;20454:2;20449:3;20390:67;:::i;:::-;20383:74;;20466:93;20555:3;20466:93;:::i;:::-;20584:2;20579:3;20575:12;20568:19;;20227:366;;;:::o;20599:::-;20741:3;20762:67;20826:2;20821:3;20762:67;:::i;:::-;20755:74;;20838:93;20927:3;20838:93;:::i;:::-;20956:2;20951:3;20947:12;20940:19;;20599:366;;;:::o;20971:::-;21113:3;21134:67;21198:2;21193:3;21134:67;:::i;:::-;21127:74;;21210:93;21299:3;21210:93;:::i;:::-;21328:2;21323:3;21319:12;21312:19;;20971:366;;;:::o;21343:::-;21485:3;21506:67;21570:2;21565:3;21506:67;:::i;:::-;21499:74;;21582:93;21671:3;21582:93;:::i;:::-;21700:2;21695:3;21691:12;21684:19;;21343:366;;;:::o;21715:::-;21857:3;21878:67;21942:2;21937:3;21878:67;:::i;:::-;21871:74;;21954:93;22043:3;21954:93;:::i;:::-;22072:2;22067:3;22063:12;22056:19;;21715:366;;;:::o;22087:::-;22229:3;22250:67;22314:2;22309:3;22250:67;:::i;:::-;22243:74;;22326:93;22415:3;22326:93;:::i;:::-;22444:2;22439:3;22435:12;22428:19;;22087:366;;;:::o;22459:::-;22601:3;22622:67;22686:2;22681:3;22622:67;:::i;:::-;22615:74;;22698:93;22787:3;22698:93;:::i;:::-;22816:2;22811:3;22807:12;22800:19;;22459:366;;;:::o;22831:::-;22973:3;22994:67;23058:2;23053:3;22994:67;:::i;:::-;22987:74;;23070:93;23159:3;23070:93;:::i;:::-;23188:2;23183:3;23179:12;23172:19;;22831:366;;;:::o;23203:::-;23345:3;23366:67;23430:2;23425:3;23366:67;:::i;:::-;23359:74;;23442:93;23531:3;23442:93;:::i;:::-;23560:2;23555:3;23551:12;23544:19;;23203:366;;;:::o;23575:::-;23717:3;23738:67;23802:2;23797:3;23738:67;:::i;:::-;23731:74;;23814:93;23903:3;23814:93;:::i;:::-;23932:2;23927:3;23923:12;23916:19;;23575:366;;;:::o;23947:::-;24089:3;24110:67;24174:2;24169:3;24110:67;:::i;:::-;24103:74;;24186:93;24275:3;24186:93;:::i;:::-;24304:2;24299:3;24295:12;24288:19;;23947:366;;;:::o;24319:398::-;24478:3;24499:83;24580:1;24575:3;24499:83;:::i;:::-;24492:90;;24591:93;24680:3;24591:93;:::i;:::-;24709:1;24704:3;24700:11;24693:18;;24319:398;;;:::o;24723:366::-;24865:3;24886:67;24950:2;24945:3;24886:67;:::i;:::-;24879:74;;24962:93;25051:3;24962:93;:::i;:::-;25080:2;25075:3;25071:12;25064:19;;24723:366;;;:::o;25095:::-;25237:3;25258:67;25322:2;25317:3;25258:67;:::i;:::-;25251:74;;25334:93;25423:3;25334:93;:::i;:::-;25452:2;25447:3;25443:12;25436:19;;25095:366;;;:::o;25467:::-;25609:3;25630:67;25694:2;25689:3;25630:67;:::i;:::-;25623:74;;25706:93;25795:3;25706:93;:::i;:::-;25824:2;25819:3;25815:12;25808:19;;25467:366;;;:::o;25839:::-;25981:3;26002:67;26066:2;26061:3;26002:67;:::i;:::-;25995:74;;26078:93;26167:3;26078:93;:::i;:::-;26196:2;26191:3;26187:12;26180:19;;25839:366;;;:::o;26211:::-;26353:3;26374:67;26438:2;26433:3;26374:67;:::i;:::-;26367:74;;26450:93;26539:3;26450:93;:::i;:::-;26568:2;26563:3;26559:12;26552:19;;26211:366;;;:::o;26583:::-;26725:3;26746:67;26810:2;26805:3;26746:67;:::i;:::-;26739:74;;26822:93;26911:3;26822:93;:::i;:::-;26940:2;26935:3;26931:12;26924:19;;26583:366;;;:::o;26955:::-;27097:3;27118:67;27182:2;27177:3;27118:67;:::i;:::-;27111:74;;27194:93;27283:3;27194:93;:::i;:::-;27312:2;27307:3;27303:12;27296:19;;26955:366;;;:::o;27327:::-;27469:3;27490:67;27554:2;27549:3;27490:67;:::i;:::-;27483:74;;27566:93;27655:3;27566:93;:::i;:::-;27684:2;27679:3;27675:12;27668:19;;27327:366;;;:::o;27699:::-;27841:3;27862:67;27926:2;27921:3;27862:67;:::i;:::-;27855:74;;27938:93;28027:3;27938:93;:::i;:::-;28056:2;28051:3;28047:12;28040:19;;27699:366;;;:::o;28071:108::-;28148:24;28166:5;28148:24;:::i;:::-;28143:3;28136:37;28071:108;;:::o;28185:118::-;28272:24;28290:5;28272:24;:::i;:::-;28267:3;28260:37;28185:118;;:::o;28309:379::-;28493:3;28515:147;28658:3;28515:147;:::i;:::-;28508:154;;28679:3;28672:10;;28309:379;;;:::o;28694:222::-;28787:4;28825:2;28814:9;28810:18;28802:26;;28838:71;28906:1;28895:9;28891:17;28882:6;28838:71;:::i;:::-;28694:222;;;;:::o;28922:348::-;29051:4;29089:2;29078:9;29074:18;29066:26;;29102:79;29178:1;29167:9;29163:17;29154:6;29102:79;:::i;:::-;29191:72;29259:2;29248:9;29244:18;29235:6;29191:72;:::i;:::-;28922:348;;;;;:::o;29276:1053::-;29599:4;29637:3;29626:9;29622:19;29614:27;;29651:71;29719:1;29708:9;29704:17;29695:6;29651:71;:::i;:::-;29732:72;29800:2;29789:9;29785:18;29776:6;29732:72;:::i;:::-;29851:9;29845:4;29841:20;29836:2;29825:9;29821:18;29814:48;29879:108;29982:4;29973:6;29879:108;:::i;:::-;29871:116;;30034:9;30028:4;30024:20;30019:2;30008:9;30004:18;29997:48;30062:108;30165:4;30156:6;30062:108;:::i;:::-;30054:116;;30218:9;30212:4;30208:20;30202:3;30191:9;30187:19;30180:49;30246:76;30317:4;30308:6;30246:76;:::i;:::-;30238:84;;29276:1053;;;;;;;;:::o;30335:751::-;30558:4;30596:3;30585:9;30581:19;30573:27;;30610:71;30678:1;30667:9;30663:17;30654:6;30610:71;:::i;:::-;30691:72;30759:2;30748:9;30744:18;30735:6;30691:72;:::i;:::-;30773;30841:2;30830:9;30826:18;30817:6;30773:72;:::i;:::-;30855;30923:2;30912:9;30908:18;30899:6;30855:72;:::i;:::-;30975:9;30969:4;30965:20;30959:3;30948:9;30944:19;30937:49;31003:76;31074:4;31065:6;31003:76;:::i;:::-;30995:84;;30335:751;;;;;;;;:::o;31092:332::-;31213:4;31251:2;31240:9;31236:18;31228:26;;31264:71;31332:1;31321:9;31317:17;31308:6;31264:71;:::i;:::-;31345:72;31413:2;31402:9;31398:18;31389:6;31345:72;:::i;:::-;31092:332;;;;;:::o;31430:373::-;31573:4;31611:2;31600:9;31596:18;31588:26;;31660:9;31654:4;31650:20;31646:1;31635:9;31631:17;31624:47;31688:108;31791:4;31782:6;31688:108;:::i;:::-;31680:116;;31430:373;;;;:::o;31809:::-;31952:4;31990:2;31979:9;31975:18;31967:26;;32039:9;32033:4;32029:20;32025:1;32014:9;32010:17;32003:47;32067:108;32170:4;32161:6;32067:108;:::i;:::-;32059:116;;31809:373;;;;:::o;32188:634::-;32409:4;32447:2;32436:9;32432:18;32424:26;;32496:9;32490:4;32486:20;32482:1;32471:9;32467:17;32460:47;32524:108;32627:4;32618:6;32524:108;:::i;:::-;32516:116;;32679:9;32673:4;32669:20;32664:2;32653:9;32649:18;32642:48;32707:108;32810:4;32801:6;32707:108;:::i;:::-;32699:116;;32188:634;;;;;:::o;32828:210::-;32915:4;32953:2;32942:9;32938:18;32930:26;;32966:65;33028:1;33017:9;33013:17;33004:6;32966:65;:::i;:::-;32828:210;;;;:::o;33044:313::-;33157:4;33195:2;33184:9;33180:18;33172:26;;33244:9;33238:4;33234:20;33230:1;33219:9;33215:17;33208:47;33272:78;33345:4;33336:6;33272:78;:::i;:::-;33264:86;;33044:313;;;;:::o;33363:419::-;33529:4;33567:2;33556:9;33552:18;33544:26;;33616:9;33610:4;33606:20;33602:1;33591:9;33587:17;33580:47;33644:131;33770:4;33644:131;:::i;:::-;33636:139;;33363:419;;;:::o;33788:::-;33954:4;33992:2;33981:9;33977:18;33969:26;;34041:9;34035:4;34031:20;34027:1;34016:9;34012:17;34005:47;34069:131;34195:4;34069:131;:::i;:::-;34061:139;;33788:419;;;:::o;34213:::-;34379:4;34417:2;34406:9;34402:18;34394:26;;34466:9;34460:4;34456:20;34452:1;34441:9;34437:17;34430:47;34494:131;34620:4;34494:131;:::i;:::-;34486:139;;34213:419;;;:::o;34638:::-;34804:4;34842:2;34831:9;34827:18;34819:26;;34891:9;34885:4;34881:20;34877:1;34866:9;34862:17;34855:47;34919:131;35045:4;34919:131;:::i;:::-;34911:139;;34638:419;;;:::o;35063:::-;35229:4;35267:2;35256:9;35252:18;35244:26;;35316:9;35310:4;35306:20;35302:1;35291:9;35287:17;35280:47;35344:131;35470:4;35344:131;:::i;:::-;35336:139;;35063:419;;;:::o;35488:::-;35654:4;35692:2;35681:9;35677:18;35669:26;;35741:9;35735:4;35731:20;35727:1;35716:9;35712:17;35705:47;35769:131;35895:4;35769:131;:::i;:::-;35761:139;;35488:419;;;:::o;35913:::-;36079:4;36117:2;36106:9;36102:18;36094:26;;36166:9;36160:4;36156:20;36152:1;36141:9;36137:17;36130:47;36194:131;36320:4;36194:131;:::i;:::-;36186:139;;35913:419;;;:::o;36338:::-;36504:4;36542:2;36531:9;36527:18;36519:26;;36591:9;36585:4;36581:20;36577:1;36566:9;36562:17;36555:47;36619:131;36745:4;36619:131;:::i;:::-;36611:139;;36338:419;;;:::o;36763:::-;36929:4;36967:2;36956:9;36952:18;36944:26;;37016:9;37010:4;37006:20;37002:1;36991:9;36987:17;36980:47;37044:131;37170:4;37044:131;:::i;:::-;37036:139;;36763:419;;;:::o;37188:::-;37354:4;37392:2;37381:9;37377:18;37369:26;;37441:9;37435:4;37431:20;37427:1;37416:9;37412:17;37405:47;37469:131;37595:4;37469:131;:::i;:::-;37461:139;;37188:419;;;:::o;37613:::-;37779:4;37817:2;37806:9;37802:18;37794:26;;37866:9;37860:4;37856:20;37852:1;37841:9;37837:17;37830:47;37894:131;38020:4;37894:131;:::i;:::-;37886:139;;37613:419;;;:::o;38038:::-;38204:4;38242:2;38231:9;38227:18;38219:26;;38291:9;38285:4;38281:20;38277:1;38266:9;38262:17;38255:47;38319:131;38445:4;38319:131;:::i;:::-;38311:139;;38038:419;;;:::o;38463:::-;38629:4;38667:2;38656:9;38652:18;38644:26;;38716:9;38710:4;38706:20;38702:1;38691:9;38687:17;38680:47;38744:131;38870:4;38744:131;:::i;:::-;38736:139;;38463:419;;;:::o;38888:::-;39054:4;39092:2;39081:9;39077:18;39069:26;;39141:9;39135:4;39131:20;39127:1;39116:9;39112:17;39105:47;39169:131;39295:4;39169:131;:::i;:::-;39161:139;;38888:419;;;:::o;39313:::-;39479:4;39517:2;39506:9;39502:18;39494:26;;39566:9;39560:4;39556:20;39552:1;39541:9;39537:17;39530:47;39594:131;39720:4;39594:131;:::i;:::-;39586:139;;39313:419;;;:::o;39738:::-;39904:4;39942:2;39931:9;39927:18;39919:26;;39991:9;39985:4;39981:20;39977:1;39966:9;39962:17;39955:47;40019:131;40145:4;40019:131;:::i;:::-;40011:139;;39738:419;;;:::o;40163:::-;40329:4;40367:2;40356:9;40352:18;40344:26;;40416:9;40410:4;40406:20;40402:1;40391:9;40387:17;40380:47;40444:131;40570:4;40444:131;:::i;:::-;40436:139;;40163:419;;;:::o;40588:::-;40754:4;40792:2;40781:9;40777:18;40769:26;;40841:9;40835:4;40831:20;40827:1;40816:9;40812:17;40805:47;40869:131;40995:4;40869:131;:::i;:::-;40861:139;;40588:419;;;:::o;41013:::-;41179:4;41217:2;41206:9;41202:18;41194:26;;41266:9;41260:4;41256:20;41252:1;41241:9;41237:17;41230:47;41294:131;41420:4;41294:131;:::i;:::-;41286:139;;41013:419;;;:::o;41438:::-;41604:4;41642:2;41631:9;41627:18;41619:26;;41691:9;41685:4;41681:20;41677:1;41666:9;41662:17;41655:47;41719:131;41845:4;41719:131;:::i;:::-;41711:139;;41438:419;;;:::o;41863:::-;42029:4;42067:2;42056:9;42052:18;42044:26;;42116:9;42110:4;42106:20;42102:1;42091:9;42087:17;42080:47;42144:131;42270:4;42144:131;:::i;:::-;42136:139;;41863:419;;;:::o;42288:::-;42454:4;42492:2;42481:9;42477:18;42469:26;;42541:9;42535:4;42531:20;42527:1;42516:9;42512:17;42505:47;42569:131;42695:4;42569:131;:::i;:::-;42561:139;;42288:419;;;:::o;42713:::-;42879:4;42917:2;42906:9;42902:18;42894:26;;42966:9;42960:4;42956:20;42952:1;42941:9;42937:17;42930:47;42994:131;43120:4;42994:131;:::i;:::-;42986:139;;42713:419;;;:::o;43138:::-;43304:4;43342:2;43331:9;43327:18;43319:26;;43391:9;43385:4;43381:20;43377:1;43366:9;43362:17;43355:47;43419:131;43545:4;43419:131;:::i;:::-;43411:139;;43138:419;;;:::o;43563:::-;43729:4;43767:2;43756:9;43752:18;43744:26;;43816:9;43810:4;43806:20;43802:1;43791:9;43787:17;43780:47;43844:131;43970:4;43844:131;:::i;:::-;43836:139;;43563:419;;;:::o;43988:::-;44154:4;44192:2;44181:9;44177:18;44169:26;;44241:9;44235:4;44231:20;44227:1;44216:9;44212:17;44205:47;44269:131;44395:4;44269:131;:::i;:::-;44261:139;;43988:419;;;:::o;44413:::-;44579:4;44617:2;44606:9;44602:18;44594:26;;44666:9;44660:4;44656:20;44652:1;44641:9;44637:17;44630:47;44694:131;44820:4;44694:131;:::i;:::-;44686:139;;44413:419;;;:::o;44838:::-;45004:4;45042:2;45031:9;45027:18;45019:26;;45091:9;45085:4;45081:20;45077:1;45066:9;45062:17;45055:47;45119:131;45245:4;45119:131;:::i;:::-;45111:139;;44838:419;;;:::o;45263:::-;45429:4;45467:2;45456:9;45452:18;45444:26;;45516:9;45510:4;45506:20;45502:1;45491:9;45487:17;45480:47;45544:131;45670:4;45544:131;:::i;:::-;45536:139;;45263:419;;;:::o;45688:::-;45854:4;45892:2;45881:9;45877:18;45869:26;;45941:9;45935:4;45931:20;45927:1;45916:9;45912:17;45905:47;45969:131;46095:4;45969:131;:::i;:::-;45961:139;;45688:419;;;:::o;46113:::-;46279:4;46317:2;46306:9;46302:18;46294:26;;46366:9;46360:4;46356:20;46352:1;46341:9;46337:17;46330:47;46394:131;46520:4;46394:131;:::i;:::-;46386:139;;46113:419;;;:::o;46538:222::-;46631:4;46669:2;46658:9;46654:18;46646:26;;46682:71;46750:1;46739:9;46735:17;46726:6;46682:71;:::i;:::-;46538:222;;;;:::o;46766:332::-;46887:4;46925:2;46914:9;46910:18;46902:26;;46938:71;47006:1;46995:9;46991:17;46982:6;46938:71;:::i;:::-;47019:72;47087:2;47076:9;47072:18;47063:6;47019:72;:::i;:::-;46766:332;;;;;:::o;47104:129::-;47138:6;47165:20;;:::i;:::-;47155:30;;47194:33;47222:4;47214:6;47194:33;:::i;:::-;47104:129;;;:::o;47239:75::-;47272:6;47305:2;47299:9;47289:19;;47239:75;:::o;47320:311::-;47397:4;47487:18;47479:6;47476:30;47473:56;;;47509:18;;:::i;:::-;47473:56;47559:4;47551:6;47547:17;47539:25;;47619:4;47613;47609:15;47601:23;;47320:311;;;:::o;47637:::-;47714:4;47804:18;47796:6;47793:30;47790:56;;;47826:18;;:::i;:::-;47790:56;47876:4;47868:6;47864:17;47856:25;;47936:4;47930;47926:15;47918:23;;47637:311;;;:::o;47954:307::-;48015:4;48105:18;48097:6;48094:30;48091:56;;;48127:18;;:::i;:::-;48091:56;48165:29;48187:6;48165:29;:::i;:::-;48157:37;;48249:4;48243;48239:15;48231:23;;47954:307;;;:::o;48267:308::-;48329:4;48419:18;48411:6;48408:30;48405:56;;;48441:18;;:::i;:::-;48405:56;48479:29;48501:6;48479:29;:::i;:::-;48471:37;;48563:4;48557;48553:15;48545:23;;48267:308;;;:::o;48581:132::-;48648:4;48671:3;48663:11;;48701:4;48696:3;48692:14;48684:22;;48581:132;;;:::o;48719:::-;48786:4;48809:3;48801:11;;48839:4;48834:3;48830:14;48822:22;;48719:132;;;:::o;48857:114::-;48924:6;48958:5;48952:12;48942:22;;48857:114;;;:::o;48977:::-;49044:6;49078:5;49072:12;49062:22;;48977:114;;;:::o;49097:98::-;49148:6;49182:5;49176:12;49166:22;;49097:98;;;:::o;49201:99::-;49253:6;49287:5;49281:12;49271:22;;49201:99;;;:::o;49306:113::-;49376:4;49408;49403:3;49399:14;49391:22;;49306:113;;;:::o;49425:::-;49495:4;49527;49522:3;49518:14;49510:22;;49425:113;;;:::o;49544:184::-;49643:11;49677:6;49672:3;49665:19;49717:4;49712:3;49708:14;49693:29;;49544:184;;;;:::o;49734:::-;49833:11;49867:6;49862:3;49855:19;49907:4;49902:3;49898:14;49883:29;;49734:184;;;;:::o;49924:168::-;50007:11;50041:6;50036:3;50029:19;50081:4;50076:3;50072:14;50057:29;;49924:168;;;;:::o;50098:147::-;50199:11;50236:3;50221:18;;50098:147;;;;:::o;50251:169::-;50335:11;50369:6;50364:3;50357:19;50409:4;50404:3;50400:14;50385:29;;50251:169;;;;:::o;50426:305::-;50466:3;50485:20;50503:1;50485:20;:::i;:::-;50480:25;;50519:20;50537:1;50519:20;:::i;:::-;50514:25;;50673:1;50605:66;50601:74;50598:1;50595:81;50592:107;;;50679:18;;:::i;:::-;50592:107;50723:1;50720;50716:9;50709:16;;50426:305;;;;:::o;50737:185::-;50777:1;50794:20;50812:1;50794:20;:::i;:::-;50789:25;;50828:20;50846:1;50828:20;:::i;:::-;50823:25;;50867:1;50857:35;;50872:18;;:::i;:::-;50857:35;50914:1;50911;50907:9;50902:14;;50737:185;;;;:::o;50928:348::-;50968:7;50991:20;51009:1;50991:20;:::i;:::-;50986:25;;51025:20;51043:1;51025:20;:::i;:::-;51020:25;;51213:1;51145:66;51141:74;51138:1;51135:81;51130:1;51123:9;51116:17;51112:105;51109:131;;;51220:18;;:::i;:::-;51109:131;51268:1;51265;51261:9;51250:20;;50928:348;;;;:::o;51282:191::-;51322:4;51342:20;51360:1;51342:20;:::i;:::-;51337:25;;51376:20;51394:1;51376:20;:::i;:::-;51371:25;;51415:1;51412;51409:8;51406:34;;;51420:18;;:::i;:::-;51406:34;51465:1;51462;51458:9;51450:17;;51282:191;;;;:::o;51479:96::-;51516:7;51545:24;51563:5;51545:24;:::i;:::-;51534:35;;51479:96;;;:::o;51581:104::-;51626:7;51655:24;51673:5;51655:24;:::i;:::-;51644:35;;51581:104;;;:::o;51691:90::-;51725:7;51768:5;51761:13;51754:21;51743:32;;51691:90;;;:::o;51787:149::-;51823:7;51863:66;51856:5;51852:78;51841:89;;51787:149;;;:::o;51942:126::-;51979:7;52019:42;52012:5;52008:54;51997:65;;51942:126;;;:::o;52074:77::-;52111:7;52140:5;52129:16;;52074:77;;;:::o;52157:134::-;52215:9;52248:37;52279:5;52248:37;:::i;:::-;52235:50;;52157:134;;;:::o;52297:126::-;52347:9;52380:37;52411:5;52380:37;:::i;:::-;52367:50;;52297:126;;;:::o;52429:113::-;52479:9;52512:24;52530:5;52512:24;:::i;:::-;52499:37;;52429:113;;;:::o;52548:154::-;52632:6;52627:3;52622;52609:30;52694:1;52685:6;52680:3;52676:16;52669:27;52548:154;;;:::o;52708:307::-;52776:1;52786:113;52800:6;52797:1;52794:13;52786:113;;;52885:1;52880:3;52876:11;52870:18;52866:1;52861:3;52857:11;52850:39;52822:2;52819:1;52815:10;52810:15;;52786:113;;;52917:6;52914:1;52911:13;52908:101;;;52997:1;52988:6;52983:3;52979:16;52972:27;52908:101;52757:258;52708:307;;;:::o;53021:320::-;53065:6;53102:1;53096:4;53092:12;53082:22;;53149:1;53143:4;53139:12;53170:18;53160:81;;53226:4;53218:6;53214:17;53204:27;;53160:81;53288:2;53280:6;53277:14;53257:18;53254:38;53251:84;;;53307:18;;:::i;:::-;53251:84;53072:269;53021:320;;;:::o;53347:281::-;53430:27;53452:4;53430:27;:::i;:::-;53422:6;53418:40;53560:6;53548:10;53545:22;53524:18;53512:10;53509:34;53506:62;53503:88;;;53571:18;;:::i;:::-;53503:88;53611:10;53607:2;53600:22;53390:238;53347:281;;:::o;53634:233::-;53673:3;53696:24;53714:5;53696:24;:::i;:::-;53687:33;;53742:66;53735:5;53732:77;53729:103;;;53812:18;;:::i;:::-;53729:103;53859:1;53852:5;53848:13;53841:20;;53634:233;;;:::o;53873:180::-;53921:77;53918:1;53911:88;54018:4;54015:1;54008:15;54042:4;54039:1;54032:15;54059:180;54107:77;54104:1;54097:88;54204:4;54201:1;54194:15;54228:4;54225:1;54218:15;54245:180;54293:77;54290:1;54283:88;54390:4;54387:1;54380:15;54414:4;54411:1;54404:15;54431:180;54479:77;54476:1;54469:88;54576:4;54573:1;54566:15;54600:4;54597:1;54590:15;54617:180;54665:77;54662:1;54655:88;54762:4;54759:1;54752:15;54786:4;54783:1;54776:15;54803:183;54838:3;54876:1;54858:16;54855:23;54852:128;;;54914:1;54911;54908;54893:23;54936:34;54967:1;54961:8;54936:34;:::i;:::-;54929:41;;54852:128;54803:183;:::o;54992:117::-;55101:1;55098;55091:12;55115:117;55224:1;55221;55214:12;55238:117;55347:1;55344;55337:12;55361:117;55470:1;55467;55460:12;55484:117;55593:1;55590;55583:12;55607:102;55648:6;55699:2;55695:7;55690:2;55683:5;55679:14;55675:28;55665:38;;55607:102;;;:::o;55715:106::-;55759:8;55808:5;55803:3;55799:15;55778:36;;55715:106;;;:::o;55827:239::-;55967:34;55963:1;55955:6;55951:14;55944:58;56036:22;56031:2;56023:6;56019:15;56012:47;55827:239;:::o;56072:166::-;56212:18;56208:1;56200:6;56196:14;56189:42;56072:166;:::o;56244:169::-;56384:21;56380:1;56372:6;56368:14;56361:45;56244:169;:::o;56419:227::-;56559:34;56555:1;56547:6;56543:14;56536:58;56628:10;56623:2;56615:6;56611:15;56604:35;56419:227;:::o;56652:176::-;56792:28;56788:1;56780:6;56776:14;56769:52;56652:176;:::o;56834:230::-;56974:34;56970:1;56962:6;56958:14;56951:58;57043:13;57038:2;57030:6;57026:15;57019:38;56834:230;:::o;57070:225::-;57210:34;57206:1;57198:6;57194:14;57187:58;57279:8;57274:2;57266:6;57262:15;57255:33;57070:225;:::o;57301:223::-;57441:34;57437:1;57429:6;57425:14;57418:58;57510:6;57505:2;57497:6;57493:15;57486:31;57301:223;:::o;57530:228::-;57670:34;57666:1;57658:6;57654:14;57647:58;57739:11;57734:2;57726:6;57722:15;57715:36;57530:228;:::o;57764:225::-;57904:34;57900:1;57892:6;57888:14;57881:58;57973:8;57968:2;57960:6;57956:15;57949:33;57764:225;:::o;57995:221::-;58135:34;58131:1;58123:6;58119:14;58112:58;58204:4;58199:2;58191:6;58187:15;58180:29;57995:221;:::o;58222:245::-;58362:34;58358:1;58350:6;58346:14;58339:58;58431:28;58426:2;58418:6;58414:15;58407:53;58222:245;:::o;58473:179::-;58613:31;58609:1;58601:6;58597:14;58590:55;58473:179;:::o;58658:176::-;58798:28;58794:1;58786:6;58782:14;58775:52;58658:176;:::o;58840:224::-;58980:34;58976:1;58968:6;58964:14;58957:58;59049:7;59044:2;59036:6;59032:15;59025:32;58840:224;:::o;59070:237::-;59210:34;59206:1;59198:6;59194:14;59187:58;59279:20;59274:2;59266:6;59262:15;59255:45;59070:237;:::o;59313:222::-;59453:34;59449:1;59441:6;59437:14;59430:58;59522:5;59517:2;59509:6;59505:15;59498:30;59313:222;:::o;59541:229::-;59681:34;59677:1;59669:6;59665:14;59658:58;59750:12;59745:2;59737:6;59733:15;59726:37;59541:229;:::o;59776:182::-;59916:34;59912:1;59904:6;59900:14;59893:58;59776:182;:::o;59964:177::-;60104:29;60100:1;60092:6;60088:14;60081:53;59964:177;:::o;60147:178::-;60287:30;60283:1;60275:6;60271:14;60264:54;60147:178;:::o;60331:180::-;60471:32;60467:1;60459:6;60455:14;60448:56;60331:180;:::o;60517:114::-;;:::o;60637:182::-;60777:34;60773:1;60765:6;60761:14;60754:58;60637:182;:::o;60825:228::-;60965:34;60961:1;60953:6;60949:14;60942:58;61034:11;61029:2;61021:6;61017:15;61010:36;60825:228;:::o;61059:::-;61199:34;61195:1;61187:6;61183:14;61176:58;61268:11;61263:2;61255:6;61251:15;61244:36;61059:228;:::o;61293:227::-;61433:34;61429:1;61421:6;61417:14;61410:58;61502:10;61497:2;61489:6;61485:15;61478:35;61293:227;:::o;61526:220::-;61666:34;61662:1;61654:6;61650:14;61643:58;61735:3;61730:2;61722:6;61718:15;61711:28;61526:220;:::o;61752:176::-;61892:28;61888:1;61880:6;61876:14;61869:52;61752:176;:::o;61934:179::-;62074:31;62070:1;62062:6;62058:14;62051:55;61934:179;:::o;62119:164::-;62259:16;62255:1;62247:6;62243:14;62236:40;62119:164;:::o;62289:220::-;62429:34;62425:1;62417:6;62413:14;62406:58;62498:3;62493:2;62485:6;62481:15;62474:28;62289:220;:::o;62515:711::-;62554:3;62592:4;62574:16;62571:26;62568:39;;;62600:5;;62568:39;62629:20;;:::i;:::-;62704:1;62686:16;62682:24;62679:1;62673:4;62658:49;62737:4;62731:11;62836:16;62829:4;62821:6;62817:17;62814:39;62781:18;62773:6;62770:30;62754:113;62751:146;;;62882:5;;;;62751:146;62928:6;62922:4;62918:17;62964:3;62958:10;62991:18;62983:6;62980:30;62977:43;;;63013:5;;;;;;62977:43;63061:6;63054:4;63049:3;63045:14;63041:27;63120:1;63102:16;63098:24;63092:4;63088:35;63083:3;63080:44;63077:57;;;63127:5;;;;;;;63077:57;63144;63192:6;63186:4;63182:17;63174:6;63170:30;63164:4;63144:57;:::i;:::-;63217:3;63210:10;;62558:668;;;;;62515:711;;:::o;63232:122::-;63305:24;63323:5;63305:24;:::i;:::-;63298:5;63295:35;63285:63;;63344:1;63341;63334:12;63285:63;63232:122;:::o;63360:138::-;63441:32;63467:5;63441:32;:::i;:::-;63434:5;63431:43;63421:71;;63488:1;63485;63478:12;63421:71;63360:138;:::o;63504:116::-;63574:21;63589:5;63574:21;:::i;:::-;63567:5;63564:32;63554:60;;63610:1;63607;63600:12;63554:60;63504:116;:::o;63626:120::-;63698:23;63715:5;63698:23;:::i;:::-;63691:5;63688:34;63678:62;;63736:1;63733;63726:12;63678:62;63626:120;:::o;63752:122::-;63825:24;63843:5;63825:24;:::i;:::-;63818:5;63815:35;63805:63;;63864:1;63861;63854:12;63805:63;63752:122;:::o
Swarm Source
ipfs://2659926cbd1188875c9593433c108d44768651b15a0fa2956c4791b2834a62cd
Loading...
Loading
Loading...
Loading
Net Worth in USD
$508.53
Net Worth in ETH
0.244035
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,083.84 | 0.244 | $508.53 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.