ETH Price: $1,883.00 (+0.54%)

Token

Cameo Pass (CAMEOPASS)
 

Overview

Max Total Supply

6,000 CAMEOPASS

Holders

2,716

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x6ba69f60f3ba8191adce6a031ac83e59f05d1637
Loading...
Loading
Loading...
Loading

OVERVIEW

Cameo Pass is a collection of NFTs granting access to Cameo in the metaverse, along with exclusive art from Burnt Toast, Vinnie Hager, and Luke McGarry. Your Cameo Pass will act as your membership pass to an exclusive community of fans, celebrities and web3 enthusiasts and will entitle holders to virtual/IRL events, merch, and maybe some things that have never been attempted before. Cameo’s purpose is to make people say wow and with Cameo Pass we see an opportunity to use web3 to deliver more awesome to people’s lives. Follow @CameoPass on Twitter or visit [pass.cameo.com](https://pass.cameo.com) for more details.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CameoPass

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 22 : CameoPass.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {ERC1155Extended} from "./token/ERC1155Extended.sol";
import {AllowList} from "./util/AllowList.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {TwoStepOwnable} from "./util/TwoStepOwnable.sol";
import {CommissionWithdrawable} from "./util/CommissionWithdrawable.sol";
/*
___ ____ _ __ __ __
/ (_) __/__ (_)___ / /_/ /_ ___ ____ ____ ___________ / /___ _____ ___
/ / / /_/ _ \ / / __ \ / __/ __ \/ _ \ / __ \/ __ `/ ___/ ___/ / / __ `/ __ \/ _ \
/ / / __/ __/ / / / / / / /_/ / / / __/ / /_/ / /_/ (__ |__ ) / / /_/ / / / / __/
/_/_/_/ \___/ /_/_/ /_/ \__/_/ /_/\___/ / .___/\__,_/____/____/ /_/\__,_/_/ /_/\___/
/_/
                                                
*/
contract CameoPass is
ERC1155Extended,
AllowList,
CommissionWithdrawable,
TwoStepOwnable
{
uint256 private tokenIndex;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 22 : TwoStepOwnable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
/**
@notice A two-step extension of Ownable, where the new owner must claim ownership of the contract after owner initiates transfer
Owner can cancel the transfer at any point before the new owner claims ownership.
Helpful in guarding against transferring ownership to an address that is unable to act as the Owner.
*/
abstract contract TwoStepOwnable is Ownable {
address internal _potentialOwner;
error NewOwnerIsZeroAddress();
error NotNextOwner();
///@notice Initiate ownership transfer to _newOwner. Note: new owner will have to manually claimOwnership
///@param _newOwner address of potential new owner
function transferOwnership(address _newOwner)
public
virtual
override
onlyOwner
{
if (_newOwner == address(0)) {
revert NewOwnerIsZeroAddress();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 22 : TimeLock.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
/**
@notice Contract with convenience modifiers for ensuring functions cannot be called until after a certain block.timestamp.
Note: miners/validators can misreport block.timestamp, but discrepancies would be in the magnitude of seconds or maybe minutes, not hours or days.
*/
contract TimeLock is Ownable {
uint256 public unlockTime;
event UpdateUnlockTime(uint256 oldUnlockTime, uint256 newUnlockTime);
error TimeLocked();
constructor(uint256 _unlockTime) {
unlockTime = _unlockTime;
}
///@notice will revert if block.timestamp is before unlockTime
modifier onlyAfterUnlock() {
if (block.timestamp < unlockTime) {
revert TimeLocked();
}
_;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 22 : ProxyRegistry.sol
1
2
3
4
5
6
7
8
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
contract OwnableDelegateProxy {}
contract ProxyRegistry {
mapping(address => OwnableDelegateProxy) public proxies;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 22 : OwnerPausable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol";
///@notice Ownable pausable contract with pause and unpause methods
contract OwnerPausable is Ownable, Pausable {
///@notice pause. OnlyOwner
function pause() external onlyOwner whenNotPaused {
_pause();
}
///@notice Unpause. OnlyOwner
function unpause() external onlyOwner whenPaused {
_unpause();
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 22 : MerkleVerifier.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
///@notice Forked from OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol)
pragma solidity ^0.8.11;
/**
* @dev These functions deal with verification of Merkle Trees proofs.
* @dev converted from a library into a contract since foreign method calls cost extra gas
* The proofs can be generated using the JavaScript library
* https://github.com/miguelmota/merkletreejs[merkletreejs].
* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
*
* See `test/utils/cryptography/MerkleProof.test.js` for some examples.
*/
contract MerkleVerifier {
/**
* @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
* defined by `root`. For this, a `proof` must be provided, containing
* sibling hashes on the branch from the leaf to the root of the tree. Each
* pair of leaves and each pair of pre-images are assumed to be sorted.
*/
function verify(
bytes32[] memory proof,
bytes32 root,
bytes32 leaf
) internal pure returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 22 : MaxMintable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
///@notice Ownable helper contract to keep track of how many times an address has minted
contract MaxMintable is Ownable {
uint256 public maxMintsPerWallet;
mapping(address => uint256) addressToTotalMinted;
error MaxMintedForWallet();
constructor(uint256 _maxMintsPerWallet) {
maxMintsPerWallet = _maxMintsPerWallet;
}
///@notice set maxMintsPerWallet. OnlyOwner
function setMaxMintsPerWallet(uint256 _maxMints) public onlyOwner {
maxMintsPerWallet = _maxMints;
}
///@notice atomically check and increase number of mints for msg.sender
///@param _quantity number of mints
function _ensureWalletMintsAvailableAndIncrement(uint256 _quantity)
internal
{
if (
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 22 : IWithdrawable.sol
1
2
3
4
5
6
7
8
9
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
///@notice Ownable helper contract to withdraw ether or tokens from the contract address balance
interface IWithdrawable {
function withdraw() external;
function withdrawToken(address _tokenAddress) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 22 : IAllowsProxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
interface IAllowsProxy {
function isProxyActive() external view returns (bool);
function proxyAddress() external view returns (address);
function isApprovedForProxy(address _owner, address _operator)
external
view
returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 22 : IAllowList.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
interface IAllowList {
error NotAllowListed();
error MaxAllowListRedemptions();
function isAllowListed(bytes32[] calldata _proof, address _address)
external
view
returns (bool);
function setMerkleRoot(bytes32 _merkleRoot) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 22 : CommissionWithdrawable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
import {IWithdrawable} from "./IWithdrawable.sol";
///@notice Ownable helper contract to withdraw ether or tokens from the contract address balance
contract CommissionWithdrawable is IWithdrawable, Ownable {
address internal immutable commissionPayoutAddress;
uint256 internal immutable commissionPayoutPerMille;
error CommissionPayoutAddressIsZeroAddress();
error CommissionPayoutPerMilleTooLarge();
constructor(
address _commissionPayoutAddress,
uint256 _commissionPayoutPerMille
) {
if (_commissionPayoutAddress == address(0)) {
revert CommissionPayoutAddressIsZeroAddress();
}
if (_commissionPayoutPerMille > 1000) {
revert CommissionPayoutPerMilleTooLarge();
}
commissionPayoutAddress = _commissionPayoutAddress;
commissionPayoutPerMille = _commissionPayoutPerMille;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 22 : AllowsImmutableProxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ProxyRegistry} from "./ProxyRegistry.sol";
import {IAllowsProxy} from "./IAllowsProxy.sol";
///@notice Checks approval against a single proxy address configured at deploy for gas-free trading on a marketplace
contract AllowsImmutableProxy is IAllowsProxy, Ownable {
address internal immutable proxyAddress_;
bool internal isProxyActive_;
constructor(address _proxyAddress, bool _isProxyActive) {
proxyAddress_ = _proxyAddress;
isProxyActive_ = _isProxyActive;
}
///@notice toggles proxy check in isApprovedForProxy. Proxy can be disabled in emergency circumstances. OnlyOwner
function setIsProxyActive(bool _isProxyActive) external onlyOwner {
isProxyActive_ = _isProxyActive;
}
function proxyAddress() public view returns (address) {
return proxyAddress_;
}
function isProxyActive() public view returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 22 : AllowList.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {MerkleVerifier} from "./MerkleVerifier.sol";
import {IAllowList} from "./IAllowList.sol";
///@notice Smart contract that verifies and tracks allow list redemptions against a configurable Merkle root, up to a max number configured at deploy
contract AllowList is MerkleVerifier, Ownable {
uint256 public immutable MAX_REDEMPTIONS_PER_ADDRESS;
bytes32 public merkleRoot;
mapping(address => uint256) addressRedemptions;
error NotAllowListed();
error MaxAllowListRedemptions();
constructor(uint256 _maxRedemptions, bytes32 _merkleRoot) {
MAX_REDEMPTIONS_PER_ADDRESS = _maxRedemptions;
merkleRoot = _merkleRoot;
}
///@notice Checks if msg.sender is included in AllowList, revert otherwise
///@param _proof Merkle proof
modifier onlyAllowListed(bytes32[] calldata _proof) {
if (!isAllowListed(_proof, msg.sender)) {
revert NotAllowListed();
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 22 : ERC1155Metadata.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {ERC1155} from "../token/ERC1155.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
///@notice Ownable extension of ERC1155 that incldues name, symbol, and uri methods
contract ERC1155Metadata is ERC1155, Ownable {
string public name;
string public symbol;
string internal uri_;
bool public isMetadataFrozen;
error MetadataIsFrozen();
constructor(
string memory _name,
string memory _symbol,
string memory _uri
) {
name = _name;
symbol = _symbol;
uri_ = _uri;
}
//////////////////////
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 22 : ERC1155Extended.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;
import {ERC1155Metadata} from "../token/ERC1155Metadata.sol";
import {AllowsImmutableProxy} from "../util/AllowsImmutableProxy.sol";
import {MaxMintable} from "../util/MaxMintable.sol";
import {OwnerPausable} from "../util/OwnerPausable.sol";
import {ReentrancyGuard} from "@rari-capital/solmate/src/utils/ReentrancyGuard.sol";
import {TimeLock} from "../util/TimeLock.sol";
///@notice abstract ERC1155 implementation with access control and specialized minting extensions
///@author emo.eth
abstract contract ERC1155Extended is
ERC1155Metadata,
AllowsImmutableProxy,
MaxMintable,
OwnerPausable,
ReentrancyGuard,
TimeLock
{
uint256 public immutable NUM_OPTIONS;
uint256 public immutable MAX_SUPPLY_PER_ID;
uint256 public mintPrice;
mapping(uint256 => uint256) public numMinted;
error InvalidOptionID();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 22 : ERC1155.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @notice Slightly modified to include an overrideable function for isApprovedForAll, 2022-02-02
/// @author Original: Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
/*///////////////////////////////////////////////////////////////
EVENTS
//////////////////////////////////////////////////////////////*/
event TransferSingle(
address indexed operator,
address indexed from,
address indexed to,
uint256 id,
uint256 amount
);
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] amounts
);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 22 : ReentrancyGuard.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;
/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
uint256 private reentrancyStatus = 1;
modifier nonReentrant() {
require(reentrancyStatus == 1, "REENTRANCY");
reentrancyStatus = 2;
_;
reentrancyStatus = 1;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 22 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
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;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 22 : IERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 20 of 22 : Pausable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 21 of 22 : IERC20.sol
1
2
3
4
5
6
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)
pragma solidity ^0.8.0;
import "../token/ERC20/IERC20.sol";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 22 of 22 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"remappings": [],
"optimizer": {
"enabled": false,
"runs": 200
},
"evmVersion": "london",
"libraries": {},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CommissionPayoutAddressIsZeroAddress","type":"error"},{"inputs":[],"name":"CommissionPayoutPerMilleTooLarge","type":"error"},{"inputs":[],"name":"IncorrectPayment","type":"error"},{"inputs":[],"name":"InvalidOptionID","type":"error"},{"inputs":[],"name":"MaxAllowListRedemptions","type":"error"},{"inputs":[],"name":"MaxMintedForWallet","type":"error"},{"inputs":[],"name":"MaxSupplyForID","type":"error"},{"inputs":[],"name":"MetadataIsFrozen","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NotAllowListed","type":"error"},{"inputs":[],"name":"NotNextOwner","type":"error"},{"inputs":[],"name":"TimeLocked","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","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"}],"name":"Paused","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":"amounts","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":"amount","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldUnlockTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newUnlockTime","type":"uint256"}],"name":"UpdateUnlockTime","type":"event"},{"inputs":[],"name":"MAX_REDEMPTIONS_PER_ADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY_PER_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NUM_OPTIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"batchMintAllowList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"bulkMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"address","name":"_address","type":"address"}],"name":"isAllowListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForProxy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMetadataFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isProxyActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isValidTokenId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintsPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"mintAllowList","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"numMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"bool","name":"_isProxyActive","type":"bool"}],"name":"setIsProxyActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMints","type":"uint256"}],"name":"setMaxMintsPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"setUnlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101406040526001600a553480156200001757600080fd5b50604051620055693803806200556983398181016040528101906200003d919062000638565b735b3256965e7c3cf26e11fcaf296dfc8807c01073603260067fed2ea62124906818bda99512204fa6beb610c56a9ffead65673043928746a92460001b8787878760036107d0600663620ee18073a5409ec958c83c3f309868babaca7c86dcb077c181838260018c8c8c620000c7620000bb620002e260201b60201c565b620002ea60201b60201c565b8260039080519060200190620000df929190620003b0565b508160049080519060200190620000f8929190620003b0565b50806005908051906020019062000111929190620003b0565b505050508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600660016101000a81548160ff021916908315150217905550505080600781905550506000600960006101000a81548160ff02191690831515021790555080600b81905550508860039080519060200190620001a8929190620003b0565b508760049080519060200190620001c1929190620003b0565b5085600c819055508460a081815250508360c081815250505050505050505050508160e0818152505080600e819055505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200025b576040517f149edee300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e881111562000298576040517fc2d085a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250508061012081815250505050505050506200076c565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620003be9062000736565b90600052602060002090601f016020900481019282620003e257600085556200042e565b82601f10620003fd57805160ff19168380011785556200042e565b828001600101855582156200042e579182015b828111156200042d57825182559160200191906001019062000410565b5b5090506200043d919062000441565b5090565b5b808211156200045c57600081600090555060010162000442565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004c9826200047e565b810181811067ffffffffffffffff82111715620004eb57620004ea6200048f565b5b80604052505050565b60006200050062000460565b90506200050e8282620004be565b919050565b600067ffffffffffffffff8211156200053157620005306200048f565b5b6200053c826200047e565b9050602081019050919050565b60005b83811015620005695780820151818401526020810190506200054c565b8381111562000579576000848401525b50505050565b600062000596620005908462000513565b620004f4565b905082815260208101848484011115620005b557620005b462000479565b5b620005c284828562000549565b509392505050565b600082601f830112620005e257620005e162000474565b5b8151620005f48482602086016200057f565b91505092915050565b6000819050919050565b6200061281620005fd565b81146200061e57600080fd5b50565b600081519050620006328162000607565b92915050565b600080600080608085870312156200065557620006546200046a565b5b600085015167ffffffffffffffff8111156200067657620006756200046f565b5b6200068487828801620005ca565b945050602085015167ffffffffffffffff811115620006a857620006a76200046f565b5b620006b687828801620005ca565b935050604085015167ffffffffffffffff811115620006da57620006d96200046f565b5b620006e887828801620005ca565b9250506060620006fb8782880162000621565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200074f57607f821691505b6020821081141562000766576200076562000707565b5b50919050565b60805160a05160c05160e0516101005161012051614d606200080960003960008181612d980152612dd501526000818161161e01526120500152600081816110ee0152612ba101526000818161249e01528181612f29015281816134480152818161359a015281816135e1015261362a0152600081816111140152818161168a0152612ed0015260008181610f690152611a8b0152614d606000f3fe6080604052600436106102925760003560e01c80636817c76c1161015a578063a22cb465116100c1578063e985e9c51161007a578063e985e9c514610949578063f242432a14610986578063f2fde38b146109af578063f3b674a4146109d8578063f4a0a52814610a15578063f516a2e614610a3e57610292565b8063a22cb4651461084f578063bd105b2214610878578063c7db576a146108b5578063cbb2e55e146108de578063d111515d14610909578063dace45571461092057610292565b80638467be0d116101135780638467be0d14610762578063894760691461077e5780638da5cb5b146107a757806395d89b41146107d2578063963c3546146107fd5780639b642de11461082657610292565b80636817c76c146106785780636a59e05d146106a3578063715018a6146106e05780637cb64759146106f75780638380edb7146107205780638456cb591461074b57610292565b80632c1b38ee116101fe5780633f4ba83a116101b75780633f4ba83a1461058e5780634213b577146105a55780634e1273f4146105ce5780634e71e0c81461060b57806353fe7a33146106225780635c975abb1461064d57610292565b80632c1b38ee1461047e5780632d95fdb5146104bb5780632eb2c2d6146104f85780632eb4a7ab146105215780633ccfd60b1461054c5780633db62e2c1461056357610292565b80631249c58b116102505780631249c58b146103c057806323452b9c146103ca57806323f5c02d146103e1578063251c1aa31461040c578063290d2589146104375780632943e6231461045357610292565b8062fdd58e1461029757806301ffc9a7146102d457806306fdde03146103115780630e24495e1461033c5780630e89341c146103675780631122d94a146103a4575b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b991906138df565b610a69565b6040516102cb919061392e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f691906139a1565b610a8e565b60405161030891906139e9565b60405180910390f35b34801561031d57600080fd5b50610326610b20565b6040516103339190613a9d565b60405180910390f35b34801561034857600080fd5b50610351610bae565b60405161035e91906139e9565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190613abf565b610bc1565b60405161039b9190613a9d565b60405180910390f35b6103be60048036038101906103b99190613b51565b610c55565b005b6103c8610d96565b005b3480156103d657600080fd5b506103df610ec2565b005b3480156103ed57600080fd5b506103f6610f65565b6040516104039190613bad565b60405180910390f35b34801561041857600080fd5b50610421610f8d565b60405161042e919061392e565b60405180910390f35b610451600480360381019061044c9190613bc8565b610f93565b005b34801561045f57600080fd5b506104686110ec565b604051610475919061392e565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190613abf565b611110565b6040516104b291906139e9565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613c28565b61113c565b6040516104ef91906139e9565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190613e5b565b61116b565b005b34801561052d57600080fd5b5061053661153e565b6040516105439190613f43565b60405180910390f35b34801561055857600080fd5b50610561611544565b005b34801561056f57600080fd5b50610578611688565b604051610585919061392e565b60405180910390f35b34801561059a57600080fd5b506105a36116ac565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613f5e565b611779565b005b3480156105da57600080fd5b506105f560048036038101906105f09190614074565b61181f565b60405161060291906141aa565b60405180910390f35b34801561061757600080fd5b50610620611979565b005b34801561062e57600080fd5b50610637611a52565b60405161064491906139e9565b60405180910390f35b34801561065957600080fd5b50610662611a69565b60405161066f91906139e9565b60405180910390f35b34801561068457600080fd5b5061068d611a80565b60405161069a919061392e565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190613c28565b611a86565b6040516106d791906139e9565b60405180910390f35b3480156106ec57600080fd5b506106f5611b87565b005b34801561070357600080fd5b5061071e600480360381019061071991906141f8565b611c0f565b005b34801561072c57600080fd5b50610735611c95565b60405161074291906139e9565b60405180910390f35b34801561075757600080fd5b50610760611ca2565b005b61077c60048036038101906107779190613abf565b611d70565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614225565b611ea9565b005b3480156107b357600080fd5b506107bc6120d7565b6040516107c99190613bad565b60405180910390f35b3480156107de57600080fd5b506107e7612101565b6040516107f49190613a9d565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190613abf565b61218f565b005b34801561083257600080fd5b5061084d600480360381019061084891906142a8565b612215565b005b34801561085b57600080fd5b5061087660048036038101906108719190614321565b6122ee565b005b34801561088457600080fd5b5061089f600480360381019061089a9190613abf565b6123eb565b6040516108ac919061392e565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190614361565b612403565b005b3480156108ea57600080fd5b506108f361249c565b604051610900919061392e565b60405180910390f35b34801561091557600080fd5b5061091e6124c0565b005b34801561092c57600080fd5b5061094760048036038101906109429190613abf565b612559565b005b34801561095557600080fd5b50610970600480360381019061096b9190613c28565b612618565b60405161097d91906139e9565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a8919061438e565b61263d565b005b3480156109bb57600080fd5b506109d660048036038101906109d19190614225565b61296d565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614425565b612a94565b604051610a0c91906139e9565b60405180910390f35b348015610a2157600080fd5b50610a3c6004803603810190610a379190613abf565b612b13565b005b348015610a4a57600080fd5b50610a53612b99565b604051610a60919061392e565b60405180910390f35b6000602052816000526040600020602052806000526040600020600091509150505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae9575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b195750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60038054610b2d906144b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b59906144b4565b8015610ba65780601f10610b7b57610100808354040283529160200191610ba6565b820191906000526020600020905b815481529060010190602001808311610b8957829003601f168201915b505050505081565b600660009054906101000a900460ff1681565b606060058054610bd0906144b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc906144b4565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b50505050509050919050565b6001600a5414610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614532565b60405180910390fd5b6002600a81905550610caa611a69565b15610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce19061459e565b60405180910390fd5b600180600c54610cfa91906145ed565b3414610d32576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282610d3f828233612a94565b610d75576040517f3941838400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d7f6001612b9f565b610d87612c93565b5050506001600a819055505050565b6001600a5414610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614532565b60405180910390fd5b6002600a81905550610deb611a69565b15610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e229061459e565b60405180910390fd5b600b54421015610e67576040517f56f3855700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600c54610e7791906145ed565b3414610eaf576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb7612c93565b506001600a81905550565b610eca612cea565b73ffffffffffffffffffffffffffffffffffffffff16610ee86120d7565b73ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590614693565b60405180910390fd5b601060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600b5481565b6001600a5414610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90614532565b60405180910390fd5b6002600a81905550610fe8611a69565b15611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f9061459e565b60405180910390fd5b60038361103591906145ed565b80600c5461104391906145ed565b341461107b576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282611088828233612a94565b6110be576040517f3941838400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d36003876110ce91906145ed565b612b9f565b6110dc86612cf2565b5050506001600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000082109050919050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600083519050825181146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab906146ff565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111f457506111f38633612618565b5b611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a9061476b565b60405180910390fd5b60005b818110156113575760008582815181106112535761125261478b565b5b6020026020010151905060008583815181106112725761127161478b565b5b60200260200101519050806000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060008282546112db91906147ba565b92505081905550806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600082825461134191906147ee565b9250508190555082806001019350505050611236565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516113ce929190614844565b60405180910390a460008573ffffffffffffffffffffffffffffffffffffffff163b146114c55763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff1663bc197c8133898888886040518663ffffffff1660e01b815260040161145d9594939291906148d0565b6020604051808303816000875af115801561147c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a0919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146114f7565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906149c6565b60405180910390fd5b505050505050565b600e5481565b61154c612cea565b73ffffffffffffffffffffffffffffffffffffffff1661156a6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790614693565b60405180910390fd5b60004790506000806115d183612d67565b915091503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561161b573d6000803e3d6000fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611682573d6000803e3d6000fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6116b4612cea565b73ffffffffffffffffffffffffffffffffffffffff166116d26120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614693565b60405180910390fd5b611730611a69565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690614a32565b60405180910390fd5b611777612e2c565b565b611781612cea565b73ffffffffffffffffffffffffffffffffffffffff1661179f6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90614693565b60405180910390fd5b6117ff8282612ece565b61181a83838360405180602001604052806000815250612fc4565b505050565b60606000835190508251811461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906146ff565b60405180910390fd5b835167ffffffffffffffff81111561188557611884613c68565b5b6040519080825280602002602001820160405280156118b35781602001602082028036833780820191505090505b50915060005b81811015611971576000808683815181106118d7576118d661478b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061192e5761192d61478b565b5b60200260200101518152602001908152602001600020548382815181106119585761195761478b565b5b60200260200101818152505080806001019150506118b9565b505092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a2b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613210565b601060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b6000600660019054906101000a900460ff16905090565b6000600960009054906101000a900460ff16905090565b600c5481565b6000807f00000000000000000000000000000000000000000000000000000000000000009050600660019054906101000a900460ff168015611b6c57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b8152600401611b139190613bad565b602060405180830381865afa158015611b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b549190614a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15611b7b576001915050611b81565b60009150505b92915050565b611b8f612cea565b73ffffffffffffffffffffffffffffffffffffffff16611bad6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90614693565b60405180910390fd5b611c0d6000613210565b565b611c17612cea565b73ffffffffffffffffffffffffffffffffffffffff16611c356120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290614693565b60405180910390fd5b80600e8190555050565b6000600b54421015905090565b611caa612cea565b73ffffffffffffffffffffffffffffffffffffffff16611cc86120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614693565b60405180910390fd5b611d26611a69565b15611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061459e565b60405180910390fd5b611d6e6132d6565b565b6001600a5414611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90614532565b60405180910390fd5b6002600a81905550611dc5611a69565b15611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061459e565b60405180910390fd5b600b54421015611e41576040517f56f3855700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381611e4e91906145ed565b80600c54611e5c91906145ed565b3414611e94576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e9d82612cf2565b506001600a8190555050565b611eb1612cea565b73ffffffffffffffffffffffffffffffffffffffff16611ecf6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90614693565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f609190613bad565b602060405180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190614ad2565b9050600080611faf83612d67565b915091508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611fee929190614aff565b6020604051808303816000875af115801561200d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120319190614b3d565b508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161208d929190614aff565b6020604051808303816000875af11580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d09190614b3d565b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6004805461210e906144b4565b80601f016020809104026020016040519081016040528092919081815260200182805461213a906144b4565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b505050505081565b612197612cea565b73ffffffffffffffffffffffffffffffffffffffff166121b56120d7565b73ffffffffffffffffffffffffffffffffffffffff161461220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614693565b60405180910390fd5b8060078190555050565b61221d612cea565b73ffffffffffffffffffffffffffffffffffffffff1661223b6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614693565b60405180910390fd5b600660009054906101000a900460ff16156122d8576040517fb087bbf300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600591906122e9929190613794565b505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123df91906139e9565b60405180910390a35050565b600d6020528060005260406000206000915090505481565b61240b612cea565b73ffffffffffffffffffffffffffffffffffffffff166124296120d7565b73ffffffffffffffffffffffffffffffffffffffff161461247f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247690614693565b60405180910390fd5b80600660016101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6124c8612cea565b73ffffffffffffffffffffffffffffffffffffffff166124e66120d7565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614693565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b612561612cea565b73ffffffffffffffffffffffffffffffffffffffff1661257f6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146125d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cc90614693565b60405180910390fd5b7f8cda9a50a61bfb02915d6059de72e4bd82fd2ab642a83e72b0a6a6b2f50b428b600b5482600b81905560405161260d929190614b6a565b60405180910390a150565b60006126248383611a86565b8061263557506126348383613379565b5b905092915050565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061267d575061267c8533612618565b5b6126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b39061476b565b60405180910390fd5b816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461271b91906147ba565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461278191906147ee565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516127fe929190614b6a565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146128f55763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b815260040161288d959493929190614b93565b6020604051808303816000875af11580156128ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d0919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612927565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d906149c6565b60405180910390fd5b5050505050565b612975612cea565b73ffffffffffffffffffffffffffffffffffffffff166129936120d7565b73ffffffffffffffffffffffffffffffffffffffff16146129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e090614693565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a50576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612b0a848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600e5484604051602001612aef9190614c35565b6040516020818303038152906040528051906020012061340d565b90509392505050565b612b1b612cea565b73ffffffffffffffffffffffffffffffffffffffff16612b396120d7565b73ffffffffffffffffffffffffffffffffffffffff1614612b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8690614693565b60405180910390fd5b80600c8190555050565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0b91906147ee565b1115612c43576040517f82a0f49600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b612c9b613424565b612cb46003601154612cad9190614c7f565b6001612ece565b612cbe60016134c2565b612ce8336003601154612cd19190614c7f565b600160405180602001604052806000815250612fc4565b565b600033905090565b612cfb81613598565b612d10600382612d0b91906145ed565b6134c2565b612d2c3360008360405180602001604052806000815250612fc4565b612d483360018360405180602001604052806000815250612fc4565b612d643360028360405180602001604052806000815250612fc4565b50565b60008060007e40000000000000000000000000000000000000000000000000000000000000841015612dd3576103e87f000000000000000000000000000000000000000000000000000000000000000085612dc291906145ed565b612dcc9190614cb0565b9050612e0f565b7f00000000000000000000000000000000000000000000000000000000000000006103e885612e029190614cb0565b612e0c91906145ed565b90505b60008185612e1d91906147ba565b90508082935093505050915091565b612e34611a69565b612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614a32565b60405180910390fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612eb7612cea565b604051612ec49190613bad565b60405180910390a1565b7f00000000000000000000000000000000000000000000000000000000000000008210612f27576040517f97ebeba600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081600d600085815260200190815260200160002054612f6791906147ee565b1115612f9f576040517f2cdcee8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d6000848152602001908152602001600020600082825401925050819055505050565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461302391906147ee565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516130a1929190614b6a565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146131995763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e613360008787876040518663ffffffff1660e01b8152600401613131959493929190614b93565b6020604051808303816000875af1158015613150573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613174919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146131cb565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b61320a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613201906149c6565b60405180910390fd5b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6132de611a69565b1561331e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133159061459e565b60405180910390fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613362612cea565b60405161336f9190613bad565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008261341a858461370a565b1490509392505050565b60116000815461343390614ce1565b9190508190555060005b60038110156134bf577f0000000000000000000000000000000000000000000000000000000000000000600d6000600360115461347a9190614c7f565b815260200190815260200160002054106134a95760116000815461349d90614ce1565b919050819055506134ae565b6134bf565b806134b890614ce1565b905061343d565b50565b60075481600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351091906147ee565b1115613548576040517fab2d5bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b7f000000000000000000000000000000000000000000000000000000000000000081600d6000808152602001908152602001600020546135d891906147ee565b118061362257507f000000000000000000000000000000000000000000000000000000000000000081600d6000600181526020019081526020016000205461362091906147ee565b115b8061366b57507f000000000000000000000000000000000000000000000000000000000000000081600d6000600281526020019081526020016000205461366991906147ee565b115b156136a2576040517f2cdcee8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008081526020019081526020016000206000828254019250508190555080600d6000600181526020019081526020016000206000828254019250508190555080600d6000600281526020019081526020016000206000828254019250508190555050565b60008082905060005b84518110156137725760008582815181106137315761373061478b565b5b602002602001015190508083116137535761374c838261377d565b9250613760565b61375d818461377d565b92505b508061376b90614ce1565b9050613713565b508091505092915050565b600082600052816020526040600020905092915050565b8280546137a0906144b4565b90600052602060002090601f0160209004810192826137c25760008555613809565b82601f106137db57803560ff1916838001178555613809565b82800160010185558215613809579182015b828111156138085782358255916020019190600101906137ed565b5b509050613816919061381a565b5090565b5b8082111561383357600081600090555060010161381b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138768261384b565b9050919050565b6138868161386b565b811461389157600080fd5b50565b6000813590506138a38161387d565b92915050565b6000819050919050565b6138bc816138a9565b81146138c757600080fd5b50565b6000813590506138d9816138b3565b92915050565b600080604083850312156138f6576138f5613841565b5b600061390485828601613894565b9250506020613915858286016138ca565b9150509250929050565b613928816138a9565b82525050565b6000602082019050613943600083018461391f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61397e81613949565b811461398957600080fd5b50565b60008135905061399b81613975565b92915050565b6000602082840312156139b7576139b6613841565b5b60006139c58482850161398c565b91505092915050565b60008115159050919050565b6139e3816139ce565b82525050565b60006020820190506139fe60008301846139da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a3e578082015181840152602081019050613a23565b83811115613a4d576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a6f82613a04565b613a798185613a0f565b9350613a89818560208601613a20565b613a9281613a53565b840191505092915050565b60006020820190508181036000830152613ab78184613a64565b905092915050565b600060208284031215613ad557613ad4613841565b5b6000613ae3848285016138ca565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613b1157613b10613aec565b5b8235905067ffffffffffffffff811115613b2e57613b2d613af1565b5b602083019150836020820283011115613b4a57613b49613af6565b5b9250929050565b60008060208385031215613b6857613b67613841565b5b600083013567ffffffffffffffff811115613b8657613b85613846565b5b613b9285828601613afb565b92509250509250929050565b613ba78161386b565b82525050565b6000602082019050613bc26000830184613b9e565b92915050565b600080600060408486031215613be157613be0613841565b5b6000613bef868287016138ca565b935050602084013567ffffffffffffffff811115613c1057613c0f613846565b5b613c1c86828701613afb565b92509250509250925092565b60008060408385031215613c3f57613c3e613841565b5b6000613c4d85828601613894565b9250506020613c5e85828601613894565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ca082613a53565b810181811067ffffffffffffffff82111715613cbf57613cbe613c68565b5b80604052505050565b6000613cd2613837565b9050613cde8282613c97565b919050565b600067ffffffffffffffff821115613cfe57613cfd613c68565b5b602082029050602081019050919050565b6000613d22613d1d84613ce3565b613cc8565b90508083825260208201905060208402830185811115613d4557613d44613af6565b5b835b81811015613d6e5780613d5a88826138ca565b845260208401935050602081019050613d47565b5050509392505050565b600082601f830112613d8d57613d8c613aec565b5b8135613d9d848260208601613d0f565b91505092915050565b600080fd5b600067ffffffffffffffff821115613dc657613dc5613c68565b5b613dcf82613a53565b9050602081019050919050565b82818337600083830152505050565b6000613dfe613df984613dab565b613cc8565b905082815260208101848484011115613e1a57613e19613da6565b5b613e25848285613ddc565b509392505050565b600082601f830112613e4257613e41613aec565b5b8135613e52848260208601613deb565b91505092915050565b600080600080600060a08688031215613e7757613e76613841565b5b6000613e8588828901613894565b9550506020613e9688828901613894565b945050604086013567ffffffffffffffff811115613eb757613eb6613846565b5b613ec388828901613d78565b935050606086013567ffffffffffffffff811115613ee457613ee3613846565b5b613ef088828901613d78565b925050608086013567ffffffffffffffff811115613f1157613f10613846565b5b613f1d88828901613e2d565b9150509295509295909350565b6000819050919050565b613f3d81613f2a565b82525050565b6000602082019050613f586000830184613f34565b92915050565b600080600060608486031215613f7757613f76613841565b5b6000613f8586828701613894565b9350506020613f96868287016138ca565b9250506040613fa7868287016138ca565b9150509250925092565b600067ffffffffffffffff821115613fcc57613fcb613c68565b5b602082029050602081019050919050565b6000613ff0613feb84613fb1565b613cc8565b9050808382526020820190506020840283018581111561401357614012613af6565b5b835b8181101561403c57806140288882613894565b845260208401935050602081019050614015565b5050509392505050565b600082601f83011261405b5761405a613aec565b5b813561406b848260208601613fdd565b91505092915050565b6000806040838503121561408b5761408a613841565b5b600083013567ffffffffffffffff8111156140a9576140a8613846565b5b6140b585828601614046565b925050602083013567ffffffffffffffff8111156140d6576140d5613846565b5b6140e285828601613d78565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614121816138a9565b82525050565b60006141338383614118565b60208301905092915050565b6000602082019050919050565b6000614157826140ec565b61416181856140f7565b935061416c83614108565b8060005b8381101561419d5781516141848882614127565b975061418f8361413f565b925050600181019050614170565b5085935050505092915050565b600060208201905081810360008301526141c4818461414c565b905092915050565b6141d581613f2a565b81146141e057600080fd5b50565b6000813590506141f2816141cc565b92915050565b60006020828403121561420e5761420d613841565b5b600061421c848285016141e3565b91505092915050565b60006020828403121561423b5761423a613841565b5b600061424984828501613894565b91505092915050565b60008083601f84011261426857614267613aec565b5b8235905067ffffffffffffffff81111561428557614284613af1565b5b6020830191508360018202830111156142a1576142a0613af6565b5b9250929050565b600080602083850312156142bf576142be613841565b5b600083013567ffffffffffffffff8111156142dd576142dc613846565b5b6142e985828601614252565b92509250509250929050565b6142fe816139ce565b811461430957600080fd5b50565b60008135905061431b816142f5565b92915050565b6000806040838503121561433857614337613841565b5b600061434685828601613894565b92505060206143578582860161430c565b9150509250929050565b60006020828403121561437757614376613841565b5b60006143858482850161430c565b91505092915050565b600080600080600060a086880312156143aa576143a9613841565b5b60006143b888828901613894565b95505060206143c988828901613894565b94505060406143da888289016138ca565b93505060606143eb888289016138ca565b925050608086013567ffffffffffffffff81111561440c5761440b613846565b5b61441888828901613e2d565b9150509295509295909350565b60008060006040848603121561443e5761443d613841565b5b600084013567ffffffffffffffff81111561445c5761445b613846565b5b61446886828701613afb565b9350935050602061447b86828701613894565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144cc57607f821691505b602082108114156144e0576144df614485565b5b50919050565b7f5245454e5452414e435900000000000000000000000000000000000000000000600082015250565b600061451c600a83613a0f565b9150614527826144e6565b602082019050919050565b6000602082019050818103600083015261454b8161450f565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614588601083613a0f565b915061459382614552565b602082019050919050565b600060208201905081810360008301526145b78161457b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f8826138a9565b9150614603836138a9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561463c5761463b6145be565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061467d602083613a0f565b915061468882614647565b602082019050919050565b600060208201905081810360008301526146ac81614670565b9050919050565b7f4c454e4754485f4d49534d415443480000000000000000000000000000000000600082015250565b60006146e9600f83613a0f565b91506146f4826146b3565b602082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000614755600e83613a0f565b91506147608261471f565b602082019050919050565b6000602082019050818103600083015261478481614748565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147c5826138a9565b91506147d0836138a9565b9250828210156147e3576147e26145be565b5b828203905092915050565b60006147f9826138a9565b9150614804836138a9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614839576148386145be565b5b828201905092915050565b6000604082019050818103600083015261485e818561414c565b90508181036020830152614872818461414c565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006148a28261487b565b6148ac8185614886565b93506148bc818560208601613a20565b6148c581613a53565b840191505092915050565b600060a0820190506148e56000830188613b9e565b6148f26020830187613b9e565b8181036040830152614904818661414c565b90508181036060830152614918818561414c565b9050818103608083015261492c8184614897565b90509695505050505050565b60008151905061494781613975565b92915050565b60006020828403121561496357614962613841565b5b600061497184828501614938565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006149b0601083613a0f565b91506149bb8261497a565b602082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614a1c601483613a0f565b9150614a27826149e6565b602082019050919050565b60006020820190508181036000830152614a4b81614a0f565b9050919050565b6000614a5d8261386b565b9050919050565b614a6d81614a52565b8114614a7857600080fd5b50565b600081519050614a8a81614a64565b92915050565b600060208284031215614aa657614aa5613841565b5b6000614ab484828501614a7b565b91505092915050565b600081519050614acc816138b3565b92915050565b600060208284031215614ae857614ae7613841565b5b6000614af684828501614abd565b91505092915050565b6000604082019050614b146000830185613b9e565b614b21602083018461391f565b9392505050565b600081519050614b37816142f5565b92915050565b600060208284031215614b5357614b52613841565b5b6000614b6184828501614b28565b91505092915050565b6000604082019050614b7f600083018561391f565b614b8c602083018461391f565b9392505050565b600060a082019050614ba86000830188613b9e565b614bb56020830187613b9e565b614bc2604083018661391f565b614bcf606083018561391f565b8181036080830152614be18184614897565b90509695505050505050565b60008160601b9050919050565b6000614c0582614bed565b9050919050565b6000614c1782614bfa565b9050919050565b614c2f614c2a8261386b565b614c0c565b82525050565b6000614c418284614c1e565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c8a826138a9565b9150614c95836138a9565b925082614ca557614ca4614c50565b5b828206905092915050565b6000614cbb826138a9565b9150614cc6836138a9565b925082614cd657614cd5614c50565b5b828204905092915050565b6000614cec826138a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d1f57614d1e6145be565b5b60018201905091905056fea2646970667358221220e0cd1e35e6b9c88103732a13e9ec38200c4e2067fe6dc28b1d7b9ca402ba109b64736f6c634300080b0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000000000000000000000000a43616d656f205061737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000943414d454f504153530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f697066733a2f2f516d56694b5359685a436170537a6f68377357415369354d5637796d61414c474e56777837423978756d583642542f7b69647d2e6a736f6e00

Deployed Bytecode

0x6080604052600436106102925760003560e01c80636817c76c1161015a578063a22cb465116100c1578063e985e9c51161007a578063e985e9c514610949578063f242432a14610986578063f2fde38b146109af578063f3b674a4146109d8578063f4a0a52814610a15578063f516a2e614610a3e57610292565b8063a22cb4651461084f578063bd105b2214610878578063c7db576a146108b5578063cbb2e55e146108de578063d111515d14610909578063dace45571461092057610292565b80638467be0d116101135780638467be0d14610762578063894760691461077e5780638da5cb5b146107a757806395d89b41146107d2578063963c3546146107fd5780639b642de11461082657610292565b80636817c76c146106785780636a59e05d146106a3578063715018a6146106e05780637cb64759146106f75780638380edb7146107205780638456cb591461074b57610292565b80632c1b38ee116101fe5780633f4ba83a116101b75780633f4ba83a1461058e5780634213b577146105a55780634e1273f4146105ce5780634e71e0c81461060b57806353fe7a33146106225780635c975abb1461064d57610292565b80632c1b38ee1461047e5780632d95fdb5146104bb5780632eb2c2d6146104f85780632eb4a7ab146105215780633ccfd60b1461054c5780633db62e2c1461056357610292565b80631249c58b116102505780631249c58b146103c057806323452b9c146103ca57806323f5c02d146103e1578063251c1aa31461040c578063290d2589146104375780632943e6231461045357610292565b8062fdd58e1461029757806301ffc9a7146102d457806306fdde03146103115780630e24495e1461033c5780630e89341c146103675780631122d94a146103a4575b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b991906138df565b610a69565b6040516102cb919061392e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f691906139a1565b610a8e565b60405161030891906139e9565b60405180910390f35b34801561031d57600080fd5b50610326610b20565b6040516103339190613a9d565b60405180910390f35b34801561034857600080fd5b50610351610bae565b60405161035e91906139e9565b60405180910390f35b34801561037357600080fd5b5061038e60048036038101906103899190613abf565b610bc1565b60405161039b9190613a9d565b60405180910390f35b6103be60048036038101906103b99190613b51565b610c55565b005b6103c8610d96565b005b3480156103d657600080fd5b506103df610ec2565b005b3480156103ed57600080fd5b506103f6610f65565b6040516104039190613bad565b60405180910390f35b34801561041857600080fd5b50610421610f8d565b60405161042e919061392e565b60405180910390f35b610451600480360381019061044c9190613bc8565b610f93565b005b34801561045f57600080fd5b506104686110ec565b604051610475919061392e565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190613abf565b611110565b6040516104b291906139e9565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd9190613c28565b61113c565b6040516104ef91906139e9565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190613e5b565b61116b565b005b34801561052d57600080fd5b5061053661153e565b6040516105439190613f43565b60405180910390f35b34801561055857600080fd5b50610561611544565b005b34801561056f57600080fd5b50610578611688565b604051610585919061392e565b60405180910390f35b34801561059a57600080fd5b506105a36116ac565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613f5e565b611779565b005b3480156105da57600080fd5b506105f560048036038101906105f09190614074565b61181f565b60405161060291906141aa565b60405180910390f35b34801561061757600080fd5b50610620611979565b005b34801561062e57600080fd5b50610637611a52565b60405161064491906139e9565b60405180910390f35b34801561065957600080fd5b50610662611a69565b60405161066f91906139e9565b60405180910390f35b34801561068457600080fd5b5061068d611a80565b60405161069a919061392e565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c59190613c28565b611a86565b6040516106d791906139e9565b60405180910390f35b3480156106ec57600080fd5b506106f5611b87565b005b34801561070357600080fd5b5061071e600480360381019061071991906141f8565b611c0f565b005b34801561072c57600080fd5b50610735611c95565b60405161074291906139e9565b60405180910390f35b34801561075757600080fd5b50610760611ca2565b005b61077c60048036038101906107779190613abf565b611d70565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614225565b611ea9565b005b3480156107b357600080fd5b506107bc6120d7565b6040516107c99190613bad565b60405180910390f35b3480156107de57600080fd5b506107e7612101565b6040516107f49190613a9d565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f9190613abf565b61218f565b005b34801561083257600080fd5b5061084d600480360381019061084891906142a8565b612215565b005b34801561085b57600080fd5b5061087660048036038101906108719190614321565b6122ee565b005b34801561088457600080fd5b5061089f600480360381019061089a9190613abf565b6123eb565b6040516108ac919061392e565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d79190614361565b612403565b005b3480156108ea57600080fd5b506108f361249c565b604051610900919061392e565b60405180910390f35b34801561091557600080fd5b5061091e6124c0565b005b34801561092c57600080fd5b5061094760048036038101906109429190613abf565b612559565b005b34801561095557600080fd5b50610970600480360381019061096b9190613c28565b612618565b60405161097d91906139e9565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a8919061438e565b61263d565b005b3480156109bb57600080fd5b506109d660048036038101906109d19190614225565b61296d565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614425565b612a94565b604051610a0c91906139e9565b60405180910390f35b348015610a2157600080fd5b50610a3c6004803603810190610a379190613abf565b612b13565b005b348015610a4a57600080fd5b50610a53612b99565b604051610a60919061392e565b60405180910390f35b6000602052816000526040600020602052806000526040600020600091509150505481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae9575063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b195750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60038054610b2d906144b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b59906144b4565b8015610ba65780601f10610b7b57610100808354040283529160200191610ba6565b820191906000526020600020905b815481529060010190602001808311610b8957829003601f168201915b505050505081565b600660009054906101000a900460ff1681565b606060058054610bd0906144b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfc906144b4565b8015610c495780601f10610c1e57610100808354040283529160200191610c49565b820191906000526020600020905b815481529060010190602001808311610c2c57829003601f168201915b50505050509050919050565b6001600a5414610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190614532565b60405180910390fd5b6002600a81905550610caa611a69565b15610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce19061459e565b60405180910390fd5b600180600c54610cfa91906145ed565b3414610d32576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282610d3f828233612a94565b610d75576040517f3941838400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d7f6001612b9f565b610d87612c93565b5050506001600a819055505050565b6001600a5414610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290614532565b60405180910390fd5b6002600a81905550610deb611a69565b15610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e229061459e565b60405180910390fd5b600b54421015610e67576040517f56f3855700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600c54610e7791906145ed565b3414610eaf576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb7612c93565b506001600a81905550565b610eca612cea565b73ffffffffffffffffffffffffffffffffffffffff16610ee86120d7565b73ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590614693565b60405180910390fd5b601060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b60007f000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1905090565b600b5481565b6001600a5414610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90614532565b60405180910390fd5b6002600a81905550610fe8611a69565b15611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f9061459e565b60405180910390fd5b60038361103591906145ed565b80600c5461104391906145ed565b341461107b576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282611088828233612a94565b6110be576040517f3941838400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d36003876110ce91906145ed565b612b9f565b6110dc86612cf2565b5050506001600a81905550505050565b7f000000000000000000000000000000000000000000000000000000000000000681565b60007f000000000000000000000000000000000000000000000000000000000000000382109050919050565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600083519050825181146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab906146ff565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806111f457506111f38633612618565b5b611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a9061476b565b60405180910390fd5b60005b818110156113575760008582815181106112535761125261478b565b5b6020026020010151905060008583815181106112725761127161478b565b5b60200260200101519050806000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060008282546112db91906147ba565b92505081905550806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600082825461134191906147ee565b9250508190555082806001019350505050611236565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516113ce929190614844565b60405180910390a460008573ffffffffffffffffffffffffffffffffffffffff163b146114c55763bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff1663bc197c8133898888886040518663ffffffff1660e01b815260040161145d9594939291906148d0565b6020604051808303816000875af115801561147c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a0919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146114f7565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906149c6565b60405180910390fd5b505050505050565b600e5481565b61154c612cea565b73ffffffffffffffffffffffffffffffffffffffff1661156a6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790614693565b60405180910390fd5b60004790506000806115d183612d67565b915091503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561161b573d6000803e3d6000fd5b507f0000000000000000000000005b3256965e7c3cf26e11fcaf296dfc8807c0107373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611682573d6000803e3d6000fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000381565b6116b4612cea565b73ffffffffffffffffffffffffffffffffffffffff166116d26120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614693565b60405180910390fd5b611730611a69565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690614a32565b60405180910390fd5b611777612e2c565b565b611781612cea565b73ffffffffffffffffffffffffffffffffffffffff1661179f6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90614693565b60405180910390fd5b6117ff8282612ece565b61181a83838360405180602001604052806000815250612fc4565b505050565b60606000835190508251811461186a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611861906146ff565b60405180910390fd5b835167ffffffffffffffff81111561188557611884613c68565b5b6040519080825280602002602001820160405280156118b35781602001602082028036833780820191505090505b50915060005b81811015611971576000808683815181106118d7576118d661478b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061192e5761192d61478b565b5b60200260200101518152602001908152602001600020548382815181106119585761195761478b565b5b60200260200101818152505080806001019150506118b9565b505092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a2b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613210565b601060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b6000600660019054906101000a900460ff16905090565b6000600960009054906101000a900460ff16905090565b600c5481565b6000807f000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c19050600660019054906101000a900460ff168015611b6c57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b8152600401611b139190613bad565b602060405180830381865afa158015611b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b549190614a90565b73ffffffffffffffffffffffffffffffffffffffff16145b15611b7b576001915050611b81565b60009150505b92915050565b611b8f612cea565b73ffffffffffffffffffffffffffffffffffffffff16611bad6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90614693565b60405180910390fd5b611c0d6000613210565b565b611c17612cea565b73ffffffffffffffffffffffffffffffffffffffff16611c356120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290614693565b60405180910390fd5b80600e8190555050565b6000600b54421015905090565b611caa612cea565b73ffffffffffffffffffffffffffffffffffffffff16611cc86120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590614693565b60405180910390fd5b611d26611a69565b15611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061459e565b60405180910390fd5b611d6e6132d6565b565b6001600a5414611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac90614532565b60405180910390fd5b6002600a81905550611dc5611a69565b15611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9061459e565b60405180910390fd5b600b54421015611e41576040517f56f3855700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381611e4e91906145ed565b80600c54611e5c91906145ed565b3414611e94576040517f569e8c1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e9d82612cf2565b506001600a8190555050565b611eb1612cea565b73ffffffffffffffffffffffffffffffffffffffff16611ecf6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614611f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1c90614693565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f609190613bad565b602060405180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190614ad2565b9050600080611faf83612d67565b915091508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611fee929190614aff565b6020604051808303816000875af115801561200d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120319190614b3d565b508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000005b3256965e7c3cf26e11fcaf296dfc8807c01073836040518363ffffffff1660e01b815260040161208d929190614aff565b6020604051808303816000875af11580156120ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d09190614b3d565b5050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6004805461210e906144b4565b80601f016020809104026020016040519081016040528092919081815260200182805461213a906144b4565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b505050505081565b612197612cea565b73ffffffffffffffffffffffffffffffffffffffff166121b56120d7565b73ffffffffffffffffffffffffffffffffffffffff161461220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290614693565b60405180910390fd5b8060078190555050565b61221d612cea565b73ffffffffffffffffffffffffffffffffffffffff1661223b6120d7565b73ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228890614693565b60405180910390fd5b600660009054906101000a900460ff16156122d8576040517fb087bbf300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181600591906122e9929190613794565b505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123df91906139e9565b60405180910390a35050565b600d6020528060005260406000206000915090505481565b61240b612cea565b73ffffffffffffffffffffffffffffffffffffffff166124296120d7565b73ffffffffffffffffffffffffffffffffffffffff161461247f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247690614693565b60405180910390fd5b80600660016101000a81548160ff02191690831515021790555050565b7f00000000000000000000000000000000000000000000000000000000000007d081565b6124c8612cea565b73ffffffffffffffffffffffffffffffffffffffff166124e66120d7565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614693565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b612561612cea565b73ffffffffffffffffffffffffffffffffffffffff1661257f6120d7565b73ffffffffffffffffffffffffffffffffffffffff16146125d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cc90614693565b60405180910390fd5b7f8cda9a50a61bfb02915d6059de72e4bd82fd2ab642a83e72b0a6a6b2f50b428b600b5482600b81905560405161260d929190614b6a565b60405180910390a150565b60006126248383611a86565b8061263557506126348383613379565b5b905092915050565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061267d575061267c8533612618565b5b6126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b39061476b565b60405180910390fd5b816000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461271b91906147ba565b92505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461278191906147ee565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516127fe929190614b6a565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146128f55763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6133888787876040518663ffffffff1660e01b815260040161288d959493929190614b93565b6020604051808303816000875af11580156128ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d0919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612927565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b612966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295d906149c6565b60405180910390fd5b5050505050565b612975612cea565b73ffffffffffffffffffffffffffffffffffffffff166129936120d7565b73ffffffffffffffffffffffffffffffffffffffff16146129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e090614693565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a50576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612b0a848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600e5484604051602001612aef9190614c35565b6040516020818303038152906040528051906020012061340d565b90509392505050565b612b1b612cea565b73ffffffffffffffffffffffffffffffffffffffff16612b396120d7565b73ffffffffffffffffffffffffffffffffffffffff1614612b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8690614693565b60405180910390fd5b80600c8190555050565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000681600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0b91906147ee565b1115612c43576040517f82a0f49600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b612c9b613424565b612cb46003601154612cad9190614c7f565b6001612ece565b612cbe60016134c2565b612ce8336003601154612cd19190614c7f565b600160405180602001604052806000815250612fc4565b565b600033905090565b612cfb81613598565b612d10600382612d0b91906145ed565b6134c2565b612d2c3360008360405180602001604052806000815250612fc4565b612d483360018360405180602001604052806000815250612fc4565b612d643360028360405180602001604052806000815250612fc4565b50565b60008060007e40000000000000000000000000000000000000000000000000000000000000841015612dd3576103e87f000000000000000000000000000000000000000000000000000000000000003285612dc291906145ed565b612dcc9190614cb0565b9050612e0f565b7f00000000000000000000000000000000000000000000000000000000000000326103e885612e029190614cb0565b612e0c91906145ed565b90505b60008185612e1d91906147ba565b90508082935093505050915091565b612e34611a69565b612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614a32565b60405180910390fd5b6000600960006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612eb7612cea565b604051612ec49190613bad565b60405180910390a1565b7f00000000000000000000000000000000000000000000000000000000000000038210612f27576040517f97ebeba600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000007d081600d600085815260200190815260200160002054612f6791906147ee565b1115612f9f576040517f2cdcee8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d6000848152602001908152602001600020600082825401925050819055505050565b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600082825461302391906147ee565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516130a1929190614b6a565b60405180910390a460008473ffffffffffffffffffffffffffffffffffffffff163b146131995763f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e613360008787876040518663ffffffff1660e01b8152600401613131959493929190614b93565b6020604051808303816000875af1158015613150573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613174919061494d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146131cb565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b61320a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613201906149c6565b60405180910390fd5b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6132de611a69565b1561331e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133159061459e565b60405180910390fd5b6001600960006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613362612cea565b60405161336f9190613bad565b60405180910390a1565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008261341a858461370a565b1490509392505050565b60116000815461343390614ce1565b9190508190555060005b60038110156134bf577f00000000000000000000000000000000000000000000000000000000000007d0600d6000600360115461347a9190614c7f565b815260200190815260200160002054106134a95760116000815461349d90614ce1565b919050819055506134ae565b6134bf565b806134b890614ce1565b905061343d565b50565b60075481600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461351091906147ee565b1115613548576040517fab2d5bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050565b7f00000000000000000000000000000000000000000000000000000000000007d081600d6000808152602001908152602001600020546135d891906147ee565b118061362257507f00000000000000000000000000000000000000000000000000000000000007d081600d6000600181526020019081526020016000205461362091906147ee565b115b8061366b57507f00000000000000000000000000000000000000000000000000000000000007d081600d6000600281526020019081526020016000205461366991906147ee565b115b156136a2576040517f2cdcee8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600d60008081526020019081526020016000206000828254019250508190555080600d6000600181526020019081526020016000206000828254019250508190555080600d6000600281526020019081526020016000206000828254019250508190555050565b60008082905060005b84518110156137725760008582815181106137315761373061478b565b5b602002602001015190508083116137535761374c838261377d565b9250613760565b61375d818461377d565b92505b508061376b90614ce1565b9050613713565b508091505092915050565b600082600052816020526040600020905092915050565b8280546137a0906144b4565b90600052602060002090601f0160209004810192826137c25760008555613809565b82601f106137db57803560ff1916838001178555613809565b82800160010185558215613809579182015b828111156138085782358255916020019190600101906137ed565b5b509050613816919061381a565b5090565b5b8082111561383357600081600090555060010161381b565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138768261384b565b9050919050565b6138868161386b565b811461389157600080fd5b50565b6000813590506138a38161387d565b92915050565b6000819050919050565b6138bc816138a9565b81146138c757600080fd5b50565b6000813590506138d9816138b3565b92915050565b600080604083850312156138f6576138f5613841565b5b600061390485828601613894565b9250506020613915858286016138ca565b9150509250929050565b613928816138a9565b82525050565b6000602082019050613943600083018461391f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61397e81613949565b811461398957600080fd5b50565b60008135905061399b81613975565b92915050565b6000602082840312156139b7576139b6613841565b5b60006139c58482850161398c565b91505092915050565b60008115159050919050565b6139e3816139ce565b82525050565b60006020820190506139fe60008301846139da565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a3e578082015181840152602081019050613a23565b83811115613a4d576000848401525b50505050565b6000601f19601f8301169050919050565b6000613a6f82613a04565b613a798185613a0f565b9350613a89818560208601613a20565b613a9281613a53565b840191505092915050565b60006020820190508181036000830152613ab78184613a64565b905092915050565b600060208284031215613ad557613ad4613841565b5b6000613ae3848285016138ca565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613b1157613b10613aec565b5b8235905067ffffffffffffffff811115613b2e57613b2d613af1565b5b602083019150836020820283011115613b4a57613b49613af6565b5b9250929050565b60008060208385031215613b6857613b67613841565b5b600083013567ffffffffffffffff811115613b8657613b85613846565b5b613b9285828601613afb565b92509250509250929050565b613ba78161386b565b82525050565b6000602082019050613bc26000830184613b9e565b92915050565b600080600060408486031215613be157613be0613841565b5b6000613bef868287016138ca565b935050602084013567ffffffffffffffff811115613c1057613c0f613846565b5b613c1c86828701613afb565b92509250509250925092565b60008060408385031215613c3f57613c3e613841565b5b6000613c4d85828601613894565b9250506020613c5e85828601613894565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ca082613a53565b810181811067ffffffffffffffff82111715613cbf57613cbe613c68565b5b80604052505050565b6000613cd2613837565b9050613cde8282613c97565b919050565b600067ffffffffffffffff821115613cfe57613cfd613c68565b5b602082029050602081019050919050565b6000613d22613d1d84613ce3565b613cc8565b90508083825260208201905060208402830185811115613d4557613d44613af6565b5b835b81811015613d6e5780613d5a88826138ca565b845260208401935050602081019050613d47565b5050509392505050565b600082601f830112613d8d57613d8c613aec565b5b8135613d9d848260208601613d0f565b91505092915050565b600080fd5b600067ffffffffffffffff821115613dc657613dc5613c68565b5b613dcf82613a53565b9050602081019050919050565b82818337600083830152505050565b6000613dfe613df984613dab565b613cc8565b905082815260208101848484011115613e1a57613e19613da6565b5b613e25848285613ddc565b509392505050565b600082601f830112613e4257613e41613aec565b5b8135613e52848260208601613deb565b91505092915050565b600080600080600060a08688031215613e7757613e76613841565b5b6000613e8588828901613894565b9550506020613e9688828901613894565b945050604086013567ffffffffffffffff811115613eb757613eb6613846565b5b613ec388828901613d78565b935050606086013567ffffffffffffffff811115613ee457613ee3613846565b5b613ef088828901613d78565b925050608086013567ffffffffffffffff811115613f1157613f10613846565b5b613f1d88828901613e2d565b9150509295509295909350565b6000819050919050565b613f3d81613f2a565b82525050565b6000602082019050613f586000830184613f34565b92915050565b600080600060608486031215613f7757613f76613841565b5b6000613f8586828701613894565b9350506020613f96868287016138ca565b9250506040613fa7868287016138ca565b9150509250925092565b600067ffffffffffffffff821115613fcc57613fcb613c68565b5b602082029050602081019050919050565b6000613ff0613feb84613fb1565b613cc8565b9050808382526020820190506020840283018581111561401357614012613af6565b5b835b8181101561403c57806140288882613894565b845260208401935050602081019050614015565b5050509392505050565b600082601f83011261405b5761405a613aec565b5b813561406b848260208601613fdd565b91505092915050565b6000806040838503121561408b5761408a613841565b5b600083013567ffffffffffffffff8111156140a9576140a8613846565b5b6140b585828601614046565b925050602083013567ffffffffffffffff8111156140d6576140d5613846565b5b6140e285828601613d78565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614121816138a9565b82525050565b60006141338383614118565b60208301905092915050565b6000602082019050919050565b6000614157826140ec565b61416181856140f7565b935061416c83614108565b8060005b8381101561419d5781516141848882614127565b975061418f8361413f565b925050600181019050614170565b5085935050505092915050565b600060208201905081810360008301526141c4818461414c565b905092915050565b6141d581613f2a565b81146141e057600080fd5b50565b6000813590506141f2816141cc565b92915050565b60006020828403121561420e5761420d613841565b5b600061421c848285016141e3565b91505092915050565b60006020828403121561423b5761423a613841565b5b600061424984828501613894565b91505092915050565b60008083601f84011261426857614267613aec565b5b8235905067ffffffffffffffff81111561428557614284613af1565b5b6020830191508360018202830111156142a1576142a0613af6565b5b9250929050565b600080602083850312156142bf576142be613841565b5b600083013567ffffffffffffffff8111156142dd576142dc613846565b5b6142e985828601614252565b92509250509250929050565b6142fe816139ce565b811461430957600080fd5b50565b60008135905061431b816142f5565b92915050565b6000806040838503121561433857614337613841565b5b600061434685828601613894565b92505060206143578582860161430c565b9150509250929050565b60006020828403121561437757614376613841565b5b60006143858482850161430c565b91505092915050565b600080600080600060a086880312156143aa576143a9613841565b5b60006143b888828901613894565b95505060206143c988828901613894565b94505060406143da888289016138ca565b93505060606143eb888289016138ca565b925050608086013567ffffffffffffffff81111561440c5761440b613846565b5b61441888828901613e2d565b9150509295509295909350565b60008060006040848603121561443e5761443d613841565b5b600084013567ffffffffffffffff81111561445c5761445b613846565b5b61446886828701613afb565b9350935050602061447b86828701613894565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806144cc57607f821691505b602082108114156144e0576144df614485565b5b50919050565b7f5245454e5452414e435900000000000000000000000000000000000000000000600082015250565b600061451c600a83613a0f565b9150614527826144e6565b602082019050919050565b6000602082019050818103600083015261454b8161450f565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614588601083613a0f565b915061459382614552565b602082019050919050565b600060208201905081810360008301526145b78161457b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f8826138a9565b9150614603836138a9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561463c5761463b6145be565b5b828202905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061467d602083613a0f565b915061468882614647565b602082019050919050565b600060208201905081810360008301526146ac81614670565b9050919050565b7f4c454e4754485f4d49534d415443480000000000000000000000000000000000600082015250565b60006146e9600f83613a0f565b91506146f4826146b3565b602082019050919050565b60006020820190508181036000830152614718816146dc565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000614755600e83613a0f565b91506147608261471f565b602082019050919050565b6000602082019050818103600083015261478481614748565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147c5826138a9565b91506147d0836138a9565b9250828210156147e3576147e26145be565b5b828203905092915050565b60006147f9826138a9565b9150614804836138a9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614839576148386145be565b5b828201905092915050565b6000604082019050818103600083015261485e818561414c565b90508181036020830152614872818461414c565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006148a28261487b565b6148ac8185614886565b93506148bc818560208601613a20565b6148c581613a53565b840191505092915050565b600060a0820190506148e56000830188613b9e565b6148f26020830187613b9e565b8181036040830152614904818661414c565b90508181036060830152614918818561414c565b9050818103608083015261492c8184614897565b90509695505050505050565b60008151905061494781613975565b92915050565b60006020828403121561496357614962613841565b5b600061497184828501614938565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006149b0601083613a0f565b91506149bb8261497a565b602082019050919050565b600060208201905081810360008301526149df816149a3565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000614a1c601483613a0f565b9150614a27826149e6565b602082019050919050565b60006020820190508181036000830152614a4b81614a0f565b9050919050565b6000614a5d8261386b565b9050919050565b614a6d81614a52565b8114614a7857600080fd5b50565b600081519050614a8a81614a64565b92915050565b600060208284031215614aa657614aa5613841565b5b6000614ab484828501614a7b565b91505092915050565b600081519050614acc816138b3565b92915050565b600060208284031215614ae857614ae7613841565b5b6000614af684828501614abd565b91505092915050565b6000604082019050614b146000830185613b9e565b614b21602083018461391f565b9392505050565b600081519050614b37816142f5565b92915050565b600060208284031215614b5357614b52613841565b5b6000614b6184828501614b28565b91505092915050565b6000604082019050614b7f600083018561391f565b614b8c602083018461391f565b9392505050565b600060a082019050614ba86000830188613b9e565b614bb56020830187613b9e565b614bc2604083018661391f565b614bcf606083018561391f565b8181036080830152614be18184614897565b90509695505050505050565b60008160601b9050919050565b6000614c0582614bed565b9050919050565b6000614c1782614bfa565b9050919050565b614c2f614c2a8261386b565b614c0c565b82525050565b6000614c418284614c1e565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c8a826138a9565b9150614c95836138a9565b925082614ca557614ca4614c50565b5b828206905092915050565b6000614cbb826138a9565b9150614cc6836138a9565b925082614cd657614cd5614c50565b5b828204905092915050565b6000614cec826138a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d1f57614d1e6145be565b5b60018201905091905056fea2646970667358221220e0cd1e35e6b9c88103732a13e9ec38200c4e2067fe6dc28b1d7b9ca402ba109b64736f6c634300080b0033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000000000000000000000000a43616d656f205061737300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000943414d454f504153530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f697066733a2f2f516d56694b5359685a436170537a6f68377357415369354d5637796d61414c474e56777837423978756d583642542f7b69647d2e6a736f6e00

-----Decoded View---------------
Arg [0] : _name (string): Cameo Pass
Arg [1] : _symbol (string): CAMEOPASS
Arg [2] : _uri (string): ipfs://QmViKSYhZCapSzoh7sWASi5MV7ymaALGNVwx7B9xumX6BT/{id}.json
Arg [3] : _mintPrice (uint256): 200000000000000000

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 43616d656f205061737300000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [7] : 43414d454f504153530000000000000000000000000000000000000000000000
Arg [8] : 000000000000000000000000000000000000000000000000000000000000003f
Arg [9] : 697066733a2f2f516d56694b5359685a436170537a6f68377357415369354d56
Arg [10] : 37796d61414c474e56777837423978756d583642542f7b69647d2e6a736f6e00


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.