ETH Price: $2,661.85 (+1.02%)

Contract

0x075294EefB0C29812F78Fa8236B44237Af96a286
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To
Set Approval For...216261002025-01-14 23:47:4728 days ago1736898467IN
0x075294Ee...7Af96a286
0 ETH0.000184054.91824216
Set Approval For...215464242025-01-03 20:44:3539 days ago1735937075IN
0x075294Ee...7Af96a286
0 ETH0.0005991216.01994382
Set Approval For...214780772024-12-25 7:44:4749 days ago1735112687IN
0x075294Ee...7Af96a286
0 ETH0.00016954.52938274
Set Approval For...214525542024-12-21 18:04:1152 days ago1734804251IN
0x075294Ee...7Af96a286
0 ETH0.000301318.03871377
Set Approval For...205979112024-08-24 10:38:11172 days ago1724495891IN
0x075294Ee...7Af96a286
0 ETH0.000035850.95872564
Safe Transfer Fr...202687112024-07-09 11:43:23218 days ago1720525403IN
0x075294Ee...7Af96a286
0 ETH0.000136873.23717381
Safe Transfer Fr...202687032024-07-09 11:41:47218 days ago1720525307IN
0x075294Ee...7Af96a286
0 ETH0.000159493.38761215
Set Approval For...202236132024-07-03 4:31:47224 days ago1719981107IN
0x075294Ee...7Af96a286
0 ETH0.000254084.28394173
Set Approval For...200051232024-06-02 15:47:11254 days ago1717343231IN
0x075294Ee...7Af96a286
0 ETH0.000449512.01916305
Set Approval For...197763802024-05-01 16:09:23286 days ago1714579763IN
0x075294Ee...7Af96a286
0 ETH0.0003830210.24161355
Set Approval For...191115742024-01-29 10:25:23380 days ago1706523923IN
0x075294Ee...7Af96a286
0 ETH0.0004795412.82248443
Set Approval For...189151712024-01-01 21:11:23407 days ago1704143483IN
0x075294Ee...7Af96a286
0 ETH0.000646717.29204005
Set Approval For...189076432023-12-31 19:48:35408 days ago1704052115IN
0x075294Ee...7Af96a286
0 ETH0.0006143515.56006326
Set Approval For...189076402023-12-31 19:47:47408 days ago1704052067IN
0x075294Ee...7Af96a286
0 ETH0.0008115313.66612542
Set Approval For...189046392023-12-31 9:42:35409 days ago1704015755IN
0x075294Ee...7Af96a286
0 ETH0.0008028813.51776812
Set Approval For...188527982023-12-24 2:55:23416 days ago1703386523IN
0x075294Ee...7Af96a286
0 ETH0.0011830919.91912434
Set Approval For...188270922023-12-20 12:22:35420 days ago1703074955IN
0x075294Ee...7Af96a286
0 ETH0.0032501254.73153908
Set Approval For...188193732023-12-19 10:21:11421 days ago1702981271IN
0x075294Ee...7Af96a286
0 ETH0.0026013443.80623951
Set Approval For...188069582023-12-17 16:34:47422 days ago1702830887IN
0x075294Ee...7Af96a286
0 ETH0.0017690347.30156038
Set Approval For...188056972023-12-17 12:18:59423 days ago1702815539IN
0x075294Ee...7Af96a286
0 ETH0.001317835.23631262
Set Approval For...188030292023-12-17 3:18:47423 days ago1702783127IN
0x075294Ee...7Af96a286
0 ETH0.0012120332.40812353
Set Approval For...185680732023-11-14 5:32:47456 days ago1699939967IN
0x075294Ee...7Af96a286
0 ETH0.0014350924.1960976
Set Approval For...185200252023-11-07 12:17:47463 days ago1699359467IN
0x075294Ee...7Af96a286
0 ETH0.001277321.53579215
Set Approval For...184188892023-10-24 8:20:23477 days ago1698135623IN
0x075294Ee...7Af96a286
0 ETH0.000857714.44066153
Set Approval For...183575532023-10-15 18:25:59485 days ago1697394359IN
0x075294Ee...7Af96a286
0 ETH0.000222665.94043894
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC721SeaDrop

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
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 : 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 3 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 4 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 5 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 6 of 19 : DefaultOperatorFilterer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import {OperatorFilterer} from "./OperatorFilterer.sol";
import {CANONICAL_CORI_SUBSCRIPTION} from "./lib/Constants.sol";
/**
* @title DefaultOperatorFilterer
* @notice Inherits from OperatorFilterer and automatically subscribes to the default OpenSea subscription.
* @dev Please note that if your token contract does not provide an owner with EIP-173, it must provide
* administration methods on the contract itself to interact with the registry otherwise the subscription
* will be locked to the options set during construction.
*/
abstract contract DefaultOperatorFilterer is OperatorFilterer {
/// @dev The constructor that is called when the contract is being deployed.
constructor() OperatorFilterer(CANONICAL_CORI_SUBSCRIPTION, true) {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 19 : IOperatorFilterRegistry.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.13;
interface IOperatorFilterRegistry {
/**
* @notice Returns true if operator is not filtered for a given token, either by address or codeHash. Also returns
* true if supplied registrant address is not registered.
*/
function isOperatorAllowed(address registrant, address operator) external view returns (bool);
/**
* @notice Registers an address with the registry. May be called by address itself or by EIP-173 owner.
*/
function register(address registrant) external;
/**
* @notice Registers an address with the registry and "subscribes" to another address's filtered operators and codeHashes.
*/
function registerAndSubscribe(address registrant, address subscription) external;
/**
* @notice Registers an address with the registry and copies the filtered operators and codeHashes from another
* address without subscribing.
*/
function registerAndCopyEntries(address registrant, address registrantToCopy) external;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 19 : OperatorFilterer.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.13;
import {IOperatorFilterRegistry} from "./IOperatorFilterRegistry.sol";
import {CANONICAL_OPERATOR_FILTER_REGISTRY_ADDRESS} from "./lib/Constants.sol";
/**
* @title OperatorFilterer
* @notice Abstract contract whose constructor automatically registers and optionally subscribes to or copies another
* registrant's entries in the OperatorFilterRegistry.
* @dev This smart contract is meant to be inherited by token contracts so they can use the following:
* - `onlyAllowedOperator` modifier for `transferFrom` and `safeTransferFrom` methods.
* - `onlyAllowedOperatorApproval` modifier for `approve` and `setApprovalForAll` methods.
* Please note that if your token contract does not provide an owner with EIP-173, it must provide
* administration methods on the contract itself to interact with the registry otherwise the subscription
* will be locked to the options set during construction.
*/
abstract contract OperatorFilterer {
/// @dev Emitted when an operator is not allowed.
error OperatorNotAllowed(address operator);
IOperatorFilterRegistry public constant OPERATOR_FILTER_REGISTRY =
IOperatorFilterRegistry(CANONICAL_OPERATOR_FILTER_REGISTRY_ADDRESS);
/// @dev The constructor that is called when the contract is being deployed.
constructor(address subscriptionOrRegistrantToCopy, bool subscribe) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 19 : Constants.sol
1
2
3
4
5
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
address constant CANONICAL_OPERATOR_FILTER_REGISTRY_ADDRESS = 0x000000000000AAeB6D7670E522A718067333cd4E;
address constant CANONICAL_CORI_SUBSCRIPTION = 0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 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 11 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

File 12 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 13 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 { TwoStepOwnable } from "utility-contracts/TwoStepOwnable.sol";
import { IERC2981 } from "openzeppelin-contracts/interfaces/IERC2981.sol";
import {
IERC165
} from "openzeppelin-contracts/utils/introspection/IERC165.sol";
/**
* @title ERC721ContractMetadata
* @author James Wenzel (emo.eth)
* @author Ryan Ghods (ralxz.eth)
* @author Stephan Min (stephanm.eth)
* @notice ERC721ContractMetadata is a token contract that extends ERC721A
* with additional metadata and ownership capabilities.
*/
contract ERC721ContractMetadata is
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 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 15 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 16 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 17 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 18 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 19 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

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-Upgradeable/=lib/ERC721A-Upgradeable/contracts/",
"ERC721A/=lib/ERC721A/contracts/",
"create2-helpers/=lib/create2-helpers/src/",
"create2-scripts/=lib/create2-helpers/script/",
"ds-test/=lib/ds-test/src/",
"erc4626-tests/=lib/operator-filter-registry/lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"murky/=lib/murky/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"operator-filter-registry/=lib/operator-filter-registry/src/",
"seadrop/=src/",
"solmate/=lib/solmate/src/",
"utility-contracts/=lib/utility-contracts/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000000
},
"metadata": {
"bytecodeHash": "none"
},
"outputSelection": {
"*": {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"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":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"ProvenanceHashCannotBeSetAfterMintStarted","type":"error"},{"inputs":[],"name":"RoyaltyAddressCannotBeZeroAddress","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"},{"inputs":[],"name":"OPERATOR_FILTER_REGISTRY","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","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":[],"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":[{"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":"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"}]

60806040526001600f553480156200001657600080fd5b50604051620050ca380380620050ca833981016040819052620000399162000450565b733cc6cdda760b79bafa08df41ecfa224f810dceb66001848481816002620000628382620005f6565b506003620000718282620005f6565b5050600160005550620000836200027a565b50506daaeb6d7670e522a718067333cd4e3b15620001ca5780156200011857604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b158015620000f957600080fd5b505af11580156200010e573d6000803e3d6000fd5b50505050620001ca565b6001600160a01b03821615620001695760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000de565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001b057600080fd5b505af1158015620001c5573d6000803e3d6000fd5b505050505b5050805160005b818110156200023057600160106000858481518110620001f557620001f5620006c2565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620001d1565b50815162000246906011906020850190620002f9565b506040517fd7aca75208b9be5ffc04c6a01922020ffd62b55e68e502e317f5344960279af890600090a150505050620006d8565b303b156200029a5760405162dc149f60e41b815260040160405180910390fd5b620002a533620002a7565b565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090810192821562000351579160200282015b828111156200035157825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200031a565b506200035f92915062000363565b5090565b5b808211156200035f576000815560010162000364565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003bb57620003bb6200037a565b604052919050565b600082601f830112620003d557600080fd5b81516001600160401b03811115620003f157620003f16200037a565b602062000407601f8301601f1916820162000390565b82815285828487010111156200041c57600080fd5b60005b838110156200043c5785810183015182820184015282016200041f565b506000928101909101919091529392505050565b6000806000606084860312156200046657600080fd5b83516001600160401b03808211156200047e57600080fd5b6200048c87838801620003c3565b9450602091508186015181811115620004a457600080fd5b620004b288828901620003c3565b945050604086015181811115620004c857600080fd5b8601601f81018813620004da57600080fd5b805182811115620004ef57620004ef6200037a565b8060051b92506200050284840162000390565b818152928201840192848101908a8511156200051d57600080fd5b928501925b848410156200055757835192506001600160a01b0383168314620005465760008081fd5b828252928501929085019062000522565b8096505050505050509250925092565b600181811c908216806200057c57607f821691505b6020821081036200059d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f157600081815260208120601f850160051c81016020861015620005cc5750805b601f850160051c820191505b81811015620005ed57828155600101620005d8565b5050505b505050565b81516001600160401b038111156200061257620006126200037a565b6200062a8162000623845462000567565b84620005a3565b602080601f831160018114620006625760008415620006495750858301515b600019600386901b1c1916600185901b178555620005ed565b600085815260208120601f198616915b82811015620006935788860151825594840194600190910190840162000672565b5085821015620006b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b6149e280620006e86000396000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c80636c0360eb1161019c57806395d89b41116100ee578063c87b56dd11610097578063e8a3d48511610071578063e8a3d485146106b2578063e985e9c5146106ba578063f2fde38b1461070357600080fd5b8063c87b56dd14610684578063cb743ba814610697578063d5abeb01146106aa57600080fd5b8063ad2f852a116100c8578063ad2f852a1461064b578063b88d4fde14610669578063c6ab67a31461067c57600080fd5b806395d89b411461061d578063a22cb46514610625578063a48301141461063857600080fd5b80637a05bc82116101505780638da5cb5b1161012a5780638da5cb5b146105d9578063911f456b146105f7578063938e3d7b1461060a57600080fd5b80637a05bc82146105855780637bc2be7614610598578063840e15d4146105ab57600080fd5b806370a082311161018157806370a0823114610562578063715018a61461057557806379ba50971461057d57600080fd5b80636c0360eb146105475780636f8b44b01461054f57600080fd5b806341f4343411610255578063511aa644116102095780636352211e116101e35780636352211e1461050e57806364869dad1461052157806366251b691461053457600080fd5b8063511aa644146104d557806355f804b3146104e857806360c308b6146104fb57600080fd5b806342842e0e1161023a57806342842e0e1461049c57806344dae42c146104af57806348a4c101146104c257600080fd5b806341f434341461045957806342260b5d1461046e57600080fd5b806318160ddd116102b757806323b872dd1161029157806323b872dd146103f45780632a55205a146104075780633680620d1461044657600080fd5b806318160ddd146103a15780631b73593c146103d957806323452b9c146103ec57600080fd5b8063081812fc116102e8578063081812fc14610341578063095ea7b314610379578063099b6bfa1461038e57600080fd5b806301ffc9a71461030457806306fdde031461032c575b600080fd5b6103176103123660046134c5565b610716565b60405190151581526020015b60405180910390f35b6103346107be565b6040516103239190613550565b61035461034f366004613563565b610850565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610323565b61038c61038736600461359e565b6108ba565b005b61038c61039c366004613563565b6108d3565b600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610323565b61038c6103e73660046135ca565b61097d565b61038c610a16565b61038c610402366004613629565b610a7c565b61041a61041536600461366a565b610ab4565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610323565b61038c61045436600461368c565b610b1d565b6103546daaeb6d7670e522a718067333cd4e81565b600e547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166103cb565b61038c6104aa366004613629565b610b80565b61038c6104bd3660046136e3565b610bb2565b61038c6104d0366004613719565b610d23565b61038c6104e336600461385f565b610dc3565b61038c6104f6366004613995565b610e28565b61038c6105093660046139d7565b610ebc565b61035461051c366004613563565b610ece565b61038c61052f36600461359e565b610ed9565b61038c610542366004613a4c565b611019565b61033461107e565b61038c61055d366004613563565b61108d565b6103cb610570366004613a7a565b61110f565b61038c611191565b61038c6111a5565b61038c610593366004613a97565b61125f565b61038c6105a6366004613aec565b6112c4565b6105be6105b9366004613a7a565b611329565b60408051938452602084019290925290820152606001610323565b60085473ffffffffffffffffffffffffffffffffffffffff16610354565b61038c610605366004613b5f565b611396565b61038c610618366004613995565b612131565b610334612178565b61038c610633366004613b9b565b612187565b61038c61064636600461366a565b61219b565b600e5473ffffffffffffffffffffffffffffffffffffffff16610354565b61038c610677366004613bc9565b6121d9565b600d546103cb565b610334610692366004613563565b612213565b61038c6106a5366004613719565b612338565b600a546103cb565b6103346123a5565b6103176106c8366004613a4c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b61038c610711366004613a7a565b6123b4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1890fe8e0000000000000000000000000000000000000000000000000000000014806107a957507fffffffff0000000000000000000000000000000000000000000000000000000082167f9c15441500000000000000000000000000000000000000000000000000000000145b806107b857506107b88261247c565b92915050565b6060600280546107cd90613cab565b80601f01602080910402602001604051908101604052809291908181526020018280546107f990613cab565b80156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b5050505050905090565b600061085b8261251e565b610891576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b816108c48161256c565b6108ce8383612671565b505050565b6108db612786565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610937576040517fe03264af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b610985612786565b61098e82612816565b6040517f01308e6500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906301308e65906109e0908490600401613d9c565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050505050565b610a1e61287a565b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b8273ffffffffffffffffffffffffffffffffffffffff81163314610aa357610aa33361256c565b610aae8484846128cb565b50505050565b600e8054600091829161271090610af1907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1686613dd9565b610afb9190613df0565b905473ffffffffffffffffffffffffffffffffffffffff169590945092505050565b610b25612786565b610b2e82612816565b6040517febb4a55f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063ebb4a55f906109e0908490600401613fe8565b8273ffffffffffffffffffffffffffffffffffffffff81163314610ba757610ba73361256c565b610aae848484612b81565b610bba612786565b6000610bc96020830183613a7a565b73ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f1cc0baef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710610c296040830160208401614015565b6bffffffffffffffffffffffff161115610c9557610c4d6040820160208301614015565b6040517f3cadbafb0000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b80600e610ca28282614032565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d9050610cd36020830183613a7a565b610ce36040840160208501614015565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152015b60405180910390a150565b610d2b612786565b610d3483612816565b6040517f8e7d1e4300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b50505050505050565b610dcb612786565b610dd483612816565b6040517f4d38017800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634d38017890610d8c9085908590600401614097565b610e30612786565b600b610e3d828483614171565b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610eb8577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610e9960005490565b610ea3919061428b565b60408051928352602083019190915201610971565b5050565b610ec461287a565b610eb88282612b9c565b60006107b882612d0c565b600f54600114610f45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610c8c565b6002600f55610f5333612816565b600a5481610f826000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b610f8c919061429e565b11156110065780610fbe6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b610fc8919061429e565b600a546040517fe12d231400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8c565b6110108282612dd2565b50506001600f55565b611021612786565b61102a82612816565b6040517f12738db800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528316906312738db8906024016109e0565b6060611088612dec565b905090565b611095612786565b67ffffffffffffffff8111156110da576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401610c8c565b600a8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c90602001610d18565b600073ffffffffffffffffffffffffffffffffffffffff821661115e576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b61119961287a565b6111a36000612dfb565b565b60095473ffffffffffffffffffffffffffffffffffffffff163381146111f7576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a161125c81612dfb565b50565b611267612786565b61127083612816565b6040517fb957d0cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b957d0cb90610d8c90859085906004016142b1565b6112cc612786565b6112d583612816565b6040517ffd9ab22a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063fd9ab22a90610d8c9085908590600401614396565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604080822054901c67ffffffffffffffff1690806113896000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600a549395909450915050565b61139e61287a565b803515611410576040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152813560048201523090636f8b44b090602401600060405180830381600087803b1580156113f757600080fd5b505af115801561140b573d6000803e3d6000fd5b505050505b61141d60208201826143c1565b15905061148757306355f804b361143760208401846143c1565b6040518363ffffffff1660e01b81526004016114549291906142b1565b600060405180830381600087803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b505050505b61149460408201826143c1565b1590506114fe573063938e3d7b6114ae60408401846143c1565b6040518363ffffffff1660e01b81526004016114cb9291906142b1565b600060405180830381600087803b1580156114e557600080fd5b505af11580156114f9573d6000803e3d6000fd5b505050505b61151e61151160e0830160c08401614426565b65ffffffffffff16151590565b61153161151160c0840160a08501614426565b176001036115a35730631b73593c61154f6080840160608501613a7a565b836080016040518363ffffffff1660e01b8152600401611570929190614441565b600060405180830381600087803b15801561158a57600080fd5b505af115801561159e573d6000803e3d6000fd5b505050505b6115b16101408201826143c1565b15905061162d5730637a05bc826115ce6080840160608501613a7a565b6115dc6101408501856143c1565b6040518463ffffffff1660e01b81526004016115fa9392919061446b565b600060405180830381600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050505b600061163d6101608301836144a4565b35146116b75730633680620d6116596080840160608501613a7a565b6116676101608501856144a4565b6040518363ffffffff1660e01b81526004016116849291906144e2565b600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505050505b60006116cb6101a083016101808401613a7a565b73ffffffffffffffffffffffffffffffffffffffff161461179457306366251b696116fc6080840160608501613a7a565b61170e6101a085016101808601613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b6101a08101351561180e576040517f099b6bfa0000000000000000000000000000000000000000000000000000000081526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b1580156117f557600080fd5b505af1158015611809573d6000803e3d6000fd5b505050505b600061181e6101c0830183614511565b905011156119225760005b6118376101c0830183614511565b905081101561192057306348a4c1016118566080850160608601613a7a565b6118646101c0860186614511565b8581811061187457611874614579565b90506020020160208101906118899190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b1580156118fd57600080fd5b505af1158015611911573d6000803e3d6000fd5b50505050806001019050611829565b505b60006119326101e0830183614511565b90501115611a365760005b61194b6101e0830183614511565b9050811015611a3457306348a4c10161196a6080850160608601613a7a565b6119786101e0860186614511565b8581811061198857611988614579565b905060200201602081019061199d9190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611a1157600080fd5b505af1158015611a25573d6000803e3d6000fd5b5050505080600101905061193d565b505b6000611a46610200830183614511565b90501115611b4a5760005b611a5f610200830183614511565b9050811015611b48573063cb743ba8611a7e6080850160608601613a7a565b611a8c610200860186614511565b85818110611a9c57611a9c614579565b9050602002016020810190611ab19190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b50505050806001019050611a51565b505b6000611b5a610220830183614511565b90501115611c5e5760005b611b73610220830183614511565b9050811015611c5c573063cb743ba8611b926080850160608601613a7a565b611ba0610220860186614511565b85818110611bb057611bb0614579565b9050602002016020810190611bc59190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611c3957600080fd5b505af1158015611c4d573d6000803e3d6000fd5b50505050806001019050611b65565b505b6000611c6e6102608301836145a8565b90501115611db257611c84610240820182614511565b9050611c946102608301836145a8565b905014611ccd576040517fb81aa63900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b611cde6102608301836145a8565b9050811015611db05730637bc2be76611cfd6080850160608601613a7a565b611d0b610240860186614511565b85818110611d1b57611d1b614579565b9050602002016020810190611d309190613a7a565b611d3e6102608701876145a8565b86818110611d4e57611d4e614579565b905061010002016040518463ffffffff1660e01b8152600401611d7393929190614610565b600060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b50505050806001019050611cd0565b505b6000611dc2610280830183614511565b90501115611ecd5760005b611ddb610280830183614511565b9050811015611ecb576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be76611e3b6080860160608701613a7a565b611e49610280870187614511565b86818110611e5957611e59614579565b9050602002016020810190611e6e9190613a7a565b846040518463ffffffff1660e01b8152600401611e8d93929190614643565b600060405180830381600087803b158015611ea757600080fd5b505af1158015611ebb573d6000803e3d6000fd5b5050505081600101915050611dcd565b505b6000611edd6102c0830183614706565b9050111561202057611ef36102a0820182614511565b9050611f036102c0830183614706565b905014611f3c576040517f74ef6df700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b611f4d6102c0830183614706565b905081101561201e573063511aa644611f6c6080850160608601613a7a565b611f7a6102a0860186614511565b85818110611f8a57611f8a614579565b9050602002016020810190611f9f9190613a7a565b611fad6102c0870187614706565b86818110611fbd57611fbd614579565b905060e002016040518463ffffffff1660e01b8152600401611fe19392919061476d565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b50505050806001019050611f3f565b505b60006120306102e0830183614511565b9050111561125c5760005b6120496102e0830183614511565b9050811015610eb8576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa6446120a16080860160608701613a7a565b6120af6102e0870187614511565b868181106120bf576120bf614579565b90506020020160208101906120d49190613a7a565b846040518463ffffffff1660e01b81526004016120f393929190614836565b600060405180830381600087803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b505050508160010191505061203b565b612139612786565b600c612146828483614171565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737882826040516109719291906142b1565b6060600380546107cd90613cab565b816121918161256c565b6108ce8383612e72565b6121a3612786565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610971565b8373ffffffffffffffffffffffffffffffffffffffff81163314612200576122003361256c565b61220c85858585612f09565b5050505050565b606061221e8261251e565b612254576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061225e612dec565b9050805160000361227f575050604080516020810190915260008152919050565b6040805180820190915260018082527f2f000000000000000000000000000000000000000000000000000000000000006020909201829052825183916122c49161428b565b815181106122d4576122d4614579565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146123065792915050565b8061231084612f73565b6040516020016123219291906148d2565b604051602081830303815290604052915050919050565b612340612786565b61234983612816565b6040517f7f2a5cca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690637f2a5cca90604401610d8c565b6060600c80546107cd90613cab565b6123bc61287a565b73ffffffffffffffffffffffffffffffffffffffff8116612409576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90602001610d18565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061250f57507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806107b857506107b882612fd5565b600081600111158015612532575060005482105b80156107b85750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b6daaeb6d7670e522a718067333cd4e3b1561125c576040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190614901565b61125c576040517fede71dcc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c8c565b600061267c82610ece565b90503373ffffffffffffffffffffffffffffffffffffffff8216146127055773ffffffffffffffffffffffffffffffffffffffff8116600090815260076020908152604080832033845290915290205460ff16612705576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3033146127dc6127ab60085473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490565b176000036111a3576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16151560011461125c576040517f15e26ff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128d682612d0c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461293d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff8816909114176129da5773ffffffffffffffffffffffffffffffffffffffff8616600090815260076020908152604080832033845290915290205460ff166129da576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516612a27576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015612a3257600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003612b2157600184016000818152600460205260408120549003612b1f576000548114612b1f5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610a0e565b6108ce838383604051806020016040528060008152506121d9565b6011548160005b82811015612c2b5760006010600060118481548110612bc457612bc4614579565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612ba3565b5060005b81811015612cbf57600160106000878785818110612c4f57612c4f614579565b9050602002016020810190612c649190613a7a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612c2f565b50612ccc601185856133fa565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d8484604051612cfe92919061491e565b60405180910390a150505050565b60008180600111612da057600054811015612da057600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612d9e575b80600003612d9757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054612d58565b9392505050565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb88282604051806020016040528060008152506130b6565b6060600b80546107cd90613cab565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612f14848484610a7c565b73ffffffffffffffffffffffffffffffffffffffff83163b15610aae57612f3d84848484613142565b610aae576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480612f8d57508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061306857507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806107b85750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b6130c083836132bc565b73ffffffffffffffffffffffffffffffffffffffff83163b156108ce576000548281035b6130f76000868380600101945086613142565b61312d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106130e457816000541461220c57600080fd5b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061319d903390899088908890600401614979565b6020604051808303816000875af19250505080156131f6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131f3918101906149b8565b60015b61326d573d808015613224576040519150601f19603f3d011682016040523d82523d6000602084013e613229565b606091505b508051600003613265576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b60008054908290036132fa576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146133b657808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161337e565b50816000036133f1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215613472579160200282015b828111156134725781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84351617825560209092019160019091019061341a565b5061347e929150613482565b5090565b5b8082111561347e5760008155600101613483565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461125c57600080fd5b6000602082840312156134d757600080fd5b8135612d9781613497565b60005b838110156134fd5781810151838201526020016134e5565b50506000910152565b6000815180845261351e8160208601602086016134e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612d976020830184613506565b60006020828403121561357557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125c57600080fd5b600080604083850312156135b157600080fd5b82356135bc8161357c565b946020939093013593505050565b60008082840360e08112156135de57600080fd5b83356135e98161357c565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561361b57600080fd5b506020830190509250929050565b60008060006060848603121561363e57600080fd5b83356136498161357c565b925060208401356136598161357c565b929592945050506040919091013590565b6000806040838503121561367d57600080fd5b50508035926020909101359150565b6000806040838503121561369f57600080fd5b82356136aa8161357c565b9150602083013567ffffffffffffffff8111156136c657600080fd5b8301606081860312156136d857600080fd5b809150509250929050565b6000604082840312156136f557600080fd5b50919050565b801515811461125c57600080fd5b8035613714816136fb565b919050565b60008060006060848603121561372e57600080fd5b83356137398161357c565b925060208401356137498161357c565b91506040840135613759816136fb565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156137b6576137b6613764565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561380357613803613764565b604052919050565b803569ffffffffffffffffffff8116811461371457600080fd5b803562ffffff8116811461371457600080fd5b803564ffffffffff8116811461371457600080fd5b803561ffff8116811461371457600080fd5b600080600083850361012081121561387657600080fd5b84356138818161357c565b935060208501356138918161357c565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820112156138c357600080fd5b506138cc613793565b6138d86040860161380b565b81526138e660608601613825565b60208201526138f760808601613838565b604082015261390860a08601613838565b606082015261391960c08601613838565b608082015261392a60e0860161384d565b60a082015261393c610100860161384d565b60c0820152809150509250925092565b60008083601f84011261395e57600080fd5b50813567ffffffffffffffff81111561397657600080fd5b60208301915083602082850101111561398e57600080fd5b9250929050565b600080602083850312156139a857600080fd5b823567ffffffffffffffff8111156139bf57600080fd5b6139cb8582860161394c565b90969095509350505050565b600080602083850312156139ea57600080fd5b823567ffffffffffffffff80821115613a0257600080fd5b818501915085601f830112613a1657600080fd5b813581811115613a2557600080fd5b8660208260051b8501011115613a3a57600080fd5b60209290920196919550909350505050565b60008060408385031215613a5f57600080fd5b8235613a6a8161357c565b915060208301356136d88161357c565b600060208284031215613a8c57600080fd5b8135612d978161357c565b600080600060408486031215613aac57600080fd5b8335613ab78161357c565b9250602084013567ffffffffffffffff811115613ad357600080fd5b613adf8682870161394c565b9497909650939450505050565b6000806000838503610140811215613b0357600080fd5b8435613b0e8161357c565b93506020850135613b1e8161357c565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613b5157600080fd5b506040840190509250925092565b600060208284031215613b7157600080fd5b813567ffffffffffffffff811115613b8857600080fd5b82016103008185031215612d9757600080fd5b60008060408385031215613bae57600080fd5b8235613bb98161357c565b915060208301356136d8816136fb565b60008060008060808587031215613bdf57600080fd5b8435613bea8161357c565b9350602085810135613bfb8161357c565b935060408601359250606086013567ffffffffffffffff80821115613c1f57600080fd5b818801915088601f830112613c3357600080fd5b813581811115613c4557613c45613764565b613c75847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016137bc565b91508082528984828501011115613c8b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c90821680613cbf57607f821691505b6020821081036136f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b803565ffffffffffff8116811461371457600080fd5b69ffffffffffffffffffff613d228261380b565b168252613d3160208201613cf8565b65ffffffffffff808216602085015280613d4d60408501613cf8565b1660408501525050613d616060820161384d565b61ffff808216606085015280613d796080850161384d565b166080850152505060a0810135613d8f816136fb565b80151560a0840152505050565b60c081016107b88284613d0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107b8576107b8613daa565b600082613e26577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ea957600080fd5b830160208101925035905067ffffffffffffffff811115613ec957600080fd5b80360382131561398e57600080fd5b600060608301823584526020808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112613f1857600080fd5b8401818101903567ffffffffffffffff811115613f3457600080fd5b8060051b803603831315613f4757600080fd5b6060848901529381905260809387018401938290880160005b83811015613fb8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8803018252613f998386613e74565b613fa4898284613e2b565b985050509185019190850190600101613f60565b505050505050613fcb6040840184613e74565b8583036040870152613fde838284613e2b565b9695505050505050565b602081526000612d976020830184613ed8565b6bffffffffffffffffffffffff8116811461125c57600080fd5b60006020828403121561402757600080fd5b8135612d9781613ffb565b813561403d8161357c565b73ffffffffffffffffffffffffffffffffffffffff811690507fffffffffffffffffffffffff00000000000000000000000000000000000000008181845416178355602084013561408d81613ffb565b60a01b1617905550565b73ffffffffffffffffffffffffffffffffffffffff831681526101008101612d97602083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b601f8211156108ce57600081815260208120601f850160051c810160208610156141525750805b601f850160051c820191505b81811015610a0e5782815560010161415e565b67ffffffffffffffff83111561418957614189613764565b61419d836141978354613cab565b8361412b565b6000601f8411600181146141ef57600085156141b95750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561220c565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561423e578685013582556020948501946001909201910161421e565b5086821015614279577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b818103818111156107b8576107b8613daa565b808201808211156107b8576107b8613daa565b6020815260006132b4602083018486613e2b565b803563ffffffff8116811461371457600080fd5b69ffffffffffffffffffff6142ed8261380b565b16825261ffff6142ff6020830161384d565b16602083015261431160408201613cf8565b65ffffffffffff80821660408501528061432d60608501613cf8565b1660608501525050608081013560ff8116811461434957600080fd5b60ff16608083015261435d60a082016142c5565b63ffffffff1660a083015261437460c0820161384d565b61ffff1660c083015261438960e08201613709565b80151560e0840152505050565b73ffffffffffffffffffffffffffffffffffffffff831681526101208101612d9760208301846142d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143f657600080fd5b83018035915067ffffffffffffffff82111561441157600080fd5b60200191503681900382131561398e57600080fd5b60006020828403121561443857600080fd5b612d9782613cf8565b73ffffffffffffffffffffffffffffffffffffffff8316815260e08101612d976020830184613d0e565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152600061449b604083018486613e2b565b95945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126144d857600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006132b46040830184613ed8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261454657600080fd5b83018035915067ffffffffffffffff82111561456157600080fd5b6020019150600581901b360382131561398e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145dd57600080fd5b83018035915067ffffffffffffffff8211156145f857600080fd5b6020019150600881901b360382131561398e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261014081016132b460408301846142d9565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525069ffffffffffffffffffff835116604083015261ffff602084015116606083015265ffffffffffff604084015116608083015260608301516146bb60a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261473b57600080fd5b83018035915067ffffffffffffffff82111561475657600080fd5b602001915060e08102360382131561398e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff848116825283166020820152610120810169ffffffffffffffffffff6147a78461380b565b16604083015262ffffff6147bd60208501613825565b1660608301526147cf60408401613838565b64ffffffffff8082166080850152806147ea60608701613838565b1660a0850152806147fd60808701613838565b1660c0850152505061481160a0840161384d565b61ffff1660e083015261482660c0840161384d565b61ffff81166101008401526146fd565b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261012081016132b4604083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b600083516148e48184602088016134e2565b8351908301906148f88183602088016134e2565b01949350505050565b60006020828403121561491357600080fd5b8151612d97816136fb565b60208082528181018390526000908460408401835b8681101561496e5782356149468161357c565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614933565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613fde6080830184613506565b6000602082840312156149ca57600080fd5b8151612d978161349756fea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a31393435204b6f6e677a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b4e475a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102ff5760003560e01c80636c0360eb1161019c57806395d89b41116100ee578063c87b56dd11610097578063e8a3d48511610071578063e8a3d485146106b2578063e985e9c5146106ba578063f2fde38b1461070357600080fd5b8063c87b56dd14610684578063cb743ba814610697578063d5abeb01146106aa57600080fd5b8063ad2f852a116100c8578063ad2f852a1461064b578063b88d4fde14610669578063c6ab67a31461067c57600080fd5b806395d89b411461061d578063a22cb46514610625578063a48301141461063857600080fd5b80637a05bc82116101505780638da5cb5b1161012a5780638da5cb5b146105d9578063911f456b146105f7578063938e3d7b1461060a57600080fd5b80637a05bc82146105855780637bc2be7614610598578063840e15d4146105ab57600080fd5b806370a082311161018157806370a0823114610562578063715018a61461057557806379ba50971461057d57600080fd5b80636c0360eb146105475780636f8b44b01461054f57600080fd5b806341f4343411610255578063511aa644116102095780636352211e116101e35780636352211e1461050e57806364869dad1461052157806366251b691461053457600080fd5b8063511aa644146104d557806355f804b3146104e857806360c308b6146104fb57600080fd5b806342842e0e1161023a57806342842e0e1461049c57806344dae42c146104af57806348a4c101146104c257600080fd5b806341f434341461045957806342260b5d1461046e57600080fd5b806318160ddd116102b757806323b872dd1161029157806323b872dd146103f45780632a55205a146104075780633680620d1461044657600080fd5b806318160ddd146103a15780631b73593c146103d957806323452b9c146103ec57600080fd5b8063081812fc116102e8578063081812fc14610341578063095ea7b314610379578063099b6bfa1461038e57600080fd5b806301ffc9a71461030457806306fdde031461032c575b600080fd5b6103176103123660046134c5565b610716565b60405190151581526020015b60405180910390f35b6103346107be565b6040516103239190613550565b61035461034f366004613563565b610850565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610323565b61038c61038736600461359e565b6108ba565b005b61038c61039c366004613563565b6108d3565b600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610323565b61038c6103e73660046135ca565b61097d565b61038c610a16565b61038c610402366004613629565b610a7c565b61041a61041536600461366a565b610ab4565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610323565b61038c61045436600461368c565b610b1d565b6103546daaeb6d7670e522a718067333cd4e81565b600e547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166103cb565b61038c6104aa366004613629565b610b80565b61038c6104bd3660046136e3565b610bb2565b61038c6104d0366004613719565b610d23565b61038c6104e336600461385f565b610dc3565b61038c6104f6366004613995565b610e28565b61038c6105093660046139d7565b610ebc565b61035461051c366004613563565b610ece565b61038c61052f36600461359e565b610ed9565b61038c610542366004613a4c565b611019565b61033461107e565b61038c61055d366004613563565b61108d565b6103cb610570366004613a7a565b61110f565b61038c611191565b61038c6111a5565b61038c610593366004613a97565b61125f565b61038c6105a6366004613aec565b6112c4565b6105be6105b9366004613a7a565b611329565b60408051938452602084019290925290820152606001610323565b60085473ffffffffffffffffffffffffffffffffffffffff16610354565b61038c610605366004613b5f565b611396565b61038c610618366004613995565b612131565b610334612178565b61038c610633366004613b9b565b612187565b61038c61064636600461366a565b61219b565b600e5473ffffffffffffffffffffffffffffffffffffffff16610354565b61038c610677366004613bc9565b6121d9565b600d546103cb565b610334610692366004613563565b612213565b61038c6106a5366004613719565b612338565b600a546103cb565b6103346123a5565b6103176106c8366004613a4c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b61038c610711366004613a7a565b6123b4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1890fe8e0000000000000000000000000000000000000000000000000000000014806107a957507fffffffff0000000000000000000000000000000000000000000000000000000082167f9c15441500000000000000000000000000000000000000000000000000000000145b806107b857506107b88261247c565b92915050565b6060600280546107cd90613cab565b80601f01602080910402602001604051908101604052809291908181526020018280546107f990613cab565b80156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b5050505050905090565b600061085b8261251e565b610891576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b816108c48161256c565b6108ce8383612671565b505050565b6108db612786565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610937576040517fe03264af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b610985612786565b61098e82612816565b6040517f01308e6500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906301308e65906109e0908490600401613d9c565b600060405180830381600087803b1580156109fa57600080fd5b505af1158015610a0e573d6000803e3d6000fd5b505050505050565b610a1e61287a565b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b8273ffffffffffffffffffffffffffffffffffffffff81163314610aa357610aa33361256c565b610aae8484846128cb565b50505050565b600e8054600091829161271090610af1907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1686613dd9565b610afb9190613df0565b905473ffffffffffffffffffffffffffffffffffffffff169590945092505050565b610b25612786565b610b2e82612816565b6040517febb4a55f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063ebb4a55f906109e0908490600401613fe8565b8273ffffffffffffffffffffffffffffffffffffffff81163314610ba757610ba73361256c565b610aae848484612b81565b610bba612786565b6000610bc96020830183613a7a565b73ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f1cc0baef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710610c296040830160208401614015565b6bffffffffffffffffffffffff161115610c9557610c4d6040820160208301614015565b6040517f3cadbafb0000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b80600e610ca28282614032565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d9050610cd36020830183613a7a565b610ce36040840160208501614015565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152015b60405180910390a150565b610d2b612786565b610d3483612816565b6040517f8e7d1e4300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b50505050505050565b610dcb612786565b610dd483612816565b6040517f4d38017800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634d38017890610d8c9085908590600401614097565b610e30612786565b600b610e3d828483614171565b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610eb8577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610e9960005490565b610ea3919061428b565b60408051928352602083019190915201610971565b5050565b610ec461287a565b610eb88282612b9c565b60006107b882612d0c565b600f54600114610f45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401610c8c565b6002600f55610f5333612816565b600a5481610f826000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b610f8c919061429e565b11156110065780610fbe6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b610fc8919061429e565b600a546040517fe12d231400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610c8c565b6110108282612dd2565b50506001600f55565b611021612786565b61102a82612816565b6040517f12738db800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528316906312738db8906024016109e0565b6060611088612dec565b905090565b611095612786565b67ffffffffffffffff8111156110da576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401610c8c565b600a8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c90602001610d18565b600073ffffffffffffffffffffffffffffffffffffffff821661115e576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b61119961287a565b6111a36000612dfb565b565b60095473ffffffffffffffffffffffffffffffffffffffff163381146111f7576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a161125c81612dfb565b50565b611267612786565b61127083612816565b6040517fb957d0cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b957d0cb90610d8c90859085906004016142b1565b6112cc612786565b6112d583612816565b6040517ffd9ab22a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063fd9ab22a90610d8c9085908590600401614396565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604080822054901c67ffffffffffffffff1690806113896000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600a549395909450915050565b61139e61287a565b803515611410576040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152813560048201523090636f8b44b090602401600060405180830381600087803b1580156113f757600080fd5b505af115801561140b573d6000803e3d6000fd5b505050505b61141d60208201826143c1565b15905061148757306355f804b361143760208401846143c1565b6040518363ffffffff1660e01b81526004016114549291906142b1565b600060405180830381600087803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b505050505b61149460408201826143c1565b1590506114fe573063938e3d7b6114ae60408401846143c1565b6040518363ffffffff1660e01b81526004016114cb9291906142b1565b600060405180830381600087803b1580156114e557600080fd5b505af11580156114f9573d6000803e3d6000fd5b505050505b61151e61151160e0830160c08401614426565b65ffffffffffff16151590565b61153161151160c0840160a08501614426565b176001036115a35730631b73593c61154f6080840160608501613a7a565b836080016040518363ffffffff1660e01b8152600401611570929190614441565b600060405180830381600087803b15801561158a57600080fd5b505af115801561159e573d6000803e3d6000fd5b505050505b6115b16101408201826143c1565b15905061162d5730637a05bc826115ce6080840160608501613a7a565b6115dc6101408501856143c1565b6040518463ffffffff1660e01b81526004016115fa9392919061446b565b600060405180830381600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050505b600061163d6101608301836144a4565b35146116b75730633680620d6116596080840160608501613a7a565b6116676101608501856144a4565b6040518363ffffffff1660e01b81526004016116849291906144e2565b600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b505050505b60006116cb6101a083016101808401613a7a565b73ffffffffffffffffffffffffffffffffffffffff161461179457306366251b696116fc6080840160608501613a7a565b61170e6101a085016101808601613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b6101a08101351561180e576040517f099b6bfa0000000000000000000000000000000000000000000000000000000081526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b1580156117f557600080fd5b505af1158015611809573d6000803e3d6000fd5b505050505b600061181e6101c0830183614511565b905011156119225760005b6118376101c0830183614511565b905081101561192057306348a4c1016118566080850160608601613a7a565b6118646101c0860186614511565b8581811061187457611874614579565b90506020020160208101906118899190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b1580156118fd57600080fd5b505af1158015611911573d6000803e3d6000fd5b50505050806001019050611829565b505b60006119326101e0830183614511565b90501115611a365760005b61194b6101e0830183614511565b9050811015611a3457306348a4c10161196a6080850160608601613a7a565b6119786101e0860186614511565b8581811061198857611988614579565b905060200201602081019061199d9190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611a1157600080fd5b505af1158015611a25573d6000803e3d6000fd5b5050505080600101905061193d565b505b6000611a46610200830183614511565b90501115611b4a5760005b611a5f610200830183614511565b9050811015611b48573063cb743ba8611a7e6080850160608601613a7a565b611a8c610200860186614511565b85818110611a9c57611a9c614579565b9050602002016020810190611ab19190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b50505050806001019050611a51565b505b6000611b5a610220830183614511565b90501115611c5e5760005b611b73610220830183614511565b9050811015611c5c573063cb743ba8611b926080850160608601613a7a565b611ba0610220860186614511565b85818110611bb057611bb0614579565b9050602002016020810190611bc59190613a7a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611c3957600080fd5b505af1158015611c4d573d6000803e3d6000fd5b50505050806001019050611b65565b505b6000611c6e6102608301836145a8565b90501115611db257611c84610240820182614511565b9050611c946102608301836145a8565b905014611ccd576040517fb81aa63900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b611cde6102608301836145a8565b9050811015611db05730637bc2be76611cfd6080850160608601613a7a565b611d0b610240860186614511565b85818110611d1b57611d1b614579565b9050602002016020810190611d309190613a7a565b611d3e6102608701876145a8565b86818110611d4e57611d4e614579565b905061010002016040518463ffffffff1660e01b8152600401611d7393929190614610565b600060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b50505050806001019050611cd0565b505b6000611dc2610280830183614511565b90501115611ecd5760005b611ddb610280830183614511565b9050811015611ecb576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be76611e3b6080860160608701613a7a565b611e49610280870187614511565b86818110611e5957611e59614579565b9050602002016020810190611e6e9190613a7a565b846040518463ffffffff1660e01b8152600401611e8d93929190614643565b600060405180830381600087803b158015611ea757600080fd5b505af1158015611ebb573d6000803e3d6000fd5b5050505081600101915050611dcd565b505b6000611edd6102c0830183614706565b9050111561202057611ef36102a0820182614511565b9050611f036102c0830183614706565b905014611f3c576040517f74ef6df700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b611f4d6102c0830183614706565b905081101561201e573063511aa644611f6c6080850160608601613a7a565b611f7a6102a0860186614511565b85818110611f8a57611f8a614579565b9050602002016020810190611f9f9190613a7a565b611fad6102c0870187614706565b86818110611fbd57611fbd614579565b905060e002016040518463ffffffff1660e01b8152600401611fe19392919061476d565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b50505050806001019050611f3f565b505b60006120306102e0830183614511565b9050111561125c5760005b6120496102e0830183614511565b9050811015610eb8576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa6446120a16080860160608701613a7a565b6120af6102e0870187614511565b868181106120bf576120bf614579565b90506020020160208101906120d49190613a7a565b846040518463ffffffff1660e01b81526004016120f393929190614836565b600060405180830381600087803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b505050508160010191505061203b565b612139612786565b600c612146828483614171565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac3737882826040516109719291906142b1565b6060600380546107cd90613cab565b816121918161256c565b6108ce8383612e72565b6121a3612786565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610971565b8373ffffffffffffffffffffffffffffffffffffffff81163314612200576122003361256c565b61220c85858585612f09565b5050505050565b606061221e8261251e565b612254576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061225e612dec565b9050805160000361227f575050604080516020810190915260008152919050565b6040805180820190915260018082527f2f000000000000000000000000000000000000000000000000000000000000006020909201829052825183916122c49161428b565b815181106122d4576122d4614579565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146123065792915050565b8061231084612f73565b6040516020016123219291906148d2565b604051602081830303815290604052915050919050565b612340612786565b61234983612816565b6040517f7f2a5cca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690637f2a5cca90604401610d8c565b6060600c80546107cd90613cab565b6123bc61287a565b73ffffffffffffffffffffffffffffffffffffffff8116612409576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da90602001610d18565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061250f57507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806107b857506107b882612fd5565b600081600111158015612532575060005482105b80156107b85750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b6daaeb6d7670e522a718067333cd4e3b1561125c576040517fc617113400000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190614901565b61125c576040517fede71dcc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610c8c565b600061267c82610ece565b90503373ffffffffffffffffffffffffffffffffffffffff8216146127055773ffffffffffffffffffffffffffffffffffffffff8116600090815260076020908152604080832033845290915290205460ff16612705576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b3033146127dc6127ab60085473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490565b176000036111a3576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16151560011461125c576040517f15e26ff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128d682612d0c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461293d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff8816909114176129da5773ffffffffffffffffffffffffffffffffffffffff8616600090815260076020908152604080832033845290915290205460ff166129da576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516612a27576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015612a3257600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003612b2157600184016000818152600460205260408120549003612b1f576000548114612b1f5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610a0e565b6108ce838383604051806020016040528060008152506121d9565b6011548160005b82811015612c2b5760006010600060118481548110612bc457612bc4614579565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612ba3565b5060005b81811015612cbf57600160106000878785818110612c4f57612c4f614579565b9050602002016020810190612c649190613a7a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612c2f565b50612ccc601185856133fa565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d8484604051612cfe92919061491e565b60405180910390a150505050565b60008180600111612da057600054811015612da057600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612d9e575b80600003612d9757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054612d58565b9392505050565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb88282604051806020016040528060008152506130b6565b6060600b80546107cd90613cab565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612f14848484610a7c565b73ffffffffffffffffffffffffffffffffffffffff83163b15610aae57612f3d84848484613142565b610aae576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480612f8d57508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061306857507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806107b85750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b6130c083836132bc565b73ffffffffffffffffffffffffffffffffffffffff83163b156108ce576000548281035b6130f76000868380600101945086613142565b61312d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106130e457816000541461220c57600080fd5b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061319d903390899088908890600401614979565b6020604051808303816000875af19250505080156131f6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526131f3918101906149b8565b60015b61326d573d808015613224576040519150601f19603f3d011682016040523d82523d6000602084013e613229565b606091505b508051600003613265576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b60008054908290036132fa576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146133b657808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161337e565b50816000036133f1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215613472579160200282015b828111156134725781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84351617825560209092019160019091019061341a565b5061347e929150613482565b5090565b5b8082111561347e5760008155600101613483565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461125c57600080fd5b6000602082840312156134d757600080fd5b8135612d9781613497565b60005b838110156134fd5781810151838201526020016134e5565b50506000910152565b6000815180845261351e8160208601602086016134e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612d976020830184613506565b60006020828403121561357557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125c57600080fd5b600080604083850312156135b157600080fd5b82356135bc8161357c565b946020939093013593505050565b60008082840360e08112156135de57600080fd5b83356135e98161357c565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561361b57600080fd5b506020830190509250929050565b60008060006060848603121561363e57600080fd5b83356136498161357c565b925060208401356136598161357c565b929592945050506040919091013590565b6000806040838503121561367d57600080fd5b50508035926020909101359150565b6000806040838503121561369f57600080fd5b82356136aa8161357c565b9150602083013567ffffffffffffffff8111156136c657600080fd5b8301606081860312156136d857600080fd5b809150509250929050565b6000604082840312156136f557600080fd5b50919050565b801515811461125c57600080fd5b8035613714816136fb565b919050565b60008060006060848603121561372e57600080fd5b83356137398161357c565b925060208401356137498161357c565b91506040840135613759816136fb565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156137b6576137b6613764565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561380357613803613764565b604052919050565b803569ffffffffffffffffffff8116811461371457600080fd5b803562ffffff8116811461371457600080fd5b803564ffffffffff8116811461371457600080fd5b803561ffff8116811461371457600080fd5b600080600083850361012081121561387657600080fd5b84356138818161357c565b935060208501356138918161357c565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820112156138c357600080fd5b506138cc613793565b6138d86040860161380b565b81526138e660608601613825565b60208201526138f760808601613838565b604082015261390860a08601613838565b606082015261391960c08601613838565b608082015261392a60e0860161384d565b60a082015261393c610100860161384d565b60c0820152809150509250925092565b60008083601f84011261395e57600080fd5b50813567ffffffffffffffff81111561397657600080fd5b60208301915083602082850101111561398e57600080fd5b9250929050565b600080602083850312156139a857600080fd5b823567ffffffffffffffff8111156139bf57600080fd5b6139cb8582860161394c565b90969095509350505050565b600080602083850312156139ea57600080fd5b823567ffffffffffffffff80821115613a0257600080fd5b818501915085601f830112613a1657600080fd5b813581811115613a2557600080fd5b8660208260051b8501011115613a3a57600080fd5b60209290920196919550909350505050565b60008060408385031215613a5f57600080fd5b8235613a6a8161357c565b915060208301356136d88161357c565b600060208284031215613a8c57600080fd5b8135612d978161357c565b600080600060408486031215613aac57600080fd5b8335613ab78161357c565b9250602084013567ffffffffffffffff811115613ad357600080fd5b613adf8682870161394c565b9497909650939450505050565b6000806000838503610140811215613b0357600080fd5b8435613b0e8161357c565b93506020850135613b1e8161357c565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613b5157600080fd5b506040840190509250925092565b600060208284031215613b7157600080fd5b813567ffffffffffffffff811115613b8857600080fd5b82016103008185031215612d9757600080fd5b60008060408385031215613bae57600080fd5b8235613bb98161357c565b915060208301356136d8816136fb565b60008060008060808587031215613bdf57600080fd5b8435613bea8161357c565b9350602085810135613bfb8161357c565b935060408601359250606086013567ffffffffffffffff80821115613c1f57600080fd5b818801915088601f830112613c3357600080fd5b813581811115613c4557613c45613764565b613c75847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016137bc565b91508082528984828501011115613c8b57600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c90821680613cbf57607f821691505b6020821081036136f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b803565ffffffffffff8116811461371457600080fd5b69ffffffffffffffffffff613d228261380b565b168252613d3160208201613cf8565b65ffffffffffff808216602085015280613d4d60408501613cf8565b1660408501525050613d616060820161384d565b61ffff808216606085015280613d796080850161384d565b166080850152505060a0810135613d8f816136fb565b80151560a0840152505050565b60c081016107b88284613d0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107b8576107b8613daa565b600082613e26577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ea957600080fd5b830160208101925035905067ffffffffffffffff811115613ec957600080fd5b80360382131561398e57600080fd5b600060608301823584526020808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112613f1857600080fd5b8401818101903567ffffffffffffffff811115613f3457600080fd5b8060051b803603831315613f4757600080fd5b6060848901529381905260809387018401938290880160005b83811015613fb8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8803018252613f998386613e74565b613fa4898284613e2b565b985050509185019190850190600101613f60565b505050505050613fcb6040840184613e74565b8583036040870152613fde838284613e2b565b9695505050505050565b602081526000612d976020830184613ed8565b6bffffffffffffffffffffffff8116811461125c57600080fd5b60006020828403121561402757600080fd5b8135612d9781613ffb565b813561403d8161357c565b73ffffffffffffffffffffffffffffffffffffffff811690507fffffffffffffffffffffffff00000000000000000000000000000000000000008181845416178355602084013561408d81613ffb565b60a01b1617905550565b73ffffffffffffffffffffffffffffffffffffffff831681526101008101612d97602083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b601f8211156108ce57600081815260208120601f850160051c810160208610156141525750805b601f850160051c820191505b81811015610a0e5782815560010161415e565b67ffffffffffffffff83111561418957614189613764565b61419d836141978354613cab565b8361412b565b6000601f8411600181146141ef57600085156141b95750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b17835561220c565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561423e578685013582556020948501946001909201910161421e565b5086821015614279577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b818103818111156107b8576107b8613daa565b808201808211156107b8576107b8613daa565b6020815260006132b4602083018486613e2b565b803563ffffffff8116811461371457600080fd5b69ffffffffffffffffffff6142ed8261380b565b16825261ffff6142ff6020830161384d565b16602083015261431160408201613cf8565b65ffffffffffff80821660408501528061432d60608501613cf8565b1660608501525050608081013560ff8116811461434957600080fd5b60ff16608083015261435d60a082016142c5565b63ffffffff1660a083015261437460c0820161384d565b61ffff1660c083015261438960e08201613709565b80151560e0840152505050565b73ffffffffffffffffffffffffffffffffffffffff831681526101208101612d9760208301846142d9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143f657600080fd5b83018035915067ffffffffffffffff82111561441157600080fd5b60200191503681900382131561398e57600080fd5b60006020828403121561443857600080fd5b612d9782613cf8565b73ffffffffffffffffffffffffffffffffffffffff8316815260e08101612d976020830184613d0e565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152600061449b604083018486613e2b565b95945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126144d857600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006132b46040830184613ed8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261454657600080fd5b83018035915067ffffffffffffffff82111561456157600080fd5b6020019150600581901b360382131561398e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126145dd57600080fd5b83018035915067ffffffffffffffff8211156145f857600080fd5b6020019150600881901b360382131561398e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261014081016132b460408301846142d9565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525069ffffffffffffffffffff835116604083015261ffff602084015116606083015265ffffffffffff604084015116608083015260608301516146bb60a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261473b57600080fd5b83018035915067ffffffffffffffff82111561475657600080fd5b602001915060e08102360382131561398e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff848116825283166020820152610120810169ffffffffffffffffffff6147a78461380b565b16604083015262ffffff6147bd60208501613825565b1660608301526147cf60408401613838565b64ffffffffff8082166080850152806147ea60608701613838565b1660a0850152806147fd60808701613838565b1660c0850152505061481160a0840161384d565b61ffff1660e083015261482660c0840161384d565b61ffff81166101008401526146fd565b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261012081016132b4604083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b600083516148e48184602088016134e2565b8351908301906148f88183602088016134e2565b01949350505050565b60006020828403121561491357600080fd5b8151612d97816136fb565b60208082528181018390526000908460408401835b8681101561496e5782356149468161357c565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614933565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613fde6080830184613506565b6000602082840312156149ca57600080fd5b8151612d978161349756fea164736f6c6343000811000a

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a31393435204b6f6e677a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b4e475a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5

-----Decoded View---------------
Arg [0] : name (string): 1945 Kongz
Arg [1] : symbol (string): KNGZ
Arg [2] : allowedSeaDrop (address[]): 0x00005EA00Ac477B1030CE78506496e8C2dE24bf5

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 31393435204b6f6e677a00000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 4b4e475a00000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 00000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5


Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.