ETH Price: $2,215.59 (+5.62%)

Token

DXNK (DXNK)
 

Overview

Max Total Supply

2,000 DXNK

Holders

978

Market

Volume (24H)

0.1835 ETH

Min Price (24H)

$91.06 @ 0.041100 ETH

Max Price (24H)

$115.18 @ 0.051986 ETH
Filtered by Token Holder
kittymeowcat.eth
Balance
1 DXNK
0xc9f2158ef5f9eec73f00fbc1f3ebdb2a4a0a7fad
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x63975cE5...6a89b0501
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ERC721SeaDrop

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
london EvmVersion, MIT license
File 1 of 19 : ERC721SeaDrop.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.17;
import {
ERC721ContractMetadata,
ISeaDropTokenContractMetadata
} from "./ERC721ContractMetadata.sol";
import {
INonFungibleSeaDropToken
} from "./interfaces/INonFungibleSeaDropToken.sol";
import { ISeaDrop } from "./interfaces/ISeaDrop.sol";
import {
AllowListData,
PublicDrop,
TokenGatedDropStage,
SignedMintValidationParams
} from "./lib/SeaDropStructs.sol";
import {
ERC721SeaDropStructsErrorsAndEvents
} from "./lib/ERC721SeaDropStructsErrorsAndEvents.sol";
import { ERC721A } from "ERC721A/ERC721A.sol";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 19 : ERC721ContractMetadata.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.17;
import {
ISeaDropTokenContractMetadata
} from "./interfaces/ISeaDropTokenContractMetadata.sol";
import { ERC721A } from "ERC721A/ERC721A.sol";
import { ERC721AConduitPreapproved } from "./lib/ERC721AConduitPreapproved.sol";
import { ERC721TransferValidator } from "./lib/ERC721TransferValidator.sol";
import {
ICreatorToken,
ILegacyCreatorToken
} from "./interfaces/ICreatorToken.sol";
import { ITransferValidator721 } from "./interfaces/ITransferValidator.sol";
import { TwoStepOwnable } from "utility-contracts/TwoStepOwnable.sol";
import { IERC2981 } from "openzeppelin-contracts/interfaces/IERC2981.sol";
import {
IERC165
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 19 : INonFungibleSeaDropToken.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.17;
import {
ISeaDropTokenContractMetadata
} from "./ISeaDropTokenContractMetadata.sol";
import {
AllowListData,
PublicDrop,
TokenGatedDropStage,
SignedMintValidationParams
} from "../lib/SeaDropStructs.sol";
interface INonFungibleSeaDropToken is ISeaDropTokenContractMetadata {
/**
* @dev Revert with an error if a contract is not an allowed
* SeaDrop address.
*/
error OnlyAllowedSeaDrop();
/**
* @dev Emit an event when allowed SeaDrop contracts are updated.
*/
event AllowedSeaDropUpdated(address[] allowedSeaDrop);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 19 : ISeaDrop.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.17;
import {
AllowListData,
MintParams,
PublicDrop,
TokenGatedDropStage,
TokenGatedMintParams,
SignedMintValidationParams
} from "../lib/SeaDropStructs.sol";
import { SeaDropErrorsAndEvents } from "../lib/SeaDropErrorsAndEvents.sol";
interface ISeaDrop is SeaDropErrorsAndEvents {
/**
* @notice Mint a public drop.
*
* @param nftContract The nft contract to mint.
* @param feeRecipient The fee recipient.
* @param minterIfNotPayer The mint recipient if different than the payer.
* @param quantity The number of tokens to mint.
*/
function mintPublic(
address nftContract,
address feeRecipient,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 19 : SeaDropStructs.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.17;
/**
* @notice A struct defining public drop data.
* Designed to fit efficiently in one storage slot.
*
* @param mintPrice The mint price per token. (Up to 1.2m
* of native token, e.g. ETH, MATIC)
* @param startTime The start time, ensure this is not zero.
* @param endTIme The end time, ensure this is not zero.
* @param maxTotalMintableByWallet Maximum total number of mints a user is
* allowed. (The limit for this field is
* 2^16 - 1)
* @param feeBps Fee out of 10_000 basis points to be
* collected.
* @param restrictFeeRecipients If false, allow any fee recipient;
* if true, check fee recipient is allowed.
*/
struct PublicDrop {
uint80 mintPrice; // 80/256 bits
uint48 startTime; // 128/256 bits
uint48 endTime; // 176/256 bits
uint16 maxTotalMintableByWallet; // 224/256 bits
uint16 feeBps; // 240/256 bits
bool restrictFeeRecipients; // 248/256 bits
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 19 : ERC721SeaDropStructsErrorsAndEvents.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.17;
import {
AllowListData,
PublicDrop,
SignedMintValidationParams,
TokenGatedDropStage
} from "./SeaDropStructs.sol";
interface ERC721SeaDropStructsErrorsAndEvents {
/**
* @notice Revert with an error if mint exceeds the max supply.
*/
error MintQuantityExceedsMaxSupply(uint256 total, uint256 maxSupply);
/**
* @notice Revert with an error if the number of token gated
* allowedNftTokens doesn't match the length of supplied
* drop stages.
*/
error TokenGatedMismatch();
/**
* @notice Revert with an error if the number of signers doesn't match
* the length of supplied signedMintValidationParams
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 19 : ERC721A.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
// ERC721A Contracts v4.2.2
// Creator: Chiru Labs
pragma solidity ^0.8.4;
import './IERC721A.sol';
/**
* @dev Interface of ERC721 token receiver.
*/
interface ERC721A__IERC721Receiver {
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
/**
* @title ERC721A
*
* @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)
* Non-Fungible Token Standard, including the Metadata extension.
* Optimized for lower gas during batch mints.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 19 : 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/transmissions11/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 locked = 1;
modifier nonReentrant() virtual {
require(locked == 1, "REENTRANCY");
locked = 2;
_;
locked = 1;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 19 : IERC165.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
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 19 : ISeaDropTokenContractMetadata.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.17;
import { IERC2981 } from "openzeppelin-contracts/interfaces/IERC2981.sol";
interface ISeaDropTokenContractMetadata is IERC2981 {
/**
* @notice Throw if the max supply exceeds uint64, a limit
* due to the storage of bit-packed variables in ERC721A.
*/
error CannotExceedMaxSupplyOfUint64(uint256 newMaxSupply);
/**
* @dev Revert with an error when attempting to set the provenance
* hash after the mint has started.
*/
error ProvenanceHashCannotBeSetAfterMintStarted();
/**
* @dev Revert if the royalty basis points is greater than 10_000.
*/
error InvalidRoyaltyBasisPoints(uint256 basisPoints);
/**
* @dev Revert if the royalty address is being set to the zero address.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 19 : ERC721AConduitPreapproved.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.17;
import { ERC721A } from "ERC721A/ERC721A.sol";
/**
* @title ERC721AConduitPreapproved
* @notice ERC721A with the OpenSea conduit preapproved.
*/
abstract contract ERC721AConduitPreapproved is ERC721A {
/// @dev The canonical OpenSea conduit.
address internal constant _CONDUIT =
0x1E0049783F008A0085193E00003D00cd54003c71;
/**
* @notice Deploy the token contract.
*
* @param name The name of the token.
* @param symbol The symbol of the token.
*/
constructor(
string memory name,
string memory symbol
) ERC721A(name, symbol) {}
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 19 : ERC721TransferValidator.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.17;
import { ICreatorToken } from "../interfaces/ICreatorToken.sol";
/**
* @title ERC721TransferValidator
* @notice Functionality to use a transfer validator.
*/
abstract contract ERC721TransferValidator is ICreatorToken {
/// @dev Store the transfer validator. The null address means no transfer validator is set.
address internal _transferValidator;
/// @notice Revert with an error if the transfer validator is being set to the same address.
error SameTransferValidator();
/// @notice Returns the currently active transfer validator.
/// The null address means no transfer validator is set.
function getTransferValidator() external view returns (address) {
return _transferValidator;
}
/// @notice Set the transfer validator.
/// The external method that uses this must include access control.
function _setTransferValidator(address newValidator) internal {
address oldValidator = _transferValidator;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 19 : ICreatorToken.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface ICreatorToken {
event TransferValidatorUpdated(address oldValidator, address newValidator);
function getTransferValidator() external view returns (address validator);
function getTransferValidationFunction()
external
view
returns (bytes4 functionSignature, bool isViewFunction);
function setTransferValidator(address validator) external;
}
interface ILegacyCreatorToken {
event TransferValidatorUpdated(address oldValidator, address newValidator);
function getTransferValidator() external view returns (address validator);
function setTransferValidator(address validator) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 19 : ITransferValidator.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
interface ITransferValidator721 {
/// @notice Ensure that a transfer has been authorized for a specific tokenId
function validateTransfer(
address caller,
address from,
address to,
uint256 tokenId
) external view;
}
interface ITransferValidator1155 {
/// @notice Ensure that a transfer has been authorized for a specific amount of a specific tokenId, and reduce the transferable amount remaining
function validateTransfer(
address caller,
address from,
address to,
uint256 tokenId,
uint256 amount
) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 19 : 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.4;
import {ConstructorInitializable} from "./ConstructorInitializable.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 ConstructorInitializable {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
address internal potentialOwner;
event PotentialOwnerUpdated(address newPotentialAdministrator);
error NewOwnerIsZeroAddress();
error NotNextOwner();
error OnlyOwner();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 19 : IERC2981.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
// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)
pragma solidity ^0.8.0;
import "../utils/introspection/IERC165.sol";
/**
* @dev Interface for the NFT Royalty Standard.
*
* A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal
* support for royalty payments across all NFT marketplaces and ecosystem participants.
*
* _Available since v4.5._
*/
interface IERC2981 is IERC165 {
/**
* @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of
* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.
*/
function royaltyInfo(uint256 tokenId, uint256 salePrice)
external
view
returns (address receiver, uint256 royaltyAmount);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 19 : SeaDropErrorsAndEvents.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.17;
import { PublicDrop, TokenGatedDropStage, SignedMintValidationParams } from "./SeaDropStructs.sol";
interface SeaDropErrorsAndEvents {
/**
* @dev Revert with an error if the drop stage is not active.
*/
error NotActive(
uint256 currentTimestamp,
uint256 startTimestamp,
uint256 endTimestamp
);
/**
* @dev Revert with an error if the mint quantity is zero.
*/
error MintQuantityCannotBeZero();
/**
* @dev Revert with an error if the mint quantity exceeds the max allowed
* to be minted per wallet.
*/
error MintQuantityExceedsMaxMintedPerWallet(uint256 total, uint256 allowed);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 19 : IERC721A.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
// ERC721A Contracts v4.2.2
// Creator: Chiru Labs
pragma solidity ^0.8.4;
/**
* @dev Interface of ERC721A.
*/
interface IERC721A {
/**
* The caller must own the token or be an approved operator.
*/
error ApprovalCallerNotOwnerNorApproved();
/**
* The token does not exist.
*/
error ApprovalQueryForNonexistentToken();
/**
* Cannot query the balance for the zero address.
*/
error BalanceQueryForZeroAddress();
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 19 : ConstructorInitializable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4;
/**
* @author emo.eth
* @notice Abstract smart contract that provides an onlyUninitialized modifier which only allows calling when
* from within a constructor of some sort, whether directly instantiating an inherting contract,
* or when delegatecalling from a proxy
*/
abstract contract ConstructorInitializable {
error AlreadyInitialized();
modifier onlyConstructor() {
if (address(this).code.length != 0) {
revert AlreadyInitialized();
}
_;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
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
{
"remappings": [
"ERC721A/=lib/ERC721A/contracts/",
"ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/",
"ds-test/=lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"murky/=lib/murky/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"operator-filter-registry/=lib/operator-filter-registry/src/",
"seadrop/=src/",
"solmate/=lib/solmate/src/",
"utility-contracts/=lib/utility-contracts/src/",
"create2-scripts/=lib/create2-helpers/script/",
"@openzeppelin/=lib/seaport/lib/openzeppelin-contracts/",
"@rari-capital/solmate/=lib/seaport/lib/solmate/",
"create2-helpers/=lib/create2-helpers/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"seaport-core/=lib/seaport/lib/seaport-core/",
"seaport-sol/=lib/seaport/lib/seaport-sol/",
"seaport-types/=lib/seaport/lib/seaport-types/",
"seaport/=lib/seaport/",
"solady/=lib/solady/",
"solarray/=lib/seaport/lib/solarray/src/"
],
"optimizer": {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address[]","name":"allowedSeaDrop","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"CannotExceedMaxSupplyOfUint64","type":"error"},{"inputs":[{"internalType":"uint256","name":"basisPoints","type":"uint256"}],"name":"InvalidRoyaltyBasisPoints","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"name":"MintQuantityExceedsMaxSupply","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NotNextOwner","type":"error"},{"inputs":[],"name":"OnlyAllowedSeaDrop","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"ProvenanceHashCannotBeSetAfterMintStarted","type":"error"},{"inputs":[],"name":"RoyaltyAddressCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"SameTransferValidator","type":"error"},{"inputs":[],"name":"SignersMismatch","type":"error"},{"inputs":[],"name":"TokenGatedMismatch","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"allowedSeaDrop","type":"address[]"}],"name":"AllowedSeaDropUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"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":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"newContractURI","type":"string"}],"name":"ContractURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"MaxSupplyUpdated","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":"newPotentialAdministrator","type":"address"}],"name":"PotentialOwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"previousHash","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"newHash","type":"bytes32"}],"name":"ProvenanceHashUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"bps","type":"uint256"}],"name":"RoyaltyInfoUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"SeaDropTokenDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldValidator","type":"address"},{"indexed":false,"internalType":"address","name":"newValidator","type":"address"}],"name":"TransferValidatorUpdated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"internalType":"uint256","name":"toTokenId","type":"uint256"}],"name":"emitBatchMetadataUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"getMintStats","outputs":[{"internalType":"uint256","name":"minterNumMinted","type":"uint256"},{"internalType":"uint256","name":"currentTotalSupply","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferValidationFunction","outputs":[{"internalType":"bytes4","name":"functionSignature","type":"bytes4"},{"internalType":"bool","name":"isViewFunction","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTransferValidator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintSeaDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"address","name":"seaDropImpl","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct PublicDrop","name":"publicDrop","type":"tuple"},{"internalType":"string","name":"dropURI","type":"string"},{"components":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"string[]","name":"publicKeyURIs","type":"string[]"},{"internalType":"string","name":"allowListURI","type":"string"}],"internalType":"struct AllowListData","name":"allowListData","type":"tuple"},{"internalType":"address","name":"creatorPayoutAddress","type":"address"},{"internalType":"bytes32","name":"provenanceHash","type":"bytes32"},{"internalType":"address[]","name":"allowedFeeRecipients","type":"address[]"},{"internalType":"address[]","name":"disallowedFeeRecipients","type":"address[]"},{"internalType":"address[]","name":"allowedPayers","type":"address[]"},{"internalType":"address[]","name":"disallowedPayers","type":"address[]"},{"internalType":"address[]","name":"tokenGatedAllowedNftTokens","type":"address[]"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint8","name":"dropStageIndex","type":"uint8"},{"internalType":"uint32","name":"maxTokenSupplyForStage","type":"uint32"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct TokenGatedDropStage[]","name":"tokenGatedDropStages","type":"tuple[]"},{"internalType":"address[]","name":"disallowedTokenGatedAllowedNftTokens","type":"address[]"},{"internalType":"address[]","name":"signers","type":"address[]"},{"components":[{"internalType":"uint80","name":"minMintPrice","type":"uint80"},{"internalType":"uint24","name":"maxMaxTotalMintableByWallet","type":"uint24"},{"internalType":"uint40","name":"minStartTime","type":"uint40"},{"internalType":"uint40","name":"maxEndTime","type":"uint40"},{"internalType":"uint40","name":"maxMaxTokenSupplyForStage","type":"uint40"},{"internalType":"uint16","name":"minFeeBps","type":"uint16"},{"internalType":"uint16","name":"maxFeeBps","type":"uint16"}],"internalType":"struct SignedMintValidationParams[]","name":"signedMintValidationParams","type":"tuple[]"},{"internalType":"address[]","name":"disallowedSigners","type":"address[]"}],"internalType":"struct ERC721SeaDropStructsErrorsAndEvents.MultiConfigureStruct","name":"config","type":"tuple"}],"name":"multiConfigure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"provenanceHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyBasisPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newContractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newProvenanceHash","type":"bytes32"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"royaltyAddress","type":"address"},{"internalType":"uint96","name":"royaltyBps","type":"uint96"}],"internalType":"struct ISeaDropTokenContractMetadata.RoyaltyInfo","name":"newInfo","type":"tuple"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newValidator","type":"address"}],"name":"setTransferValidator","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":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPotentialOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"components":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"string[]","name":"publicKeyURIs","type":"string[]"},{"internalType":"string","name":"allowListURI","type":"string"}],"internalType":"struct AllowListData","name":"allowListData","type":"tuple"}],"name":"updateAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"address","name":"feeRecipient","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"updateAllowedFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"allowedSeaDrop","type":"address[]"}],"name":"updateAllowedSeaDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"address","name":"payoutAddress","type":"address"}],"name":"updateCreatorPayoutAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"string","name":"dropURI","type":"string"}],"name":"updateDropURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"updatePayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct PublicDrop","name":"publicDrop","type":"tuple"}],"name":"updatePublicDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"address","name":"signer","type":"address"},{"components":[{"internalType":"uint80","name":"minMintPrice","type":"uint80"},{"internalType":"uint24","name":"maxMaxTotalMintableByWallet","type":"uint24"},{"internalType":"uint40","name":"minStartTime","type":"uint40"},{"internalType":"uint40","name":"maxEndTime","type":"uint40"},{"internalType":"uint40","name":"maxMaxTokenSupplyForStage","type":"uint40"},{"internalType":"uint16","name":"minFeeBps","type":"uint16"},{"internalType":"uint16","name":"maxFeeBps","type":"uint16"}],"internalType":"struct SignedMintValidationParams","name":"signedMintValidationParams","type":"tuple"}],"name":"updateSignedMintValidationParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"seaDropImpl","type":"address"},{"internalType":"address","name":"allowedNftToken","type":"address"},{"components":[{"internalType":"uint80","name":"mintPrice","type":"uint80"},{"internalType":"uint16","name":"maxTotalMintableByWallet","type":"uint16"},{"internalType":"uint48","name":"startTime","type":"uint48"},{"internalType":"uint48","name":"endTime","type":"uint48"},{"internalType":"uint8","name":"dropStageIndex","type":"uint8"},{"internalType":"uint32","name":"maxTokenSupplyForStage","type":"uint32"},{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"restrictFeeRecipients","type":"bool"}],"internalType":"struct TokenGatedDropStage","name":"dropStage","type":"tuple"}],"name":"updateTokenGatedDrop","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016010553480156200001657600080fd5b506040516200525a3803806200525a8339810160408190526200003991620002f8565b82828181818160026200004d83826200049e565b5060036200005c82826200049e565b5060016000555062000072925050620001229050565b5050805160005b81811015620000d8576001601160008584815181106200009d576200009d6200056a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000079565b508151620000ee906012906020850190620001a1565b506040517fd7aca75208b9be5ffc04c6a01922020ffd62b55e68e502e317f5344960279af890600090a15050505062000580565b303b15620001425760405162dc149f60e41b815260040160405180910390fd5b6200014d336200014f565b565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215620001f9579160200282015b82811115620001f957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001c2565b50620002079291506200020b565b5090565b5b808211156200020757600081556001016200020c565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000263576200026362000222565b604052919050565b600082601f8301126200027d57600080fd5b81516001600160401b0381111562000299576200029962000222565b6020620002af601f8301601f1916820162000238565b8281528582848701011115620002c457600080fd5b60005b83811015620002e4578581018301518282018401528201620002c7565b506000928101909101919091529392505050565b6000806000606084860312156200030e57600080fd5b83516001600160401b03808211156200032657600080fd5b62000334878388016200026b565b94506020915081860151818111156200034c57600080fd5b6200035a888289016200026b565b9450506040860151818111156200037057600080fd5b8601601f810188136200038257600080fd5b80518281111562000397576200039762000222565b8060051b9250620003aa84840162000238565b818152928201840192848101908a851115620003c557600080fd5b928501925b84841015620003ff57835192506001600160a01b0383168314620003ee5760008081fd5b8282529285019290850190620003ca565b8096505050505050509250925092565b600181811c908216806200042457607f821691505b6020821081036200044557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200049957600081815260208120601f850160051c81016020861015620004745750805b601f850160051c820191505b81811015620004955782815560010162000480565b5050505b505050565b81516001600160401b03811115620004ba57620004ba62000222565b620004d281620004cb84546200040f565b846200044b565b602080601f8311600181146200050a5760008415620004f15750858301515b600019600386901b1c1916600185901b17855562000495565b600085815260208120601f198616915b828110156200053b578886015182559484019460019091019084016200051a565b50858210156200055a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b614cca80620005906000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80636c0360eb116101a7578063a22cb465116100ee578063c87b56dd11610097578063e8a3d48511610071578063e8a3d48514610736578063e985e9c51461073e578063f2fde38b1461075157600080fd5b8063c87b56dd14610708578063cb743ba81461071b578063d5abeb011461072e57600080fd5b8063ad2f852a116100c8578063ad2f852a146106cf578063b88d4fde146106ed578063c6ab67a31461070057600080fd5b8063a22cb46514610696578063a4830114146106a9578063a9fc664e146106bc57600080fd5b80637bc2be7611610150578063911f456b1161012a578063911f456b14610668578063938e3d7b1461067b57806395d89b411461068e57600080fd5b80637bc2be7614610609578063840e15d41461061c5780638da5cb5b1461064a57600080fd5b8063715018a611610181578063715018a6146105e657806379ba5097146105ee5780637a05bc82146105f657600080fd5b80636c0360eb146105b85780636f8b44b0146105c057806370a08231146105d357600080fd5b80633680620d1161026b578063511aa644116102145780636352211e116101ee5780636352211e1461057f57806364869dad1461059257806366251b69146105a557600080fd5b8063511aa6441461054657806355f804b31461055957806360c308b61461056c57600080fd5b806342966c681161024557806342966c681461050d57806344dae42c1461052057806348a4c1011461053357600080fd5b80633680620d146104b957806342260b5d146104cc57806342842e0e146104fa57600080fd5b80630d705df6116102cd57806323452b9c116102a757806323452b9c1461045f57806323b872dd146104675780632a55205a1461047a57600080fd5b80630d705df6146103e057806318160ddd146104145780631b73593c1461044c57600080fd5b8063095ea7b3116102fe578063095ea7b31461039a578063098144d4146103af578063099b6bfa146103cd57600080fd5b806301ffc9a71461032557806306fdde031461034d578063081812fc14610362575b600080fd5b6103386103333660046137d4565b610764565b60405190151581526020015b60405180910390f35b61035561080c565b604051610344919061385f565b610375610370366004613872565b61089e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610344565b6103ad6103a83660046138ad565b610908565b005b60085473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6103db366004613872565b6109f3565b604080517fcaee23ea0000000000000000000000000000000000000000000000000000000081526000602082015201610344565b600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610344565b6103ad61045a3660046138d9565b610a9d565b6103ad610b36565b6103ad610475366004613938565b610b9c565b61048d610488366004613979565b610e3f565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610344565b6103ad6104c736600461399b565b610ea8565b600f547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661043e565b6103ad610508366004613938565b610f0b565b6103ad61051b366004613872565b610f2b565b6103ad61052e3660046139f2565b610f39565b6103ad610541366004613a1f565b6110aa565b6103ad610554366004613b61565b61114a565b6103ad610567366004613c97565b6111af565b6103ad61057a366004613cd9565b611243565b61037561058d366004613872565b611255565b6103ad6105a03660046138ad565b611260565b6103ad6105b3366004613d4e565b6113a0565b610355611405565b6103ad6105ce366004613872565b611414565b61043e6105e1366004613d7c565b611496565b6103ad611518565b6103ad61152c565b6103ad610604366004613d99565b6115e3565b6103ad610617366004613dee565b611648565b61062f61062a366004613d7c565b6116ad565b60408051938452602084019290925290820152606001610344565b60095473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad610676366004613e61565b61171a565b6103ad610689366004613c97565b6124b5565b6103556124fc565b6103ad6106a4366004613e9d565b61250b565b6103ad6106b7366004613979565b6125a2565b6103ad6106ca366004613d7c565b6125e0565b600f5473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6106fb366004613ed2565b6125f1565b600e5461043e565b610355610716366004613872565b612661565b6103ad610729366004613a1f565b612786565b600b5461043e565b6103556127f3565b61033861074c366004613d4e565b612802565b6103ad61075f366004613d7c565b612887565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1890fe8e0000000000000000000000000000000000000000000000000000000014806107f757507fffffffff0000000000000000000000000000000000000000000000000000000082167f9c15441500000000000000000000000000000000000000000000000000000000145b8061080657506108068261294f565b92915050565b60606002805461081b90613fb4565b80601f016020809104026020016040519081016040528092919081815260200182805461084790613fb4565b80156108945780601f1061086957610100808354040283529160200191610894565b820191906000526020600020905b81548152906001019060200180831161087757829003601f168201915b5050505050905090565b60006108a982612a89565b6108df576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061091382611255565b90503373ffffffffffffffffffffffffffffffffffffffff8216146109725761093c8133612802565b610972576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6109fb612ad7565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610a57576040517fe03264af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b610aa5612ad7565b610aae82612b67565b6040517f01308e6500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906301308e6590610b009084906004016140a1565b600060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050505050565b610b3e612bcb565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b6000610ba782612c1c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0e576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090208054610c478187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b610c8b57610c558633612802565b610c8b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610cd8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce58686866001612cdb565b8015610cf057600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610ddf57600184016000818152600460205260408120549003610ddd576000548114610ddd5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610b2e565b600f8054600091829161271090610e7c907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16866140de565b610e8691906140f5565b905473ffffffffffffffffffffffffffffffffffffffff169590945092505050565b610eb0612ad7565b610eb982612b67565b6040517febb4a55f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063ebb4a55f90610b009084906004016142ed565b610f26838383604051806020016040528060008152506125f1565b505050565b610f36816001612dd5565b50565b610f41612ad7565b6000610f506020830183613d7c565b73ffffffffffffffffffffffffffffffffffffffff1603610f9d576040517f1cc0baef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710610fb0604083016020840161431a565b6bffffffffffffffffffffffff16111561101c57610fd4604082016020830161431a565b6040517f3cadbafb0000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b80600f6110298282614337565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d905061105a6020830183613d7c565b61106a604084016020850161431a565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152015b60405180910390a150565b6110b2612ad7565b6110bb83612b67565b6040517f8e7d1e4300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b50505050505050565b611152612ad7565b61115b83612b67565b6040517f4d38017800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634d38017890611113908590859060040161439c565b6111b7612ad7565b600c6111c4828483614476565b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011561123f577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60018061122060005490565b61122a9190614590565b60408051928352602083019190915201610a91565b5050565b61124b612bcb565b61123f8282612f92565b600061080682612c1c565b6010546001146112cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401611013565b60026010556112da33612b67565b600b54816113096000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61131391906145a3565b111561138d57806113456000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61134f91906145a3565b600b546040517fe12d231400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401611013565b6113978282613102565b50506001601055565b6113a8612ad7565b6113b182612b67565b6040517f12738db800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528316906312738db890602401610b00565b606061140f61311c565b905090565b61141c612ad7565b67ffffffffffffffff811115611461576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401611013565b600b8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200161109f565b600073ffffffffffffffffffffffffffffffffffffffff82166114e5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b611520612bcb565b61152a600061312b565b565b600a5473ffffffffffffffffffffffffffffffffffffffff1633811461157e576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1610f368161312b565b6115eb612ad7565b6115f483612b67565b6040517fb957d0cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b957d0cb9061111390859085906004016145b6565b611650612ad7565b61165983612b67565b6040517ffd9ab22a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063fd9ab22a90611113908590859060040161469b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604080822054901c67ffffffffffffffff16908061170d6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600b549395909450915050565b611722612bcb565b803515611794576040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152813560048201523090636f8b44b090602401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b6117a160208201826146c6565b15905061180b57306355f804b36117bb60208401846146c6565b6040518363ffffffff1660e01b81526004016117d89291906145b6565b600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050505b61181860408201826146c6565b159050611882573063938e3d7b61183260408401846146c6565b6040518363ffffffff1660e01b815260040161184f9291906145b6565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050505b6118a261189560e0830160c0840161472b565b65ffffffffffff16151590565b6118b561189560c0840160a0850161472b565b176001036119275730631b73593c6118d36080840160608501613d7c565b836080016040518363ffffffff1660e01b81526004016118f4929190614746565b600060405180830381600087803b15801561190e57600080fd5b505af1158015611922573d6000803e3d6000fd5b505050505b6119356101408201826146c6565b1590506119b15730637a05bc826119526080840160608501613d7c565b6119606101408501856146c6565b6040518463ffffffff1660e01b815260040161197e93929190614770565b600060405180830381600087803b15801561199857600080fd5b505af11580156119ac573d6000803e3d6000fd5b505050505b60006119c16101608301836147a9565b3514611a3b5730633680620d6119dd6080840160608501613d7c565b6119eb6101608501856147a9565b6040518363ffffffff1660e01b8152600401611a089291906147e7565b600060405180830381600087803b158015611a2257600080fd5b505af1158015611a36573d6000803e3d6000fd5b505050505b6000611a4f6101a083016101808401613d7c565b73ffffffffffffffffffffffffffffffffffffffff1614611b1857306366251b69611a806080840160608501613d7c565b611a926101a085016101808601613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050505b6101a081013515611b92576040517f099b6bfa0000000000000000000000000000000000000000000000000000000081526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050505b6000611ba26101c0830183614816565b90501115611ca65760005b611bbb6101c0830183614816565b9050811015611ca457306348a4c101611bda6080850160608601613d7c565b611be86101c0860186614816565b85818110611bf857611bf861487e565b9050602002016020810190611c0d9190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b50505050806001019050611bad565b505b6000611cb66101e0830183614816565b90501115611dba5760005b611ccf6101e0830183614816565b9050811015611db857306348a4c101611cee6080850160608601613d7c565b611cfc6101e0860186614816565b85818110611d0c57611d0c61487e565b9050602002016020810190611d219190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b50505050806001019050611cc1565b505b6000611dca610200830183614816565b90501115611ece5760005b611de3610200830183614816565b9050811015611ecc573063cb743ba8611e026080850160608601613d7c565b611e10610200860186614816565b85818110611e2057611e2061487e565b9050602002016020810190611e359190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b50505050806001019050611dd5565b505b6000611ede610220830183614816565b90501115611fe25760005b611ef7610220830183614816565b9050811015611fe0573063cb743ba8611f166080850160608601613d7c565b611f24610220860186614816565b85818110611f3457611f3461487e565b9050602002016020810190611f499190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611fbd57600080fd5b505af1158015611fd1573d6000803e3d6000fd5b50505050806001019050611ee9565b505b6000611ff26102608301836148ad565b9050111561213657612008610240820182614816565b90506120186102608301836148ad565b905014612051576040517fb81aa63900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6120626102608301836148ad565b90508110156121345730637bc2be766120816080850160608601613d7c565b61208f610240860186614816565b8581811061209f5761209f61487e565b90506020020160208101906120b49190613d7c565b6120c26102608701876148ad565b868181106120d2576120d261487e565b905061010002016040518463ffffffff1660e01b81526004016120f793929190614915565b600060405180830381600087803b15801561211157600080fd5b505af1158015612125573d6000803e3d6000fd5b50505050806001019050612054565b505b6000612146610280830183614816565b905011156122515760005b61215f610280830183614816565b905081101561224f576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be766121bf6080860160608701613d7c565b6121cd610280870187614816565b868181106121dd576121dd61487e565b90506020020160208101906121f29190613d7c565b846040518463ffffffff1660e01b815260040161221193929190614948565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b5050505081600101915050612151565b505b60006122616102c0830183614a0b565b905011156123a4576122776102a0820182614816565b90506122876102c0830183614a0b565b9050146122c0576040517f74ef6df700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6122d16102c0830183614a0b565b90508110156123a2573063511aa6446122f06080850160608601613d7c565b6122fe6102a0860186614816565b8581811061230e5761230e61487e565b90506020020160208101906123239190613d7c565b6123316102c0870187614a0b565b868181106123415761234161487e565b905060e002016040518463ffffffff1660e01b815260040161236593929190614a72565b600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b505050508060010190506122c3565b505b60006123b46102e0830183614816565b90501115610f365760005b6123cd6102e0830183614816565b905081101561123f576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa6446124256080860160608701613d7c565b6124336102e0870187614816565b868181106124435761244361487e565b90506020020160208101906124589190613d7c565b846040518463ffffffff1660e01b815260040161247793929190614b3b565b600060405180830381600087803b15801561249157600080fd5b505af11580156124a5573d6000803e3d6000fd5b50505050816001019150506123bf565b6124bd612ad7565b600d6124ca828483614476565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac373788282604051610a919291906145b6565b60606003805461081b90613fb4565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6125aa612ad7565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610a91565b6125e8612bcb565b610f36816131a2565b6125fc848484610b9c565b73ffffffffffffffffffffffffffffffffffffffff83163b1561265b5761262584848484613275565b61265b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061266c82612a89565b6126a2576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006126ac61311c565b905080516000036126cd575050604080516020810190915260008152919050565b6040805180820190915260018082527f2f0000000000000000000000000000000000000000000000000000000000000060209092018290528251839161271291614590565b815181106127225761272261487e565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146127545792915050565b8061275e846133ef565b60405160200161276f929190614bd7565b604051602081830303815290604052915050919050565b61278e612ad7565b61279783612b67565b6040517f7f2a5cca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690637f2a5cca90604401611113565b6060600d805461081b90613fb4565b60007fffffffffffffffffffffffffe1ffb687c0ff75ff7ae6c1ffffc2ff32abffc38f73ffffffffffffffffffffffffffffffffffffffff83160161284957506001610806565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b61288f612bcb565b73ffffffffffffffffffffffffffffffffffffffff81166128dc576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200161109f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806129e257507fffffffff0000000000000000000000000000000000000000000000000000000082167fad0d7f6c00000000000000000000000000000000000000000000000000000000145b80612a2e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa07d229a00000000000000000000000000000000000000000000000000000000145b80612a7a57507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610806575061080682613451565b600081600111158015612a9d575060005482105b80156108065750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b303314612b2d612afc60095473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490565b1760000361152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205460ff161515600114610f36576040517f15e26ff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff16331461152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008180600111612ca957600054811015612ca957600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612ca7575b8060000361288057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054612c68565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841615801590612d15575073ffffffffffffffffffffffffffffffffffffffff831615155b1561265b5760085473ffffffffffffffffffffffffffffffffffffffff168015612dce576040517fcaee23ea00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b158015612db557600080fd5b505afa158015612dc9573d6000803e3d6000fd5b505050505b5050505050565b6000612de083612c1c565b905080600080612dfe86600090815260066020526040902080549091565b915091508415612e5757612e13818433610c25565b612e5757612e218333612802565b612e57576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e65836000886001612cdb565b8015612e7057600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000085169003612f3d57600186016000818152600460205260408120549003612f3b576000548114612f3b5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b6012548160005b828110156130215760006011600060128481548110612fba57612fba61487e565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612f99565b5060005b818110156130b5576001601160008787858181106130455761304561487e565b905060200201602081019061305a9190613d7c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101613025565b506130c260128585613709565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d84846040516130f4929190614c06565b60405180910390a150505050565b61123f828260405180602001604052806000815250613532565b6060600c805461081b90613fb4565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60085473ffffffffffffffffffffffffffffffffffffffff90811690821681036131f8576040517f4a3bb19e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101610a91565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906132d0903390899088908890600401614c61565b6020604051808303816000875af1925050508015613329575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261332691810190614ca0565b60015b6133a0573d808015613357576040519150601f19603f3d011682016040523d82523d6000602084013e61335c565b606091505b508051600003613398576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061340957508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806134e457507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806108065750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b61353c83836135be565b73ffffffffffffffffffffffffffffffffffffffff83163b15610f26576000548281035b6135736000868380600101945086613275565b6135a9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613560578160005414612dce57600080fd5b60008054908290036135fc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136096000848385612cdb565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146136c557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161368d565b5081600003613700576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215613781579160200282015b828111156137815781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190613729565b5061378d929150613791565b5090565b5b8082111561378d5760008155600101613792565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f3657600080fd5b6000602082840312156137e657600080fd5b8135612880816137a6565b60005b8381101561380c5781810151838201526020016137f4565b50506000910152565b6000815180845261382d8160208601602086016137f1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128806020830184613815565b60006020828403121561388457600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f3657600080fd5b600080604083850312156138c057600080fd5b82356138cb8161388b565b946020939093013593505050565b60008082840360e08112156138ed57600080fd5b83356138f88161388b565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561392a57600080fd5b506020830190509250929050565b60008060006060848603121561394d57600080fd5b83356139588161388b565b925060208401356139688161388b565b929592945050506040919091013590565b6000806040838503121561398c57600080fd5b50508035926020909101359150565b600080604083850312156139ae57600080fd5b82356139b98161388b565b9150602083013567ffffffffffffffff8111156139d557600080fd5b8301606081860312156139e757600080fd5b809150509250929050565b600060408284031215613a0457600080fd5b50919050565b80358015158114613a1a57600080fd5b919050565b600080600060608486031215613a3457600080fd5b8335613a3f8161388b565b92506020840135613a4f8161388b565b9150613a5d60408501613a0a565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715613ab857613ab8613a66565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b0557613b05613a66565b604052919050565b803569ffffffffffffffffffff81168114613a1a57600080fd5b803562ffffff81168114613a1a57600080fd5b803564ffffffffff81168114613a1a57600080fd5b803561ffff81168114613a1a57600080fd5b6000806000838503610120811215613b7857600080fd5b8435613b838161388b565b93506020850135613b938161388b565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613bc557600080fd5b50613bce613a95565b613bda60408601613b0d565b8152613be860608601613b27565b6020820152613bf960808601613b3a565b6040820152613c0a60a08601613b3a565b6060820152613c1b60c08601613b3a565b6080820152613c2c60e08601613b4f565b60a0820152613c3e6101008601613b4f565b60c0820152809150509250925092565b60008083601f840112613c6057600080fd5b50813567ffffffffffffffff811115613c7857600080fd5b602083019150836020828501011115613c9057600080fd5b9250929050565b60008060208385031215613caa57600080fd5b823567ffffffffffffffff811115613cc157600080fd5b613ccd85828601613c4e565b90969095509350505050565b60008060208385031215613cec57600080fd5b823567ffffffffffffffff80821115613d0457600080fd5b818501915085601f830112613d1857600080fd5b813581811115613d2757600080fd5b8660208260051b8501011115613d3c57600080fd5b60209290920196919550909350505050565b60008060408385031215613d6157600080fd5b8235613d6c8161388b565b915060208301356139e78161388b565b600060208284031215613d8e57600080fd5b81356128808161388b565b600080600060408486031215613dae57600080fd5b8335613db98161388b565b9250602084013567ffffffffffffffff811115613dd557600080fd5b613de186828701613c4e565b9497909650939450505050565b6000806000838503610140811215613e0557600080fd5b8435613e108161388b565b93506020850135613e208161388b565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613e5357600080fd5b506040840190509250925092565b600060208284031215613e7357600080fd5b813567ffffffffffffffff811115613e8a57600080fd5b8201610300818503121561288057600080fd5b60008060408385031215613eb057600080fd5b8235613ebb8161388b565b9150613ec960208401613a0a565b90509250929050565b60008060008060808587031215613ee857600080fd5b8435613ef38161388b565b9350602085810135613f048161388b565b935060408601359250606086013567ffffffffffffffff80821115613f2857600080fd5b818801915088601f830112613f3c57600080fd5b813581811115613f4e57613f4e613a66565b613f7e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613abe565b91508082528984828501011115613f9457600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c90821680613fc857607f821691505b602082108103613a04577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b803565ffffffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff61402b82613b0d565b16825261403a60208201614001565b65ffffffffffff80821660208501528061405660408501614001565b166040850152505061406a60608201613b4f565b61ffff80821660608501528061408260808501613b4f565b166080850152505061409660a08201613a0a565b151560a08301525050565b60c081016108068284614017565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610806576108066140af565b60008261412b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126141ae57600080fd5b830160208101925035905067ffffffffffffffff8111156141ce57600080fd5b803603821315613c9057600080fd5b600060608301823584526020808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301811261421d57600080fd5b8401818101903567ffffffffffffffff81111561423957600080fd5b8060051b80360383131561424c57600080fd5b6060848901529381905260809387018401938290880160005b838110156142bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a880301825261429e8386614179565b6142a9898284614130565b985050509185019190850190600101614265565b5050505050506142d06040840184614179565b85830360408701526142e3838284614130565b9695505050505050565b60208152600061288060208301846141dd565b6bffffffffffffffffffffffff81168114610f3657600080fd5b60006020828403121561432c57600080fd5b813561288081614300565b81356143428161388b565b73ffffffffffffffffffffffffffffffffffffffff811690507fffffffffffffffffffffffff00000000000000000000000000000000000000008181845416178355602084013561439281614300565b60a01b1617905550565b73ffffffffffffffffffffffffffffffffffffffff831681526101008101612880602083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b601f821115610f2657600081815260208120601f850160051c810160208610156144575750805b601f850160051c820191505b81811015610b2e57828155600101614463565b67ffffffffffffffff83111561448e5761448e613a66565b6144a28361449c8354613fb4565b83614430565b6000601f8411600181146144f457600085156144be5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612dce565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156145435786850135825560209485019460019092019101614523565b508682101561457e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610806576108066140af565b80820180821115610806576108066140af565b6020815260006133e7602083018486614130565b803563ffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff6145f282613b0d565b16825261ffff61460460208301613b4f565b16602083015261461660408201614001565b65ffffffffffff80821660408501528061463260608501614001565b1660608501525050608081013560ff8116811461464e57600080fd5b60ff16608083015261466260a082016145ca565b63ffffffff1660a083015261467960c08201613b4f565b61ffff1660c083015261468e60e08201613a0a565b80151560e0840152505050565b73ffffffffffffffffffffffffffffffffffffffff83168152610120810161288060208301846145de565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146fb57600080fd5b83018035915067ffffffffffffffff82111561471657600080fd5b602001915036819003821315613c9057600080fd5b60006020828403121561473d57600080fd5b61288082614001565b73ffffffffffffffffffffffffffffffffffffffff8316815260e081016128806020830184614017565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006147a0604083018486614130565b95945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126147dd57600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006133e760408301846141dd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261484b57600080fd5b83018035915067ffffffffffffffff82111561486657600080fd5b6020019150600581901b3603821315613c9057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126148e257600080fd5b83018035915067ffffffffffffffff8211156148fd57600080fd5b6020019150600881901b3603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261014081016133e760408301846145de565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525069ffffffffffffffffffff835116604083015261ffff602084015116606083015265ffffffffffff604084015116608083015260608301516149c060a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a4057600080fd5b83018035915067ffffffffffffffff821115614a5b57600080fd5b602001915060e081023603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff848116825283166020820152610120810169ffffffffffffffffffff614aac84613b0d565b16604083015262ffffff614ac260208501613b27565b166060830152614ad460408401613b3a565b64ffffffffff808216608085015280614aef60608701613b3a565b1660a085015280614b0260808701613b3a565b1660c08501525050614b1660a08401613b4f565b61ffff1660e0830152614b2b60c08401613b4f565b61ffff8116610100840152614a02565b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261012081016133e7604083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b60008351614be98184602088016137f1565b835190830190614bfd8183602088016137f1565b01949350505050565b60208082528181018390526000908460408401835b86811015614c56578235614c2e8161388b565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614c1b565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526142e36080830184613815565b600060208284031215614cb257600080fd5b8151612880816137a656fea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004746573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103205760003560e01c80636c0360eb116101a7578063a22cb465116100ee578063c87b56dd11610097578063e8a3d48511610071578063e8a3d48514610736578063e985e9c51461073e578063f2fde38b1461075157600080fd5b8063c87b56dd14610708578063cb743ba81461071b578063d5abeb011461072e57600080fd5b8063ad2f852a116100c8578063ad2f852a146106cf578063b88d4fde146106ed578063c6ab67a31461070057600080fd5b8063a22cb46514610696578063a4830114146106a9578063a9fc664e146106bc57600080fd5b80637bc2be7611610150578063911f456b1161012a578063911f456b14610668578063938e3d7b1461067b57806395d89b411461068e57600080fd5b80637bc2be7614610609578063840e15d41461061c5780638da5cb5b1461064a57600080fd5b8063715018a611610181578063715018a6146105e657806379ba5097146105ee5780637a05bc82146105f657600080fd5b80636c0360eb146105b85780636f8b44b0146105c057806370a08231146105d357600080fd5b80633680620d1161026b578063511aa644116102145780636352211e116101ee5780636352211e1461057f57806364869dad1461059257806366251b69146105a557600080fd5b8063511aa6441461054657806355f804b31461055957806360c308b61461056c57600080fd5b806342966c681161024557806342966c681461050d57806344dae42c1461052057806348a4c1011461053357600080fd5b80633680620d146104b957806342260b5d146104cc57806342842e0e146104fa57600080fd5b80630d705df6116102cd57806323452b9c116102a757806323452b9c1461045f57806323b872dd146104675780632a55205a1461047a57600080fd5b80630d705df6146103e057806318160ddd146104145780631b73593c1461044c57600080fd5b8063095ea7b3116102fe578063095ea7b31461039a578063098144d4146103af578063099b6bfa146103cd57600080fd5b806301ffc9a71461032557806306fdde031461034d578063081812fc14610362575b600080fd5b6103386103333660046137d4565b610764565b60405190151581526020015b60405180910390f35b61035561080c565b604051610344919061385f565b610375610370366004613872565b61089e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610344565b6103ad6103a83660046138ad565b610908565b005b60085473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6103db366004613872565b6109f3565b604080517fcaee23ea0000000000000000000000000000000000000000000000000000000081526000602082015201610344565b600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610344565b6103ad61045a3660046138d9565b610a9d565b6103ad610b36565b6103ad610475366004613938565b610b9c565b61048d610488366004613979565b610e3f565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610344565b6103ad6104c736600461399b565b610ea8565b600f547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661043e565b6103ad610508366004613938565b610f0b565b6103ad61051b366004613872565b610f2b565b6103ad61052e3660046139f2565b610f39565b6103ad610541366004613a1f565b6110aa565b6103ad610554366004613b61565b61114a565b6103ad610567366004613c97565b6111af565b6103ad61057a366004613cd9565b611243565b61037561058d366004613872565b611255565b6103ad6105a03660046138ad565b611260565b6103ad6105b3366004613d4e565b6113a0565b610355611405565b6103ad6105ce366004613872565b611414565b61043e6105e1366004613d7c565b611496565b6103ad611518565b6103ad61152c565b6103ad610604366004613d99565b6115e3565b6103ad610617366004613dee565b611648565b61062f61062a366004613d7c565b6116ad565b60408051938452602084019290925290820152606001610344565b60095473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad610676366004613e61565b61171a565b6103ad610689366004613c97565b6124b5565b6103556124fc565b6103ad6106a4366004613e9d565b61250b565b6103ad6106b7366004613979565b6125a2565b6103ad6106ca366004613d7c565b6125e0565b600f5473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6106fb366004613ed2565b6125f1565b600e5461043e565b610355610716366004613872565b612661565b6103ad610729366004613a1f565b612786565b600b5461043e565b6103556127f3565b61033861074c366004613d4e565b612802565b6103ad61075f366004613d7c565b612887565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1890fe8e0000000000000000000000000000000000000000000000000000000014806107f757507fffffffff0000000000000000000000000000000000000000000000000000000082167f9c15441500000000000000000000000000000000000000000000000000000000145b8061080657506108068261294f565b92915050565b60606002805461081b90613fb4565b80601f016020809104026020016040519081016040528092919081815260200182805461084790613fb4565b80156108945780601f1061086957610100808354040283529160200191610894565b820191906000526020600020905b81548152906001019060200180831161087757829003601f168201915b5050505050905090565b60006108a982612a89565b6108df576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061091382611255565b90503373ffffffffffffffffffffffffffffffffffffffff8216146109725761093c8133612802565b610972576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6109fb612ad7565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610a57576040517fe03264af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b610aa5612ad7565b610aae82612b67565b6040517f01308e6500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906301308e6590610b009084906004016140a1565b600060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050505050565b610b3e612bcb565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b6000610ba782612c1c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0e576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090208054610c478187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b610c8b57610c558633612802565b610c8b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610cd8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce58686866001612cdb565b8015610cf057600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610ddf57600184016000818152600460205260408120549003610ddd576000548114610ddd5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610b2e565b600f8054600091829161271090610e7c907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16866140de565b610e8691906140f5565b905473ffffffffffffffffffffffffffffffffffffffff169590945092505050565b610eb0612ad7565b610eb982612b67565b6040517febb4a55f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063ebb4a55f90610b009084906004016142ed565b610f26838383604051806020016040528060008152506125f1565b505050565b610f36816001612dd5565b50565b610f41612ad7565b6000610f506020830183613d7c565b73ffffffffffffffffffffffffffffffffffffffff1603610f9d576040517f1cc0baef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710610fb0604083016020840161431a565b6bffffffffffffffffffffffff16111561101c57610fd4604082016020830161431a565b6040517f3cadbafb0000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b80600f6110298282614337565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d905061105a6020830183613d7c565b61106a604084016020850161431a565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152015b60405180910390a150565b6110b2612ad7565b6110bb83612b67565b6040517f8e7d1e4300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b50505050505050565b611152612ad7565b61115b83612b67565b6040517f4d38017800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634d38017890611113908590859060040161439c565b6111b7612ad7565b600c6111c4828483614476565b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011561123f577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60018061122060005490565b61122a9190614590565b60408051928352602083019190915201610a91565b5050565b61124b612bcb565b61123f8282612f92565b600061080682612c1c565b6010546001146112cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401611013565b60026010556112da33612b67565b600b54816113096000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61131391906145a3565b111561138d57806113456000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61134f91906145a3565b600b546040517fe12d231400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401611013565b6113978282613102565b50506001601055565b6113a8612ad7565b6113b182612b67565b6040517f12738db800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528316906312738db890602401610b00565b606061140f61311c565b905090565b61141c612ad7565b67ffffffffffffffff811115611461576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401611013565b600b8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200161109f565b600073ffffffffffffffffffffffffffffffffffffffff82166114e5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b611520612bcb565b61152a600061312b565b565b600a5473ffffffffffffffffffffffffffffffffffffffff1633811461157e576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1610f368161312b565b6115eb612ad7565b6115f483612b67565b6040517fb957d0cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b957d0cb9061111390859085906004016145b6565b611650612ad7565b61165983612b67565b6040517ffd9ab22a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063fd9ab22a90611113908590859060040161469b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604080822054901c67ffffffffffffffff16908061170d6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600b549395909450915050565b611722612bcb565b803515611794576040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152813560048201523090636f8b44b090602401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b6117a160208201826146c6565b15905061180b57306355f804b36117bb60208401846146c6565b6040518363ffffffff1660e01b81526004016117d89291906145b6565b600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050505b61181860408201826146c6565b159050611882573063938e3d7b61183260408401846146c6565b6040518363ffffffff1660e01b815260040161184f9291906145b6565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050505b6118a261189560e0830160c0840161472b565b65ffffffffffff16151590565b6118b561189560c0840160a0850161472b565b176001036119275730631b73593c6118d36080840160608501613d7c565b836080016040518363ffffffff1660e01b81526004016118f4929190614746565b600060405180830381600087803b15801561190e57600080fd5b505af1158015611922573d6000803e3d6000fd5b505050505b6119356101408201826146c6565b1590506119b15730637a05bc826119526080840160608501613d7c565b6119606101408501856146c6565b6040518463ffffffff1660e01b815260040161197e93929190614770565b600060405180830381600087803b15801561199857600080fd5b505af11580156119ac573d6000803e3d6000fd5b505050505b60006119c16101608301836147a9565b3514611a3b5730633680620d6119dd6080840160608501613d7c565b6119eb6101608501856147a9565b6040518363ffffffff1660e01b8152600401611a089291906147e7565b600060405180830381600087803b158015611a2257600080fd5b505af1158015611a36573d6000803e3d6000fd5b505050505b6000611a4f6101a083016101808401613d7c565b73ffffffffffffffffffffffffffffffffffffffff1614611b1857306366251b69611a806080840160608501613d7c565b611a926101a085016101808601613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050505b6101a081013515611b92576040517f099b6bfa0000000000000000000000000000000000000000000000000000000081526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050505b6000611ba26101c0830183614816565b90501115611ca65760005b611bbb6101c0830183614816565b9050811015611ca457306348a4c101611bda6080850160608601613d7c565b611be86101c0860186614816565b85818110611bf857611bf861487e565b9050602002016020810190611c0d9190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b50505050806001019050611bad565b505b6000611cb66101e0830183614816565b90501115611dba5760005b611ccf6101e0830183614816565b9050811015611db857306348a4c101611cee6080850160608601613d7c565b611cfc6101e0860186614816565b85818110611d0c57611d0c61487e565b9050602002016020810190611d219190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b50505050806001019050611cc1565b505b6000611dca610200830183614816565b90501115611ece5760005b611de3610200830183614816565b9050811015611ecc573063cb743ba8611e026080850160608601613d7c565b611e10610200860186614816565b85818110611e2057611e2061487e565b9050602002016020810190611e359190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b50505050806001019050611dd5565b505b6000611ede610220830183614816565b90501115611fe25760005b611ef7610220830183614816565b9050811015611fe0573063cb743ba8611f166080850160608601613d7c565b611f24610220860186614816565b85818110611f3457611f3461487e565b9050602002016020810190611f499190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611fbd57600080fd5b505af1158015611fd1573d6000803e3d6000fd5b50505050806001019050611ee9565b505b6000611ff26102608301836148ad565b9050111561213657612008610240820182614816565b90506120186102608301836148ad565b905014612051576040517fb81aa63900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6120626102608301836148ad565b90508110156121345730637bc2be766120816080850160608601613d7c565b61208f610240860186614816565b8581811061209f5761209f61487e565b90506020020160208101906120b49190613d7c565b6120c26102608701876148ad565b868181106120d2576120d261487e565b905061010002016040518463ffffffff1660e01b81526004016120f793929190614915565b600060405180830381600087803b15801561211157600080fd5b505af1158015612125573d6000803e3d6000fd5b50505050806001019050612054565b505b6000612146610280830183614816565b905011156122515760005b61215f610280830183614816565b905081101561224f576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be766121bf6080860160608701613d7c565b6121cd610280870187614816565b868181106121dd576121dd61487e565b90506020020160208101906121f29190613d7c565b846040518463ffffffff1660e01b815260040161221193929190614948565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b5050505081600101915050612151565b505b60006122616102c0830183614a0b565b905011156123a4576122776102a0820182614816565b90506122876102c0830183614a0b565b9050146122c0576040517f74ef6df700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6122d16102c0830183614a0b565b90508110156123a2573063511aa6446122f06080850160608601613d7c565b6122fe6102a0860186614816565b8581811061230e5761230e61487e565b90506020020160208101906123239190613d7c565b6123316102c0870187614a0b565b868181106123415761234161487e565b905060e002016040518463ffffffff1660e01b815260040161236593929190614a72565b600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b505050508060010190506122c3565b505b60006123b46102e0830183614816565b90501115610f365760005b6123cd6102e0830183614816565b905081101561123f576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa6446124256080860160608701613d7c565b6124336102e0870187614816565b868181106124435761244361487e565b90506020020160208101906124589190613d7c565b846040518463ffffffff1660e01b815260040161247793929190614b3b565b600060405180830381600087803b15801561249157600080fd5b505af11580156124a5573d6000803e3d6000fd5b50505050816001019150506123bf565b6124bd612ad7565b600d6124ca828483614476565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac373788282604051610a919291906145b6565b60606003805461081b90613fb4565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6125aa612ad7565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610a91565b6125e8612bcb565b610f36816131a2565b6125fc848484610b9c565b73ffffffffffffffffffffffffffffffffffffffff83163b1561265b5761262584848484613275565b61265b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061266c82612a89565b6126a2576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006126ac61311c565b905080516000036126cd575050604080516020810190915260008152919050565b6040805180820190915260018082527f2f0000000000000000000000000000000000000000000000000000000000000060209092018290528251839161271291614590565b815181106127225761272261487e565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146127545792915050565b8061275e846133ef565b60405160200161276f929190614bd7565b604051602081830303815290604052915050919050565b61278e612ad7565b61279783612b67565b6040517f7f2a5cca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690637f2a5cca90604401611113565b6060600d805461081b90613fb4565b60007fffffffffffffffffffffffffe1ffb687c0ff75ff7ae6c1ffffc2ff32abffc38f73ffffffffffffffffffffffffffffffffffffffff83160161284957506001610806565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b61288f612bcb565b73ffffffffffffffffffffffffffffffffffffffff81166128dc576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200161109f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806129e257507fffffffff0000000000000000000000000000000000000000000000000000000082167fad0d7f6c00000000000000000000000000000000000000000000000000000000145b80612a2e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa07d229a00000000000000000000000000000000000000000000000000000000145b80612a7a57507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610806575061080682613451565b600081600111158015612a9d575060005482105b80156108065750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b303314612b2d612afc60095473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490565b1760000361152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205460ff161515600114610f36576040517f15e26ff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff16331461152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008180600111612ca957600054811015612ca957600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612ca7575b8060000361288057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054612c68565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841615801590612d15575073ffffffffffffffffffffffffffffffffffffffff831615155b1561265b5760085473ffffffffffffffffffffffffffffffffffffffff168015612dce576040517fcaee23ea00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b158015612db557600080fd5b505afa158015612dc9573d6000803e3d6000fd5b505050505b5050505050565b6000612de083612c1c565b905080600080612dfe86600090815260066020526040902080549091565b915091508415612e5757612e13818433610c25565b612e5757612e218333612802565b612e57576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e65836000886001612cdb565b8015612e7057600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000085169003612f3d57600186016000818152600460205260408120549003612f3b576000548114612f3b5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b6012548160005b828110156130215760006011600060128481548110612fba57612fba61487e565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612f99565b5060005b818110156130b5576001601160008787858181106130455761304561487e565b905060200201602081019061305a9190613d7c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101613025565b506130c260128585613709565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d84846040516130f4929190614c06565b60405180910390a150505050565b61123f828260405180602001604052806000815250613532565b6060600c805461081b90613fb4565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60085473ffffffffffffffffffffffffffffffffffffffff90811690821681036131f8576040517f4a3bb19e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101610a91565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906132d0903390899088908890600401614c61565b6020604051808303816000875af1925050508015613329575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261332691810190614ca0565b60015b6133a0573d808015613357576040519150601f19603f3d011682016040523d82523d6000602084013e61335c565b606091505b508051600003613398576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061340957508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806134e457507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806108065750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b61353c83836135be565b73ffffffffffffffffffffffffffffffffffffffff83163b15610f26576000548281035b6135736000868380600101945086613275565b6135a9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613560578160005414612dce57600080fd5b60008054908290036135fc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136096000848385612cdb565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146136c557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161368d565b5081600003613700576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215613781579160200282015b828111156137815781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190613729565b5061378d929150613791565b5090565b5b8082111561378d5760008155600101613792565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f3657600080fd5b6000602082840312156137e657600080fd5b8135612880816137a6565b60005b8381101561380c5781810151838201526020016137f4565b50506000910152565b6000815180845261382d8160208601602086016137f1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128806020830184613815565b60006020828403121561388457600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f3657600080fd5b600080604083850312156138c057600080fd5b82356138cb8161388b565b946020939093013593505050565b60008082840360e08112156138ed57600080fd5b83356138f88161388b565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561392a57600080fd5b506020830190509250929050565b60008060006060848603121561394d57600080fd5b83356139588161388b565b925060208401356139688161388b565b929592945050506040919091013590565b6000806040838503121561398c57600080fd5b50508035926020909101359150565b600080604083850312156139ae57600080fd5b82356139b98161388b565b9150602083013567ffffffffffffffff8111156139d557600080fd5b8301606081860312156139e757600080fd5b809150509250929050565b600060408284031215613a0457600080fd5b50919050565b80358015158114613a1a57600080fd5b919050565b600080600060608486031215613a3457600080fd5b8335613a3f8161388b565b92506020840135613a4f8161388b565b9150613a5d60408501613a0a565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715613ab857613ab8613a66565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b0557613b05613a66565b604052919050565b803569ffffffffffffffffffff81168114613a1a57600080fd5b803562ffffff81168114613a1a57600080fd5b803564ffffffffff81168114613a1a57600080fd5b803561ffff81168114613a1a57600080fd5b6000806000838503610120811215613b7857600080fd5b8435613b838161388b565b93506020850135613b938161388b565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613bc557600080fd5b50613bce613a95565b613bda60408601613b0d565b8152613be860608601613b27565b6020820152613bf960808601613b3a565b6040820152613c0a60a08601613b3a565b6060820152613c1b60c08601613b3a565b6080820152613c2c60e08601613b4f565b60a0820152613c3e6101008601613b4f565b60c0820152809150509250925092565b60008083601f840112613c6057600080fd5b50813567ffffffffffffffff811115613c7857600080fd5b602083019150836020828501011115613c9057600080fd5b9250929050565b60008060208385031215613caa57600080fd5b823567ffffffffffffffff811115613cc157600080fd5b613ccd85828601613c4e565b90969095509350505050565b60008060208385031215613cec57600080fd5b823567ffffffffffffffff80821115613d0457600080fd5b818501915085601f830112613d1857600080fd5b813581811115613d2757600080fd5b8660208260051b8501011115613d3c57600080fd5b60209290920196919550909350505050565b60008060408385031215613d6157600080fd5b8235613d6c8161388b565b915060208301356139e78161388b565b600060208284031215613d8e57600080fd5b81356128808161388b565b600080600060408486031215613dae57600080fd5b8335613db98161388b565b9250602084013567ffffffffffffffff811115613dd557600080fd5b613de186828701613c4e565b9497909650939450505050565b6000806000838503610140811215613e0557600080fd5b8435613e108161388b565b93506020850135613e208161388b565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613e5357600080fd5b506040840190509250925092565b600060208284031215613e7357600080fd5b813567ffffffffffffffff811115613e8a57600080fd5b8201610300818503121561288057600080fd5b60008060408385031215613eb057600080fd5b8235613ebb8161388b565b9150613ec960208401613a0a565b90509250929050565b60008060008060808587031215613ee857600080fd5b8435613ef38161388b565b9350602085810135613f048161388b565b935060408601359250606086013567ffffffffffffffff80821115613f2857600080fd5b818801915088601f830112613f3c57600080fd5b813581811115613f4e57613f4e613a66565b613f7e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613abe565b91508082528984828501011115613f9457600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c90821680613fc857607f821691505b602082108103613a04577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b803565ffffffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff61402b82613b0d565b16825261403a60208201614001565b65ffffffffffff80821660208501528061405660408501614001565b166040850152505061406a60608201613b4f565b61ffff80821660608501528061408260808501613b4f565b166080850152505061409660a08201613a0a565b151560a08301525050565b60c081016108068284614017565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610806576108066140af565b60008261412b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126141ae57600080fd5b830160208101925035905067ffffffffffffffff8111156141ce57600080fd5b803603821315613c9057600080fd5b600060608301823584526020808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301811261421d57600080fd5b8401818101903567ffffffffffffffff81111561423957600080fd5b8060051b80360383131561424c57600080fd5b6060848901529381905260809387018401938290880160005b838110156142bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a880301825261429e8386614179565b6142a9898284614130565b985050509185019190850190600101614265565b5050505050506142d06040840184614179565b85830360408701526142e3838284614130565b9695505050505050565b60208152600061288060208301846141dd565b6bffffffffffffffffffffffff81168114610f3657600080fd5b60006020828403121561432c57600080fd5b813561288081614300565b81356143428161388b565b73ffffffffffffffffffffffffffffffffffffffff811690507fffffffffffffffffffffffff00000000000000000000000000000000000000008181845416178355602084013561439281614300565b60a01b1617905550565b73ffffffffffffffffffffffffffffffffffffffff831681526101008101612880602083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b601f821115610f2657600081815260208120601f850160051c810160208610156144575750805b601f850160051c820191505b81811015610b2e57828155600101614463565b67ffffffffffffffff83111561448e5761448e613a66565b6144a28361449c8354613fb4565b83614430565b6000601f8411600181146144f457600085156144be5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612dce565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156145435786850135825560209485019460019092019101614523565b508682101561457e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610806576108066140af565b80820180821115610806576108066140af565b6020815260006133e7602083018486614130565b803563ffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff6145f282613b0d565b16825261ffff61460460208301613b4f565b16602083015261461660408201614001565b65ffffffffffff80821660408501528061463260608501614001565b1660608501525050608081013560ff8116811461464e57600080fd5b60ff16608083015261466260a082016145ca565b63ffffffff1660a083015261467960c08201613b4f565b61ffff1660c083015261468e60e08201613a0a565b80151560e0840152505050565b73ffffffffffffffffffffffffffffffffffffffff83168152610120810161288060208301846145de565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146fb57600080fd5b83018035915067ffffffffffffffff82111561471657600080fd5b602001915036819003821315613c9057600080fd5b60006020828403121561473d57600080fd5b61288082614001565b73ffffffffffffffffffffffffffffffffffffffff8316815260e081016128806020830184614017565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006147a0604083018486614130565b95945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126147dd57600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006133e760408301846141dd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261484b57600080fd5b83018035915067ffffffffffffffff82111561486657600080fd5b6020019150600581901b3603821315613c9057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126148e257600080fd5b83018035915067ffffffffffffffff8211156148fd57600080fd5b6020019150600881901b3603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261014081016133e760408301846145de565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525069ffffffffffffffffffff835116604083015261ffff602084015116606083015265ffffffffffff604084015116608083015260608301516149c060a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a4057600080fd5b83018035915067ffffffffffffffff821115614a5b57600080fd5b602001915060e081023603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff848116825283166020820152610120810169ffffffffffffffffffff614aac84613b0d565b16604083015262ffffff614ac260208501613b27565b166060830152614ad460408401613b3a565b64ffffffffff808216608085015280614aef60608701613b3a565b1660a085015280614b0260808701613b3a565b1660c08501525050614b1660a08401613b4f565b61ffff1660e0830152614b2b60c08401613b4f565b61ffff8116610100840152614a02565b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261012081016133e7604083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b60008351614be98184602088016137f1565b835190830190614bfd8183602088016137f1565b01949350505050565b60208082528181018390526000908460408401835b86811015614c56578235614c2e8161388b565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614c1b565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526142e36080830184613815565b600060208284031215614cb257600080fd5b8151612880816137a656fea164736f6c6343000811000a

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.