Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 3 from a total of 3 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit For | 14683322 | 12 days ago | IN | 7 S | 0.00241125 | ||||
Deposit For | 14651200 | 12 days ago | IN | 2 S | 0.00326625 | ||||
Deposit For | 13212022 | 20 days ago | IN | 1 S | 0.00399954 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BiconomySponsorshipPaymaster
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 800 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.27;/* solhint-disable reason-string */import "../base/BasePaymaster.sol";import "account-abstraction/core/UserOperationLib.sol";import "account-abstraction/core/Helpers.sol";import { SignatureCheckerLib } from "solady/utils/SignatureCheckerLib.sol";import { ECDSA as ECDSA_solady } from "solady/utils/ECDSA.sol";import { BiconomySponsorshipPaymasterErrors } from "../common/BiconomySponsorshipPaymasterErrors.sol";import { ReentrancyGuardTransient } from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol";import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { SafeTransferLib } from "solady/utils/SafeTransferLib.sol";import { IBiconomySponsorshipPaymaster } from "../interfaces/IBiconomySponsorshipPaymaster.sol";/*** @title BiconomySponsorshipPaymaster* @author livingrockrises<chirag@biconomy.io>* @author ShivaanshK<shivaansh.kapoor@biconomy.io>* @notice Based on Infinitism's 'VerifyingPaymaster' contract* @dev This contract is used to sponsor the transaction fees of the user operations* Uses a verifying signer to provide the signature if predetermined conditions are met* regarding the user operation calldata. Also this paymaster is Singleton in nature which* means multiple Dapps/Wallet clients willing to sponsor the transactions can share this paymaster.* Maintains it's own accounting of the gas balance for each Dapp/Wallet client
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.27;/* solhint-disable reason-string */import { SoladyOwnable } from "../utils/SoladyOwnable.sol";import "@openzeppelin/contracts/utils/introspection/IERC165.sol";import { IPaymaster } from "account-abstraction/interfaces/IPaymaster.sol";import { IEntryPoint } from "account-abstraction/interfaces/IEntryPoint.sol";import "account-abstraction/core/UserOperationLib.sol";/*** Helper class for creating a paymaster.* provides helper methods for staking.* Validates that the postOp is called only by the entryPoint.*/abstract contract BasePaymaster is IPaymaster, SoladyOwnable {IEntryPoint public immutable entryPoint;uint256 internal constant _PAYMASTER_VALIDATION_GAS_OFFSET = UserOperationLib.PAYMASTER_VALIDATION_GAS_OFFSET;uint256 internal constant _PAYMASTER_POSTOP_GAS_OFFSET = UserOperationLib.PAYMASTER_POSTOP_GAS_OFFSET;uint256 internal constant _PAYMASTER_DATA_OFFSET = UserOperationLib.PAYMASTER_DATA_OFFSET;constructor(address owner, IEntryPoint entryPointArg) SoladyOwnable(owner) {_validateEntryPointInterface(entryPointArg);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.23;/* solhint-disable no-inline-assembly */import "../interfaces/PackedUserOperation.sol";import {calldataKeccak, min} from "./Helpers.sol";/*** Utility functions helpful when working with UserOperation structs.*/library UserOperationLib {uint256 public constant PAYMASTER_VALIDATION_GAS_OFFSET = 20;uint256 public constant PAYMASTER_POSTOP_GAS_OFFSET = 36;uint256 public constant PAYMASTER_DATA_OFFSET = 52;/*** Get sender from user operation data.* @param userOp - The user operation data.*/function getSender(PackedUserOperation calldata userOp) internal pure returns (address) {address data;//read sender from userOp, which is first userOp member (saves 800 gas...)assembly {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.23;/* solhint-disable no-inline-assembly *//** For simulation purposes, validateUserOp (and validatePaymasterUserOp)* must return this value in case of signature failure, instead of revert.*/uint256 constant SIG_VALIDATION_FAILED = 1;/** For simulation purposes, validateUserOp (and validatePaymasterUserOp)* return this value on success.*/uint256 constant SIG_VALIDATION_SUCCESS = 0;/*** Returned data from validateUserOp.* validateUserOp returns a uint256, which is created by `_packedValidationData` and* parsed by `_parseValidationData`.* @param aggregator - address(0) - The account validated the signature by itself.* address(1) - The account failed to validate the signature.
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Signature verification helper that supports both ECDSA signatures from EOAs/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)////// @dev Note:/// - The signature checking functions use the ecrecover precompile (0x1)./// - The `bytes memory signature` variants use the identity precompile (0x4)/// to copy memory internally./// - Unlike ECDSA signatures, contract signatures are revocable./// - As of Solady version 0.0.134, all `bytes signature` variants accept both/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures./// See: https://eips.ethereum.org/EIPS/eip-2098/// This is for calldata efficiency on smart accounts prevalent on L2s.////// WARNING! Do NOT use signatures as unique identifiers:/// - Use a nonce in the digest to prevent replay attacks on the same contract./// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts./// EIP-712 also enables readable signing of typed data for better user safety./// This implementation does NOT check if a signature is non-malleable.library SignatureCheckerLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Gas optimized ECDSA wrapper./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/ECDSA.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ECDSA.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol)////// @dev Note:/// - The recovery functions use the ecrecover precompile (0x1)./// - As of Solady version 0.0.68, the `recover` variants will revert upon recovery failure./// This is for more safety by default./// Use the `tryRecover` variants if you need to get the zero address back/// upon recovery failure instead./// - As of Solady version 0.0.134, all `bytes signature` variants accept both/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures./// See: https://eips.ethereum.org/EIPS/eip-2098/// This is for calldata efficiency on smart accounts prevalent on L2s.////// WARNING! Do NOT directly use signatures as unique identifiers:/// - The recovery operations do NOT check if a signature is non-malleable./// - Use a nonce in the digest to prevent replay attacks on the same contract./// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts./// EIP-712 also enables readable signing of typed data for better user safety./// - If you need a unique hash from a signature, please use the `canonicalHash` functions.library ECDSA {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity ^0.8.27;contract BiconomySponsorshipPaymasterErrors {/*** @notice Throws when the paymaster address provided is address(0)*/error PaymasterIdCanNotBeZero();/*** @notice Throws when the 0 has been provided as deposit*/error DepositCanNotBeZero();/*** @notice Throws when the verifiying signer address provided is address(0)*/error VerifyingSignerCanNotBeZero();/*** @notice Throws when the fee collector address provided is address(0)*/error FeeCollectorCanNotBeZero();/*** @notice Throws when the fee collector address provided is a deployed contract
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuardTransient.sol)pragma solidity ^0.8.24;import {TransientSlot} from "./TransientSlot.sol";/*** @dev Variant of {ReentrancyGuard} that uses transient storage.** NOTE: This variant only works on networks where EIP-1153 is available.** _Available since v5.1._*/abstract contract ReentrancyGuardTransient {using TransientSlot for *;// keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.ReentrancyGuard")) - 1)) & ~bytes32(uint256(0xff))bytes32 private constant REENTRANCY_GUARD_STORAGE =0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;/*** @dev Unauthorized reentrant call.*/error ReentrancyGuardReentrantCall();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 standard as defined in the ERC.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)/// @author Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)////// @dev Note:/// - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.library SafeTransferLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The ETH transfer has failed.error ETHTransferFailed();/// @dev The ERC20 `transferFrom` has failed.error TransferFromFailed();/// @dev The ERC20 `transfer` has failed.error TransferFailed();/// @dev The ERC20 `approve` has failed.error ApproveFailed();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity ^0.8.27;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import { PackedUserOperation } from "account-abstraction/core/UserOperationLib.sol";interface IBiconomySponsorshipPaymaster {struct WithdrawalRequest {uint256 amount;address to;uint256 requestSubmittedTimestamp;}event UnaccountedGasChanged(uint256 indexed oldValue, uint256 indexed newValue);event FixedPriceMarkupChanged(uint256 indexed oldValue, uint256 indexed newValue);event VerifyingSignerChanged(address indexed oldSigner, address indexed newSigner, address indexed actor);event FeeCollectorChanged(address indexed oldFeeCollector, address indexed newFeeCollector, address indexed actor);event GasDeposited(address indexed _paymasterId, uint256 indexed _value);event GasWithdrawn(address indexed _paymasterId, address indexed _to, uint256 indexed _value);event GasBalanceDeducted(address indexed _paymasterId, uint256 indexed _charge, uint256 indexed _premium);event Received(address indexed sender, uint256 value);event TokensWithdrawn(address indexed token, address indexed to, uint256 indexed amount, address actor);event WithdrawalRequestSubmitted(address withdrawAddress, uint256 amount);event WithdrawalRequestCancelledFor(address paymasterId);event TrustedPaymasterIdSet(address indexed paymasterId, bool isTrusted);event EthWithdrawn(address indexed recipient, uint256 indexed amount);
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.27;import { Ownable } from "solady/auth/Ownable.sol";contract SoladyOwnable is Ownable {constructor(address _owner) Ownable() {assembly {if iszero(shl(96, _owner)) {mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`.revert(0x1c, 0x04)}}_initializeOwner(_owner);}}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[ERC].** 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[ERC 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);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.5;import "./PackedUserOperation.sol";/*** The interface exposed by a paymaster contract, who agrees to pay the gas for user's operations.* A paymaster must hold a stake to cover the required entrypoint stake and also the gas for the transaction.*/interface IPaymaster {enum PostOpMode {// User op succeeded.opSucceeded,// User op reverted. Still has to pay for gas.opReverted,// Only used internally in the EntryPoint (cleanup after postOp reverts). Never calling paymaster with this valuepostOpReverted}/*** Payment validation: check if paymaster agrees to pay.* Must verify sender is the entryPoint.* Revert to reject this request.* Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted).* The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns.* @param userOp - The user operation.
1234567891011121314151617181920212223242526/**** Account-Abstraction (EIP-4337) singleton EntryPoint implementation.** Only one instance required on each chain.**/// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.5;/* solhint-disable avoid-low-level-calls *//* solhint-disable no-inline-assembly *//* solhint-disable reason-string */import "./PackedUserOperation.sol";import "./IStakeManager.sol";import "./IAggregator.sol";import "./INonceManager.sol";interface IEntryPoint is IStakeManager, INonceManager {/**** An event emitted after each successful request.* @param userOpHash - Unique identifier for the request (hash its entire content, except signature).* @param sender - The account that generates this request.* @param paymaster - If non-null, the paymaster that pays for this request.* @param nonce - The nonce value from the request.* @param success - True if the sender transaction succeeded, false if reverted.* @param actualGasCost - Actual amount paid (by account or paymaster) for this UserOperation.* @param actualGasUsed - Total gas used by this UserOperation (including preVerification, creation,
12345678910111213141516171819202122232425// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.5;/*** User Operation struct* @param sender - The sender account of this request.* @param nonce - Unique value the sender uses to verify it is not a replay.* @param initCode - If set, the account contract will be created by this constructor/* @param callData - The method call to execute on this account.* @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.* @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.* Covers batch overhead.* @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.* @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specificextra data* The paymaster will pay for the transaction instead of the sender.* @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID.*/struct PackedUserOperation {address sender;uint256 nonce;bytes initCode;bytes callData;bytes32 accountGasLimits;uint256 preVerificationGas;bytes32 gasFees;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/TransientSlot.sol)// This file was procedurally generated from scripts/generate/templates/TransientSlot.js.pragma solidity ^0.8.24;/*** @dev Library for reading and writing value-types to specific transient storage slots.** Transient slots are often used to store temporary values that are removed after the current transaction.* This library helps with reading and writing to such slots without the need for inline assembly.** * Example reading and writing values using transient storage:* ```solidity* contract Lock {* using TransientSlot for *;** // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.* bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542;** modifier locked() {* require(!_LOCK_SLOT.asBoolean().tload());** _LOCK_SLOT.asBoolean().tstore(true);* _;* _LOCK_SLOT.asBoolean().tstore(false);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Simple single owner authorization mixin./// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)////// @dev Note:/// This implementation does NOT auto-initialize the owner to `msg.sender`./// You MUST call the `_initializeOwner` in the constructor / initializer.////// While the ownable portion follows/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,/// the nomenclature for the 2-step ownership handover may be unique to this codebase.abstract contract Ownable {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The caller is not authorized to call the function.error Unauthorized();/// @dev The `newOwner` cannot be the zero address.error NewOwnerIsZeroAddress();/// @dev The `pendingOwner` does not have a valid handover request.error NoHandoverRequest();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity >=0.7.5;/*** Manage deposits and stakes.* Deposit is just a balance used to pay for UserOperations (either by a paymaster or an account).* Stake is value locked for at least "unstakeDelay" by the staked entity.*/interface IStakeManager {event Deposited(address indexed account, uint256 totalDeposit);event Withdrawn(address indexed account,address withdrawAddress,uint256 amount);// Emitted when stake or unstake delay are modified.event StakeLocked(address indexed account,uint256 totalStaked,uint256 unstakeDelaySec);// Emitted once a stake is scheduled for withdrawal.event StakeUnlocked(address indexed account, uint256 withdrawTime);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.5;import "./PackedUserOperation.sol";/*** Aggregated Signatures validator.*/interface IAggregator {/*** Validate aggregated signature.* Revert if the aggregated signature does not match the given list of operations.* @param userOps - Array of UserOperations to validate the signature for.* @param signature - The aggregated signature.*/function validateSignatures(PackedUserOperation[] calldata userOps,bytes calldata signature) external view;/*** Validate signature of a single userOp.* This method should be called by bundler after EntryPointSimulation.simulateValidation() returns* the aggregator this account uses.* First it validates the signature over the userOp. Then it returns data to be used when creating the handleOps.* @param userOp - The userOperation received from the user.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.5;interface INonceManager {/*** Return the next nonce for this sender.* Within a given key, the nonce values are sequenced (starting with zero, and incremented by one on each userop)* But UserOp with different keys can come with arbitrary order.** @param sender the account address* @param key the high 192 bit of the nonce* @return nonce a full nonce to pass for next UserOp with this sender.*/function getNonce(address sender, uint192 key)external view returns (uint256 nonce);/*** Manually increment the nonce of the sender.* This method is exposed just for completeness..* Account does NOT need to call it, neither during validation, nor elsewhere,* as the EntryPoint will update the nonce regardless.* Possible use-case is call it with various keys to "initialize" their nonces to one, so that future* UserOperations will not pay extra for the first transaction with a given key.*/function incrementNonce(uint192 key) external;
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","@prb/test/=node_modules/@prb/test/","@nexus/=node_modules/nexus/","forge-std/=lib/forge-std/src/","account-abstraction/=node_modules/account-abstraction/contracts/","@ERC4337/account-abstraction/=node_modules/account-abstraction/","@modulekit/=node_modules/modulekit/src/","sentinellist/=node_modules/sentinellist/src/","solady/=node_modules/solady/src/","@uniswap/v3-periphery/contracts/=node_modules/@uniswap/v3-periphery/contracts/","@uniswap/v3-core/contracts/=node_modules/@uniswap/v3-core/contracts/","@uniswap/swap-router-contracts/contracts/=node_modules/@uniswap/swap-router-contracts/contracts/","solady/src/=node_modules/solady/src/","excessively-safe-call/=node_modules/excessively-safe-call/src/","modulekit/=node_modules/@rhinestone/modulekit/src/","module-bases/=node_modules/module-bases/src/","erc7579/=node_modules/erc7579/src/","kernel/=node_modules/@zerodev/kernel/src/","@safe-global/=node_modules/@safe-global/","solarray/=node_modules/solarray/src/","erc7739Validator/=node_modules/erc7739-validator-base/src/","@biconomy-devx/=node_modules/@biconomy-devx/","@erc7579/=node_modules/@erc7579/","@gnosis.pm/=node_modules/@gnosis.pm/",
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"contract IEntryPoint","name":"entryPointArg","type":"address"},{"internalType":"address","name":"verifyingSignerArg","type":"address"},{"internalType":"address","name":"feeCollectorArg","type":"address"},{"internalType":"uint256","name":"unaccountedGasArg","type":"uint256"},{"internalType":"uint256","name":"paymasterIdWithdrawalDelayArg","type":"uint256"},{"internalType":"uint256","name":"minDepositArg","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"CanNotWithdrawToZeroAddress","type":"error"},{"inputs":[],"name":"CanNotWithdrawZeroAmount","type":"error"},{"inputs":[],"name":"DepositCanNotBeZero","type":"error"},{"inputs":[],"name":"FeeCollectorCanNotBeContract","type":"error"},{"inputs":[],"name":"FeeCollectorCanNotBeZero","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientFundsForPaymasterId","type":"error"},{"inputs":[],"name":"InsufficientFundsInGasTank","type":"error"},{"inputs":[],"name":"InvalidArrayLengths","type":"error"},{"inputs":[],"name":"InvalidPriceMarkup","type":"error"},{"inputs":[],"name":"InvalidSignatureLength","type":"error"},{"inputs":[],"name":"LowDeposit","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"NoRequestSubmitted","type":"error"},{"inputs":[],"name":"PaymasterIdCanNotBeZero","type":"error"},{"inputs":[],"name":"PostOpGasLimitTooLow","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"clearanceTime","type":"uint256"}],"name":"RequestNotClearedYet","type":"error"},{"inputs":[],"name":"SubmitRequestInstead","type":"error"},{"inputs":[],"name":"UnaccountedGasTooHigh","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UseDepositForInstead","type":"error"},{"inputs":[],"name":"VerifyingSignerCanNotBeContract","type":"error"},{"inputs":[],"name":"VerifyingSignerCanNotBeZero","type":"error"},{"inputs":[],"name":"WithdrawalFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldFeeCollector","type":"address"},{"indexed":true,"internalType":"address","name":"newFeeCollector","type":"address"},{"indexed":true,"internalType":"address","name":"actor","type":"address"}],"name":"FeeCollectorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"FixedPriceMarkupChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_paymasterId","type":"address"},{"indexed":true,"internalType":"uint256","name":"_charge","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_premium","type":"uint256"}],"name":"GasBalanceDeducted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_paymasterId","type":"address"},{"indexed":true,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"GasDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_paymasterId","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"GasWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinDepositChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"actor","type":"address"}],"name":"TokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"paymasterId","type":"address"},{"indexed":false,"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"TrustedPaymasterIdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"UnaccountedGasChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldSigner","type":"address"},{"indexed":true,"internalType":"address","name":"newSigner","type":"address"},{"indexed":true,"internalType":"address","name":"actor","type":"address"}],"name":"VerifyingSignerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"paymasterId","type":"address"}],"name":"WithdrawalRequestCancelledFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"withdrawAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawalRequestSubmitted","type":"event"},{"inputs":[{"internalType":"uint32","name":"unstakeDelaySec","type":"uint32"}],"name":"addStake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelWithdrawalRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"paymasterId","type":"address"}],"name":"depositFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"entryPoint","outputs":[{"internalType":"contract IEntryPoint","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"paymasterId","type":"address"}],"name":"executeWithdrawalRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"paymasterId","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple"},{"internalType":"address","name":"paymasterId","type":"address"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint32","name":"priceMarkup","type":"uint32"}],"name":"getHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"paymasterAndData","type":"bytes"}],"name":"parsePaymasterAndData","outputs":[{"internalType":"address","name":"paymasterId","type":"address"},{"internalType":"uint48","name":"validUntil","type":"uint48"},{"internalType":"uint48","name":"validAfter","type":"uint48"},{"internalType":"uint32","name":"priceMarkup","type":"uint32"},{"internalType":"uint128","name":"paymasterValidationGasLimit","type":"uint128"},{"internalType":"uint128","name":"paymasterPostOpGasLimit","type":"uint128"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"paymasterIdBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymasterIdWithdrawalDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IPaymaster.PostOpMode","name":"mode","type":"uint8"},{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"uint256","name":"actualGasCost","type":"uint256"},{"internalType":"uint256","name":"actualUserOpFeePerGas","type":"uint256"}],"name":"postOp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"paymasterIds","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"refundBalances","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeCollector","type":"address"}],"name":"setFeeCollector","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinDeposit","type":"uint256"}],"name":"setMinDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newVerifyingSigner","type":"address"}],"name":"setSigner","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"paymasterId","type":"address"},{"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"setTrustedPaymasterId","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setUnaccountedGas","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"submitWithdrawalRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"unaccountedGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple"},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"maxCost","type":"uint256"}],"name":"validatePaymasterUserOp","outputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"uint256","name":"validationData","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"verifyingSigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"}],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"withdrawAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052346100b55760e0611f96803803809161001c826100b9565b60a039126100b55761006c60a05161003381610116565b60c05161003f81610116565b60e05161004b81610116565b6101005161005881610116565b610120519161014051936101605195610127565b604051611c6690816103308239608051818181610528015281816105d90152818161066e015281816106dd0152818161079301528181611161015281816113f7015261187a0152f35b5f80fd5b60a0601f91909101601f19168101906001600160401b038211908210176100df57604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176100df57604052565b6001600160a01b038116036100b557565b95949291959390938060601b15610240576001600160a01b0316638b78c6d8198190555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36040516301ffc9a760e01b815263122a0e9b60e31b6004820152916020836024816001600160a01b0389165afa90811561023557610204976101ff966101c36101f5946101fa975f91610206575b506102e3565b6080526101d184838361024d565b5f55600180546001600160a01b0319166001600160a01b0392909216919091179055565b600255565b600355565b600455565b565b610228915060203d60201161022e575b61022081836100f3565b8101906102cb565b5f6101bd565b503d610216565b6040513d5f823e3d90fd5b637448fbae5f526004601cfd5b6001600160a01b03811661026a576381618de160e01b5f5260045ffd5b3b1561027f5763edc30c2760e01b5f5260045ffd5b6001600160a01b03811661029c57633fd0943d60e11b5f5260045ffd5b3b156102b157631f47525f60e21b5f5260045ffd5b620186a0106102bc57565b63313db2a560e11b5f5260045ffd5b908160209103126100b5575180151581036100b55790565b156102ea57565b60405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d6174636800006044820152606490fdfe60806040526004361015610046575b3615610018575f80fd5b6040513481527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460203392a2005b5f5f3560e01c80630396cb60146113c75780631b9a91a414611302578063205c2878146112d857806323d9ac9b146112b257806325692962146112675780633261fd581461107557806341b3d1851461105757806344004cc114610f5057806352b7512c14610ecb57806354d1f13d14610e8557806359ffb13014610d845780636c19e78314610cfc578063715018a614610cb157806373acf54214610c525780637c627b2114610b005780638c253a3914610a4c5780638da5cb5b14610a215780638fcc9cfb146109db57806394d4ad6014610917578063a40a7ddc146102ef578063a42dce8014610874578063aa67c9191461071f578063ab94cad714610701578063b0d691fe146106bd578063bb9fe6bf1461064a578063c23a5cea146105ac578063c399ec88146104fc578063c415b95c146104d5578063d0e30db0146104ba578063def042571461042a578063e714a028146103d2578063f04e283e14610384578063f0c12a3214610366578063f2fde38b14610327578063f8b2cb4f146102ef578063f8cf826d1461021d5763fee81cf4146101e8575061000e565b3461021a57602036600319011261021a57610201611467565b9063389a75e1600c5252602080600c2054604051908152f35b80fd5b50604036600319011261021a5760043567ffffffffffffffff81116102eb5761024a9036906004016114c1565b9060243567ffffffffffffffff81116102e75761026b9036906004016114c1565b906102746117d3565b8184036102d857845b848110610288578580f35b6102938184846117af565b35906102a08187876117af565b35916001600160a01b0383168093036102d457600192885260056020526102cc60408920918254611560565b90550161027d565b8780fd5b63a9854bc960e01b8552600485fd5b8380fd5b5080fd5b503461021a57602036600319011261021a5760406020916001600160a01b03610316611467565b168152600583522054604051908152f35b50602036600319011261021a5761033c611467565b6103446117d3565b8060601b156103595761035690611c1b565b80f35b637448fbae82526004601cfd5b503461021a578060031936011261021a576020600354604051908152f35b50602036600319011261021a57610399611467565b6103a16117d3565b63389a75e1600c528082526020600c20805442116103c55790826103569255611c1b565b636f5e881883526004601cfd5b503461021a578060031936011261021a5733815260076020525f60026040832082815582600182015501557fe227a0e51918df92c3a9837808b4825847fa7c14cbacd937b650c337e91712416020604051338152a180f35b503461021a5760a036600319011261021a5760043567ffffffffffffffff81116102eb5761012060031982360301126102eb5761046561147d565b6044359065ffffffffffff821682036102e7576064359265ffffffffffff841684036104b6576084359463ffffffff8616860361021a5760206104ae87878787876004016116b3565b604051908152f35b8480fd5b508060031936011261021a5763302076c960e01b8152600490fd5b503461021a578060031936011261021a5760206001600160a01b0360015416604051908152f35b503461021a578060031936011261021a576040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105a157829161056b575b602082604051908152f35b90506020813d602011610599575b8161058660209383611522565b810103126102eb5760209150515f610560565b3d9150610579565b6040513d84823e3d90fd5b503461021a57602036600319011261021a57806105c7611467565b6105cf6117d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b15610646576001600160a01b036024849283604051958694859363611d2e7560e11b85521660048401525af180156105a1576106355750f35b8161063f91611522565b61021a5780f35b5050fd5b503461021a578060031936011261021a576106636117d3565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156106ba5781809160046040518094819363bb9fe6bf60e01b83525af180156105a1576106355750f35b50fd5b503461021a578060031936011261021a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461021a578060031936011261021a576020600254604051908152f35b50602036600319011261021a576001600160a01b0361073c611467565b6107446117ef565b168015610865573415610856578082526005602052610767346040842054611560565b6004541161084757808252600560205260408220610786348254611560565b9055816001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102eb57816024916040519283809263b760faf960e01b825230600483015234905af180156105a157610832575b505034907f1dbbf474736d6415d6a265fabee708fe6e988f6fd0c9d870ded36cab380898dd8380a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b8161083c91611522565b6102eb57815f6107e4565b6305d163b560e11b8252600482fd5b6333a6177160e11b8252600482fd5b63016e7bd760e61b8252600482fd5b50602036600319011261021a57610889611467565b6108916117d3565b803b610908576001600160a01b031680156108f957600154908073ffffffffffffffffffffffffffffffffffffffff198316176001556001600160a01b033392167fc6bc29e495f43077b898bfa29b8be68f4c836ccf780f9f7782f916dfd3874f158480a480f35b633fd0943d60e11b8252600482fd5b631f47525f60e21b8252600482fd5b503461021a57602036600319011261021a5760043567ffffffffffffffff81116102eb57610949903690600401611493565b610952916115c4565b959794938694604094929451996001600160a01b038b9a168a5265ffffffffffff1660208a015265ffffffffffff16604089015263ffffffff1660608801526001600160801b031660808701526001600160801b031660a086015260c0850160e090528160e08601526101008501378183016101000152601f1990601f01168101036101000190f35b50602036600319011261021a576004356109f36117d3565b806004547fcacd94bd1e7bb1185c816a740d9439bc8eff8159f6f4ffad8d306b5aca2ebd928480a360045580f35b503461021a578060031936011261021a576020638b78c6d819546001600160a01b0360405191168152f35b50604036600319011261021a57610a61611467565b60243590811515809203610afc576001600160a01b0390610a806117d3565b16908115610aed5781835260066020528060ff604085205416151503610aa4578280f35b60207fd20b41feac4c77c85eaf676a2d91056dc1b6ba4cc02253745a3152ca4f23d87991838552600682526040852060ff1981541660ff8316179055604051908152a25f808280f35b63016e7bd760e61b8352600483fd5b8280fd5b503461021a57608036600319011261021a576003600435101561021a5760243567ffffffffffffffff81116102eb57610b3f6060913690600401611493565b90809291610b4b611870565b810103126102eb578035906001600160a01b038216809203610afc5760208101359063ffffffff82168092036102e7576040013591610bb2620f4240610baa610ba3610b9b6064356002546118e7565b604435611560565b94856118e7565b049283611581565b926001600160a01b03600154168552600560205260408520610bd5858254611560565b90558280821115610c2a57610be991611581565b8185526005602052610c0060408620918254611560565b90555b7f683b3fc4c8726e960b5b0aa3838c1071e2a9b7045fcd4dfc953fc1092923f5378480a480f35b90610c3491611581565b8185526005602052610c4b60408620918254611581565b9055610c03565b50602036600319011261021a57600435610c6a6117d3565b620186a08111610ca257600254816002557f33ddf610723ec48e858790576fb3294cc312fcbd937c1475d53e3673145488eb8380a380f35b63313db2a560e11b8252600482fd5b508060031936011261021a57610cc56117d3565b80638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380638b78c6d8195580f35b50602036600319011261021a57610d11611467565b610d196117d3565b803b610d75576001600160a01b0381168015610d66576001600160a01b0383541691835533917fe1f62c0e6d7bb6d470828565415bf2e87dbfea50e52d2d753788b529bd0c6d628480a480f35b6381618de160e01b8352600483fd5b63edc30c2760e01b8252600482fd5b503461021a57604036600319011261021a57610d9e611467565b6001600160a01b03166024358115610e76578015610e6757338352600560205260408320548111610e58577fe1a007fa1edbdbd989490b46b37c8a7342e8f2f1162a20078a80a9528ab0a149916040918251610df9816114f2565b818152600260208201848152858301904282523389526007602052868920935184556001600160a01b036001850191511673ffffffffffffffffffffffffffffffffffffffff198254161790555191015582519182526020820152a180f35b6345f34ee560e01b8352600483fd5b6339d3420560e11b8352600483fd5b6392bc9df360e01b8352600483fd5b508060031936011261021a5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b503461021a57606036600319011261021a5760043567ffffffffffffffff81116102eb5761012060031982360301126102eb576020610f1a606092610f0e611870565b604435906004016118fa565b604092919251948593604085528051938491826040880152018686015e8383018501526020830152601f01601f19168101030190f35b503461021a57606036600319011261021a576004356001600160a01b0381168091036102eb57610f7e61147d565b60443591610f8a6117d3565b610f926117ef565b6001600160a01b03821691821561104857601452826034526fa9059cbb00000000000000000000000084526020846044601082855af1806001865114161561102a575b50836034527f4e5ba90310f16273bb12f3c33f23905e573b86df58a2895a525285d083bf043f6020604051338152a4807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b3d823b1517101561103b575f610fd5565b6390b8ec1884526004601cfd5b6392bc9df360e01b8552600485fd5b503461021a578060031936011261021a576020600454604051908152f35b503461021a57602036600319011261021a5761108f611467565b6110976117ef565b6001600160a01b03811690818352600760205260408320604051916110bb836114f2565b8154835260026001600160a01b036001840154169260208501938452015460408401908082521561125857516110fa916110f49061184a565b90611560565b8042106112465750828452600560205260408420548251818111156112415750805b8084521561123257825161112f91611581565b8385526005602052604085205582845260076020525f6002604086208281558260018201550155836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b038351168451823b156102e7576044849283604051958694859363040b850f60e31b8552600485015260248401525af180156105a15761121d575b50506001600160a01b039051169051917f926a144b6fffc1d73f115b81af7ec66a7c12aed0ff73197c39a683753fc1d9258480a4807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b8161122791611522565b6102e757835f6111c3565b6339d3420560e11b8552600485fd5b61111c565b63fb817d3d60e01b8552600452602484fd5b6336fbdb4f60e01b8652600486fd5b508060031936011261021a5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b503461021a578060031936011261021a576001600160a01b036020915416604051908152f35b503461021a57604036600319011261021a576004906112f5611467565b5063ad42eb9960e01b8152fd5b50604036600319011261021a57611317611467565b6001600160a01b036024359161132b6117d3565b6113336117ef565b168280808085855af13d156113c2573d61134c81611544565b9061135a6040519283611522565b81528460203d92013e5b156113b3577f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b8380a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b6327fcd9d160e01b8352600483fd5b611364565b5060203660031901126114635760043563ffffffff8116809103611463576113ed6117d3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b15611463575f90602460405180948193621cb65b60e51b8352600483015234905af180156114585761144a575080f35b61145691505f90611522565b005b6040513d5f823e3d90fd5b5f80fd5b600435906001600160a01b038216820361146357565b602435906001600160a01b038216820361146357565b9181601f840112156114635782359167ffffffffffffffff8311611463576020838186019501011161146357565b9181601f840112156114635782359167ffffffffffffffff8311611463576020808501948460051b01011161146357565b6060810190811067ffffffffffffffff82111761150e57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761150e57604052565b67ffffffffffffffff811161150e57601f01601f191660200190565b9190820180921161156d57565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161156d57565b919091356001600160d01b0319811692600681106115aa575050565b6001600160d01b0319929350829060060360031b1b161690565b9190918260481161146357603481013560601c9280604e11611463576115ee60066048840161158e565b60d01c9281605411611463576116086006604e850161158e565b60d01c928260581161146357605481013560e01c926024811061146357601482013560801c926034821061146357602483013560801c92605801916057190190565b903590601e1981360301821215611463570180359067ffffffffffffffff82116114635760200191813603831361146357565b92919261168982611544565b916116976040519384611522565b829481845281830111611463578281602093845f960137010152565b929093916116ce6116c7604086018661164a565b369161167d565b60208151910120946116e66116c7606087018761164a565b60208151910120946116fb60e082018261164a565b6034116114635760405196602088019883356001600160a01b03168a52602084013560408a015260608901526080880152608082013560a08801526014013560c087015260a081013560e087015260c0013561010086015246610120860152306101408601526001600160a01b031661016085015265ffffffffffff1661018084015265ffffffffffff166101a083015263ffffffff166101c08201526101c081526117a96101e082611522565b51902090565b91908110156117bf5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b638b78c6d8195433036117e257565b6382b429005f526004601cfd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61183b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b03165f52600660205260ff60405f20541661186c5760035490565b5f90565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633036118a257565b60405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606490fd5b8181029291811591840414171561156d57565b919060609260e0810190611917611911838361164a565b906115c4565b60409198969a95979c9350809250141580611c10575b611c01576002549661193f898761164a565b603411611463576024013560801c8811611bf2576119949061196585898f8e908b6116b3565b6020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042092369161167d565b915f92604051926020820191805180604014611bb457604114611b7e5750505050505b6001600160a01b03805f54169116145f14611b785760015b15611b385763ffffffff1694621e848086118015611b2c575b611b1d576119f6908361164a565b6034116114635760246001600160801b0391013560801c166001600160801b03608084013516016001600160801b03811161156d576001600160801b03600a911602916001600160801b03831692830361156d57611a7b611a80926110f4620f4240956064611a746001600160801b0360c08d9801351680936118e7565b04986118e7565b6118e7565b046001600160a01b03611a938483611560565b971696875f52600560205260405f205410611b0e5765ffffffffffff60a01b93611ac66001600160d01b03199483611560565b885f526005602052611add60405f20918254611581565b90556040519760208901526040880152606087015260608652611b01608087611522565b60d01b169160a01b161790565b632771c53960e01b5f5260045ffd5b630a02dbf760e21b5f5260045ffd5b50620f424086106119e8565b505050600194955065ffffffffffff60a01b92506001600160d01b0319915060d01b169160a01b16171790604051611b71602082611522565b5f81529190565b5f6119cf565b808401515f1a60205260400151835292935090915b5f52516040526020604060805f60015afa505f81523d1851906040526119b7565b507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91929394955060400151601b8160ff1c01602052168352611b93565b630359a00f60e01b5f5260045ffd5b634be6321b60e01b5f5260045ffd5b50604181141561192d565b6001600160a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d8195556fea164736f6c634300081b000a000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc70000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032000000000000000000000000c6dab8652e5e9749523ba948f42d5944584e4e73000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc7000000000000000000000000000000000000000000000000000000000000c3500000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000de0b6b3a7640000
Deployed Bytecode
0x60806040526004361015610046575b3615610018575f80fd5b6040513481527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460203392a2005b5f5f3560e01c80630396cb60146113c75780631b9a91a414611302578063205c2878146112d857806323d9ac9b146112b257806325692962146112675780633261fd581461107557806341b3d1851461105757806344004cc114610f5057806352b7512c14610ecb57806354d1f13d14610e8557806359ffb13014610d845780636c19e78314610cfc578063715018a614610cb157806373acf54214610c525780637c627b2114610b005780638c253a3914610a4c5780638da5cb5b14610a215780638fcc9cfb146109db57806394d4ad6014610917578063a40a7ddc146102ef578063a42dce8014610874578063aa67c9191461071f578063ab94cad714610701578063b0d691fe146106bd578063bb9fe6bf1461064a578063c23a5cea146105ac578063c399ec88146104fc578063c415b95c146104d5578063d0e30db0146104ba578063def042571461042a578063e714a028146103d2578063f04e283e14610384578063f0c12a3214610366578063f2fde38b14610327578063f8b2cb4f146102ef578063f8cf826d1461021d5763fee81cf4146101e8575061000e565b3461021a57602036600319011261021a57610201611467565b9063389a75e1600c5252602080600c2054604051908152f35b80fd5b50604036600319011261021a5760043567ffffffffffffffff81116102eb5761024a9036906004016114c1565b9060243567ffffffffffffffff81116102e75761026b9036906004016114c1565b906102746117d3565b8184036102d857845b848110610288578580f35b6102938184846117af565b35906102a08187876117af565b35916001600160a01b0383168093036102d457600192885260056020526102cc60408920918254611560565b90550161027d565b8780fd5b63a9854bc960e01b8552600485fd5b8380fd5b5080fd5b503461021a57602036600319011261021a5760406020916001600160a01b03610316611467565b168152600583522054604051908152f35b50602036600319011261021a5761033c611467565b6103446117d3565b8060601b156103595761035690611c1b565b80f35b637448fbae82526004601cfd5b503461021a578060031936011261021a576020600354604051908152f35b50602036600319011261021a57610399611467565b6103a16117d3565b63389a75e1600c528082526020600c20805442116103c55790826103569255611c1b565b636f5e881883526004601cfd5b503461021a578060031936011261021a5733815260076020525f60026040832082815582600182015501557fe227a0e51918df92c3a9837808b4825847fa7c14cbacd937b650c337e91712416020604051338152a180f35b503461021a5760a036600319011261021a5760043567ffffffffffffffff81116102eb5761012060031982360301126102eb5761046561147d565b6044359065ffffffffffff821682036102e7576064359265ffffffffffff841684036104b6576084359463ffffffff8616860361021a5760206104ae87878787876004016116b3565b604051908152f35b8480fd5b508060031936011261021a5763302076c960e01b8152600490fd5b503461021a578060031936011261021a5760206001600160a01b0360015416604051908152f35b503461021a578060031936011261021a576040516370a0823160e01b81523060048201526020816024817f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da0326001600160a01b03165afa9081156105a157829161056b575b602082604051908152f35b90506020813d602011610599575b8161058660209383611522565b810103126102eb5760209150515f610560565b3d9150610579565b6040513d84823e3d90fd5b503461021a57602036600319011261021a57806105c7611467565b6105cf6117d3565b6001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da0321690813b15610646576001600160a01b036024849283604051958694859363611d2e7560e11b85521660048401525af180156105a1576106355750f35b8161063f91611522565b61021a5780f35b5050fd5b503461021a578060031936011261021a576106636117d3565b806001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da03216803b156106ba5781809160046040518094819363bb9fe6bf60e01b83525af180156105a1576106355750f35b50fd5b503461021a578060031936011261021a5760206040516001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032168152f35b503461021a578060031936011261021a576020600254604051908152f35b50602036600319011261021a576001600160a01b0361073c611467565b6107446117ef565b168015610865573415610856578082526005602052610767346040842054611560565b6004541161084757808252600560205260408220610786348254611560565b9055816001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da03216803b156102eb57816024916040519283809263b760faf960e01b825230600483015234905af180156105a157610832575b505034907f1dbbf474736d6415d6a265fabee708fe6e988f6fd0c9d870ded36cab380898dd8380a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b8161083c91611522565b6102eb57815f6107e4565b6305d163b560e11b8252600482fd5b6333a6177160e11b8252600482fd5b63016e7bd760e61b8252600482fd5b50602036600319011261021a57610889611467565b6108916117d3565b803b610908576001600160a01b031680156108f957600154908073ffffffffffffffffffffffffffffffffffffffff198316176001556001600160a01b033392167fc6bc29e495f43077b898bfa29b8be68f4c836ccf780f9f7782f916dfd3874f158480a480f35b633fd0943d60e11b8252600482fd5b631f47525f60e21b8252600482fd5b503461021a57602036600319011261021a5760043567ffffffffffffffff81116102eb57610949903690600401611493565b610952916115c4565b959794938694604094929451996001600160a01b038b9a168a5265ffffffffffff1660208a015265ffffffffffff16604089015263ffffffff1660608801526001600160801b031660808701526001600160801b031660a086015260c0850160e090528160e08601526101008501378183016101000152601f1990601f01168101036101000190f35b50602036600319011261021a576004356109f36117d3565b806004547fcacd94bd1e7bb1185c816a740d9439bc8eff8159f6f4ffad8d306b5aca2ebd928480a360045580f35b503461021a578060031936011261021a576020638b78c6d819546001600160a01b0360405191168152f35b50604036600319011261021a57610a61611467565b60243590811515809203610afc576001600160a01b0390610a806117d3565b16908115610aed5781835260066020528060ff604085205416151503610aa4578280f35b60207fd20b41feac4c77c85eaf676a2d91056dc1b6ba4cc02253745a3152ca4f23d87991838552600682526040852060ff1981541660ff8316179055604051908152a25f808280f35b63016e7bd760e61b8352600483fd5b8280fd5b503461021a57608036600319011261021a576003600435101561021a5760243567ffffffffffffffff81116102eb57610b3f6060913690600401611493565b90809291610b4b611870565b810103126102eb578035906001600160a01b038216809203610afc5760208101359063ffffffff82168092036102e7576040013591610bb2620f4240610baa610ba3610b9b6064356002546118e7565b604435611560565b94856118e7565b049283611581565b926001600160a01b03600154168552600560205260408520610bd5858254611560565b90558280821115610c2a57610be991611581565b8185526005602052610c0060408620918254611560565b90555b7f683b3fc4c8726e960b5b0aa3838c1071e2a9b7045fcd4dfc953fc1092923f5378480a480f35b90610c3491611581565b8185526005602052610c4b60408620918254611581565b9055610c03565b50602036600319011261021a57600435610c6a6117d3565b620186a08111610ca257600254816002557f33ddf610723ec48e858790576fb3294cc312fcbd937c1475d53e3673145488eb8380a380f35b63313db2a560e11b8252600482fd5b508060031936011261021a57610cc56117d3565b80638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380638b78c6d8195580f35b50602036600319011261021a57610d11611467565b610d196117d3565b803b610d75576001600160a01b0381168015610d66576001600160a01b0383541691835533917fe1f62c0e6d7bb6d470828565415bf2e87dbfea50e52d2d753788b529bd0c6d628480a480f35b6381618de160e01b8352600483fd5b63edc30c2760e01b8252600482fd5b503461021a57604036600319011261021a57610d9e611467565b6001600160a01b03166024358115610e76578015610e6757338352600560205260408320548111610e58577fe1a007fa1edbdbd989490b46b37c8a7342e8f2f1162a20078a80a9528ab0a149916040918251610df9816114f2565b818152600260208201848152858301904282523389526007602052868920935184556001600160a01b036001850191511673ffffffffffffffffffffffffffffffffffffffff198254161790555191015582519182526020820152a180f35b6345f34ee560e01b8352600483fd5b6339d3420560e11b8352600483fd5b6392bc9df360e01b8352600483fd5b508060031936011261021a5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b503461021a57606036600319011261021a5760043567ffffffffffffffff81116102eb5761012060031982360301126102eb576020610f1a606092610f0e611870565b604435906004016118fa565b604092919251948593604085528051938491826040880152018686015e8383018501526020830152601f01601f19168101030190f35b503461021a57606036600319011261021a576004356001600160a01b0381168091036102eb57610f7e61147d565b60443591610f8a6117d3565b610f926117ef565b6001600160a01b03821691821561104857601452826034526fa9059cbb00000000000000000000000084526020846044601082855af1806001865114161561102a575b50836034527f4e5ba90310f16273bb12f3c33f23905e573b86df58a2895a525285d083bf043f6020604051338152a4807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b3d823b1517101561103b575f610fd5565b6390b8ec1884526004601cfd5b6392bc9df360e01b8552600485fd5b503461021a578060031936011261021a576020600454604051908152f35b503461021a57602036600319011261021a5761108f611467565b6110976117ef565b6001600160a01b03811690818352600760205260408320604051916110bb836114f2565b8154835260026001600160a01b036001840154169260208501938452015460408401908082521561125857516110fa916110f49061184a565b90611560565b8042106112465750828452600560205260408420548251818111156112415750805b8084521561123257825161112f91611581565b8385526005602052604085205582845260076020525f6002604086208281558260018201550155836001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032166001600160a01b038351168451823b156102e7576044849283604051958694859363040b850f60e31b8552600485015260248401525af180156105a15761121d575b50506001600160a01b039051169051917f926a144b6fffc1d73f115b81af7ec66a7c12aed0ff73197c39a683753fc1d9258480a4807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b8161122791611522565b6102e757835f6111c3565b6339d3420560e11b8552600485fd5b61111c565b63fb817d3d60e01b8552600452602484fd5b6336fbdb4f60e01b8652600486fd5b508060031936011261021a5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b503461021a578060031936011261021a576001600160a01b036020915416604051908152f35b503461021a57604036600319011261021a576004906112f5611467565b5063ad42eb9960e01b8152fd5b50604036600319011261021a57611317611467565b6001600160a01b036024359161132b6117d3565b6113336117ef565b168280808085855af13d156113c2573d61134c81611544565b9061135a6040519283611522565b81528460203d92013e5b156113b3577f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b8380a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b6327fcd9d160e01b8352600483fd5b611364565b5060203660031901126114635760043563ffffffff8116809103611463576113ed6117d3565b6001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da0321690813b15611463575f90602460405180948193621cb65b60e51b8352600483015234905af180156114585761144a575080f35b61145691505f90611522565b005b6040513d5f823e3d90fd5b5f80fd5b600435906001600160a01b038216820361146357565b602435906001600160a01b038216820361146357565b9181601f840112156114635782359167ffffffffffffffff8311611463576020838186019501011161146357565b9181601f840112156114635782359167ffffffffffffffff8311611463576020808501948460051b01011161146357565b6060810190811067ffffffffffffffff82111761150e57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff82111761150e57604052565b67ffffffffffffffff811161150e57601f01601f191660200190565b9190820180921161156d57565b634e487b7160e01b5f52601160045260245ffd5b9190820391821161156d57565b919091356001600160d01b0319811692600681106115aa575050565b6001600160d01b0319929350829060060360031b1b161690565b9190918260481161146357603481013560601c9280604e11611463576115ee60066048840161158e565b60d01c9281605411611463576116086006604e850161158e565b60d01c928260581161146357605481013560e01c926024811061146357601482013560801c926034821061146357602483013560801c92605801916057190190565b903590601e1981360301821215611463570180359067ffffffffffffffff82116114635760200191813603831361146357565b92919261168982611544565b916116976040519384611522565b829481845281830111611463578281602093845f960137010152565b929093916116ce6116c7604086018661164a565b369161167d565b60208151910120946116e66116c7606087018761164a565b60208151910120946116fb60e082018261164a565b6034116114635760405196602088019883356001600160a01b03168a52602084013560408a015260608901526080880152608082013560a08801526014013560c087015260a081013560e087015260c0013561010086015246610120860152306101408601526001600160a01b031661016085015265ffffffffffff1661018084015265ffffffffffff166101a083015263ffffffff166101c08201526101c081526117a96101e082611522565b51902090565b91908110156117bf5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b638b78c6d8195433036117e257565b6382b429005f526004601cfd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61183b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b633ee5aeb560e01b5f5260045ffd5b6001600160a01b03165f52600660205260ff60405f20541661186c5760035490565b5f90565b6001600160a01b037f0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da0321633036118a257565b60405162461bcd60e51b815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606490fd5b8181029291811591840414171561156d57565b919060609260e0810190611917611911838361164a565b906115c4565b60409198969a95979c9350809250141580611c10575b611c01576002549661193f898761164a565b603411611463576024013560801c8811611bf2576119949061196585898f8e908b6116b3565b6020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042092369161167d565b915f92604051926020820191805180604014611bb457604114611b7e5750505050505b6001600160a01b03805f54169116145f14611b785760015b15611b385763ffffffff1694621e848086118015611b2c575b611b1d576119f6908361164a565b6034116114635760246001600160801b0391013560801c166001600160801b03608084013516016001600160801b03811161156d576001600160801b03600a911602916001600160801b03831692830361156d57611a7b611a80926110f4620f4240956064611a746001600160801b0360c08d9801351680936118e7565b04986118e7565b6118e7565b046001600160a01b03611a938483611560565b971696875f52600560205260405f205410611b0e5765ffffffffffff60a01b93611ac66001600160d01b03199483611560565b885f526005602052611add60405f20918254611581565b90556040519760208901526040880152606087015260608652611b01608087611522565b60d01b169160a01b161790565b632771c53960e01b5f5260045ffd5b630a02dbf760e21b5f5260045ffd5b50620f424086106119e8565b505050600194955065ffffffffffff60a01b92506001600160d01b0319915060d01b169160a01b16171790604051611b71602082611522565b5f81529190565b5f6119cf565b808401515f1a60205260400151835292935090915b5f52516040526020604060805f60015afa505f81523d1851906040526119b7565b507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91929394955060400151601b8160ff1c01602052168352611b93565b630359a00f60e01b5f5260045ffd5b634be6321b60e01b5f5260045ffd5b50604181141561192d565b6001600160a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d8195556fea164736f6c634300081b000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc70000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032000000000000000000000000c6dab8652e5e9749523ba948f42d5944584e4e73000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc7000000000000000000000000000000000000000000000000000000000000c3500000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000de0b6b3a7640000
-----Decoded View---------------
Arg [0] : owner (address): 0x129443cA2a9Dec2020808a2868b38dDA457eaCC7
Arg [1] : entryPointArg (address): 0x0000000071727De22E5E9d8BAf0edAc6f37da032
Arg [2] : verifyingSignerArg (address): 0xC6dAB8652E5E9749523bA948F42d5944584E4e73
Arg [3] : feeCollectorArg (address): 0x129443cA2a9Dec2020808a2868b38dDA457eaCC7
Arg [4] : unaccountedGasArg (uint256): 50000
Arg [5] : paymasterIdWithdrawalDelayArg (uint256): 3600
Arg [6] : minDepositArg (uint256): 1000000000000000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc7
Arg [1] : 0000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032
Arg [2] : 000000000000000000000000c6dab8652e5e9749523ba948f42d5944584e4e73
Arg [3] : 000000000000000000000000129443ca2a9dec2020808a2868b38dda457eacc7
Arg [4] : 000000000000000000000000000000000000000000000000000000000000c350
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [6] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.