More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
Contract Name:
BoringOnChainQueue
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;import {ERC20} from "@solmate/tokens/ERC20.sol";import {WETH} from "@solmate/tokens/WETH.sol";import {BoringVault} from "src/base/BoringVault.sol";import {AccountantWithRateProviders} from "src/base/Roles/AccountantWithRateProviders.sol";import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol";import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol";import {BeforeTransferHook} from "src/interfaces/BeforeTransferHook.sol";import {Auth, Authority} from "@solmate/auth/Auth.sol";import {ReentrancyGuard} from "@solmate/utils/ReentrancyGuard.sol";import {IPausable} from "src/interfaces/IPausable.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import {IBoringSolver} from "src/base/Roles/BoringQueue/IBoringSolver.sol";contract BoringOnChainQueue is Auth, ReentrancyGuard, IPausable {using EnumerableSet for EnumerableSet.Bytes32Set;using SafeTransferLib for BoringVault;using SafeTransferLib for ERC20;using FixedPointMathLib for uint256;// ========================================= STRUCTS =========================================/*** @param allowWithdraws Whether or not withdraws are allowed for this asset.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.abstract contract ERC20 {/*//////////////////////////////////////////////////////////////EVENTS//////////////////////////////////////////////////////////////*/event Transfer(address indexed from, address indexed to, uint256 amount);event Approval(address indexed owner, address indexed spender, uint256 amount);/*//////////////////////////////////////////////////////////////METADATA STORAGE//////////////////////////////////////////////////////////////*/string public name;string public symbol;uint8 public immutable decimals;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;import {ERC20} from "./ERC20.sol";import {SafeTransferLib} from "../utils/SafeTransferLib.sol";/// @notice Minimalist and modern Wrapped Ether implementation./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/WETH.sol)/// @author Inspired by WETH9 (https://github.com/dapphub/ds-weth/blob/master/src/weth9.sol)contract WETH is ERC20("Wrapped Ether", "WETH", 18) {using SafeTransferLib for address;event Deposit(address indexed from, uint256 amount);event Withdrawal(address indexed to, uint256 amount);function deposit() public payable virtual {_mint(msg.sender, msg.value);emit Deposit(msg.sender, msg.value);}function withdraw(uint256 amount) public virtual {_burn(msg.sender, amount);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;import {Address} from "@openzeppelin/contracts/utils/Address.sol";import {ERC721Holder} from "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol";import {ERC1155Holder} from "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol";import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol";import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol";import {ERC20} from "@solmate/tokens/ERC20.sol";import {BeforeTransferHook} from "src/interfaces/BeforeTransferHook.sol";import {Auth, Authority} from "@solmate/auth/Auth.sol";contract BoringVault is ERC20, Auth, ERC721Holder, ERC1155Holder {using Address for address;using SafeTransferLib for ERC20;using FixedPointMathLib for uint256;// ========================================= STATE =========================================/*** @notice Contract responsbile for implementing `beforeTransfer`.*/BeforeTransferHook public hook;//============================== EVENTS ===============================
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol";import {IRateProvider} from "src/interfaces/IRateProvider.sol";import {ERC20} from "@solmate/tokens/ERC20.sol";import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol";import {BoringVault} from "src/base/BoringVault.sol";import {Auth, Authority} from "@solmate/auth/Auth.sol";import {IPausable} from "src/interfaces/IPausable.sol";contract AccountantWithRateProviders is Auth, IRateProvider, IPausable {using FixedPointMathLib for uint256;using SafeTransferLib for ERC20;// ========================================= STRUCTS =========================================/*** @param payoutAddress the address `claimFees` sends fees to* @param highwaterMark the highest value of the BoringVault's share price* @param feesOwedInBase total pending fees owed in terms of base* @param totalSharesLastUpdate total amount of shares the last exchange rate update* @param exchangeRate the current exchange rate in terms of base* @param allowedExchangeRateChangeUpper the max allowed change to exchange rate from an update* @param allowedExchangeRateChangeLower the min allowed change to exchange rate from an update* @param lastUpdateTimestamp the block timestamp of the last exchange rate update
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Arithmetic library with operations for fixed-point numbers./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol)/// @author Inspired by USM (https://github.com/usmfum/USM/blob/master/contracts/WadMath.sol)library FixedPointMathLib {/*//////////////////////////////////////////////////////////////SIMPLIFIED FIXED POINT OPERATIONS//////////////////////////////////////////////////////////////*/uint256 internal constant MAX_UINT256 = 2**256 - 1;uint256 internal constant WAD = 1e18; // The scalar of ETH and most ERC20s.function mulWadDown(uint256 x, uint256 y) internal pure returns (uint256) {return mulDivDown(x, y, WAD); // Equivalent to (x * y) / WAD rounded down.}function mulWadUp(uint256 x, uint256 y) internal pure returns (uint256) {return mulDivUp(x, y, WAD); // Equivalent to (x * y) / WAD rounded up.}function divWadDown(uint256 x, uint256 y) internal pure returns (uint256) {return mulDivDown(x, WAD, y); // Equivalent to (x * WAD) / y rounded down.}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;import {ERC20} from "../tokens/ERC20.sol";/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer./// @dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller.library SafeTransferLib {/*//////////////////////////////////////////////////////////////ETH OPERATIONS//////////////////////////////////////////////////////////////*/function safeTransferETH(address to, uint256 amount) internal {bool success;/// @solidity memory-safe-assemblyassembly {// Transfer the ETH and store if it succeeded or not.success := call(gas(), to, amount, 0, 0, 0, 0)}require(success, "ETH_TRANSFER_FAILED");}
123456// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;interface BeforeTransferHook {function beforeTransfer(address from, address to, address operator) external view;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: AGPL-3.0-onlypragma solidity >=0.8.0;/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic./// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)abstract contract Auth {event OwnershipTransferred(address indexed user, address indexed newOwner);event AuthorityUpdated(address indexed user, Authority indexed newAuthority);address public owner;Authority public authority;constructor(address _owner, Authority _authority) {owner = _owner;authority = _authority;emit OwnershipTransferred(msg.sender, _owner);emit AuthorityUpdated(msg.sender, _authority);}modifier requiresAuth() virtual {require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");
12345678910111213141516171819// SPDX-License-Identifier: AGPL-3.0-onlypragma 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;}}
1234567// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;interface IPausable {function pause() external;function unpause() external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/structs/EnumerableSet.sol)// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.pragma solidity ^0.8.20;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```solidity* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```
12345678910111213// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.8.21;interface IBoringSolver {function boringSolve(address initiator,address boringVault,address solveAsset,uint256 totalShares,uint256 requiredAssets,bytes calldata solveData) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)pragma solidity ^0.8.20;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error AddressInsufficientBalance(address account);/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedInnerCall();/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/utils/ERC721Holder.sol)pragma solidity ^0.8.20;import {IERC721Receiver} from "../IERC721Receiver.sol";/*** @dev Implementation of the {IERC721Receiver} interface.** Accepts all token transfers.* Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or* {IERC721-setApprovalForAll}.*/abstract contract ERC721Holder is IERC721Receiver {/*** @dev See {IERC721Receiver-onERC721Received}.** Always returns `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) {return this.onERC721Received.selector;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC1155/utils/ERC1155Holder.sol)pragma solidity ^0.8.20;import {IERC165, ERC165} from "../../../utils/introspection/ERC165.sol";import {IERC1155Receiver} from "../IERC1155Receiver.sol";/*** @dev Simple implementation of `IERC1155Receiver` that will allow a contract to hold ERC1155 tokens.** IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be* stuck.*/abstract contract ERC1155Holder is ERC165, IERC1155Receiver {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId);}function onERC1155Received(address,address,uint256,
12345678910111213141516171819// SPDX-License-Identifier: UNLICENSED// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.0;interface IRateProvider {function getRate() external view returns (uint256);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721Receiver.sol)pragma solidity ^0.8.20;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be* reverted.** The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check* for the additional interface id that will be supported. For example:** ```solidity* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);* }* ```*/abstract contract ERC165 is IERC165 {/*** @dev See {IERC165-supportsInterface}.*/function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {return interfaceId == type(IERC165).interfaceId;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC1155/IERC1155Receiver.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @dev Interface that must be implemented by smart contracts in order to receive* ERC-1155 token transfers.*/interface IERC1155Receiver is IERC165 {/*** @dev Handles the receipt of a single ERC1155 token type. This function is* called at the end of a `safeTransferFrom` after the balance has been updated.** NOTE: To accept the transfer, this must return* `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`* (i.e. 0xf23a6e61, or its own function selector).** @param operator The address which initiated the transfer (i.e. msg.sender)* @param from The address which previously owned the token* @param id The ID of the token being transferred* @param value The amount of tokens being transferred* @param data Additional data with no specified format* @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @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);}
1234567891011121314151617181920212223242526{"remappings": ["@solmate/=lib/solmate/src/","@forge-std/=lib/forge-std/src/","@ds-test/=lib/forge-std/lib/ds-test/src/","ds-test/=lib/forge-std/lib/ds-test/src/","@openzeppelin/=lib/openzeppelin-contracts/","@ccip/=lib/ccip/","@oapp-auth/=lib/OAppAuth/src/","@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/","@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/","@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/","@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/","@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/","LayerZero-V2/=lib/OAppAuth/lib/","OAppAuth/=lib/OAppAuth/","ccip/=lib/ccip/contracts/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/","solmate/=lib/solmate/src/"],
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_auth","type":"address"},{"internalType":"address payable","name":"_boringVault","type":"address"},{"internalType":"address","name":"_accountant","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BoringOnChainQueue__BadDeadline","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__BadDiscount","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__BadInput","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__BadShareAmount","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__BadUser","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__DeadlinePassed","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__Keccak256Collision","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__MAXIMUM_MINIMUM_SECONDS_TO_DEADLINE","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__MAXIMUM_SECONDS_TO_MATURITY","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__MAX_DISCOUNT","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__NotMatured","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__Overflow","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__Paused","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__PermitFailedAndAllowanceTooLow","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__RequestNotFound","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__RescueCannotTakeSharesFromActiveRequests","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__SolveAssetMismatch","type":"error"},{"inputs":[],"name":"BoringOnChainQueue__WithdrawsNotAllowedForAsset","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"requestId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OnChainWithdrawCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"requestId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"assetOut","type":"address"},{"indexed":false,"internalType":"uint96","name":"nonce","type":"uint96"},{"indexed":false,"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"indexed":false,"internalType":"uint40","name":"creationTime","type":"uint40"},{"indexed":false,"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"name":"OnChainWithdrawRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"requestId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OnChainWithdrawSolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"assetOut","type":"address"},{"indexed":false,"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"minimumSecondsToDeadline","type":"uint24"},{"indexed":false,"internalType":"uint16","name":"minDiscount","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"maxDiscount","type":"uint16"},{"indexed":false,"internalType":"uint96","name":"minimumShares","type":"uint96"}],"name":"WithdrawAssetSetup","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"assetOut","type":"address"}],"name":"WithdrawAssetStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"assetOut","type":"address"},{"indexed":false,"internalType":"uint24","name":"minimumSecondsToDeadline","type":"uint24"},{"indexed":false,"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"indexed":false,"internalType":"uint16","name":"minDiscount","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"maxDiscount","type":"uint16"},{"indexed":false,"internalType":"uint96","name":"minimumShares","type":"uint96"}],"name":"WithdrawAssetUpdated","type":"event"},{"inputs":[],"name":"ONE_SHARE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accountant","outputs":[{"internalType":"contract AccountantWithRateProviders","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boringVault","outputs":[{"internalType":"contract BoringVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw","name":"request","type":"tuple"}],"name":"cancelOnChainWithdraw","outputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw[]","name":"requests","type":"tuple[]"}],"name":"cancelUserWithdraws","outputs":[{"internalType":"bytes32[]","name":"canceledRequestIds","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw","name":"request","type":"tuple"}],"name":"getRequestId","outputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRequestIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint16","name":"discount","type":"uint16"}],"name":"previewAssetsOut","outputs":[{"internalType":"uint128","name":"amountOfAssets128","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw","name":"oldRequest","type":"tuple"},{"internalType":"uint16","name":"discount","type":"uint16"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"name":"replaceOnChainWithdraw","outputs":[{"internalType":"bytes32","name":"oldRequestId","type":"bytes32"},{"internalType":"bytes32","name":"newRequestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint16","name":"discount","type":"uint16"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"name":"requestOnChainWithdraw","outputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint16","name":"discount","type":"uint16"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"},{"internalType":"uint256","name":"permitDeadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"requestOnChainWithdrawWithPermit","outputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw[]","name":"activeRequests","type":"tuple[]"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint96","name":"nonce","type":"uint96"},{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint128","name":"amountOfShares","type":"uint128"},{"internalType":"uint128","name":"amountOfAssets","type":"uint128"},{"internalType":"uint40","name":"creationTime","type":"uint40"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"secondsToDeadline","type":"uint24"}],"internalType":"struct BoringOnChainQueue.OnChainWithdraw[]","name":"requests","type":"tuple[]"},{"internalType":"bytes","name":"solveData","type":"bytes"},{"internalType":"address","name":"solver","type":"address"}],"name":"solveOnChainWithdraws","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetOut","type":"address"}],"name":"stopWithdrawsInAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetOut","type":"address"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"minimumSecondsToDeadline","type":"uint24"},{"internalType":"uint16","name":"minDiscount","type":"uint16"},{"internalType":"uint16","name":"maxDiscount","type":"uint16"},{"internalType":"uint96","name":"minimumShares","type":"uint96"}],"name":"updateWithdrawAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawAssets","outputs":[{"internalType":"bool","name":"allowWithdraws","type":"bool"},{"internalType":"uint24","name":"secondsToMaturity","type":"uint24"},{"internalType":"uint24","name":"minimumSecondsToDeadline","type":"uint24"},{"internalType":"uint16","name":"minDiscount","type":"uint16"},{"internalType":"uint16","name":"maxDiscount","type":"uint16"},{"internalType":"uint96","name":"minimumShares","type":"uint96"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405260016002819055600680546001600160601b03191690911790553480156200002b57600080fd5b5060405162002ebc38038062002ebc8339810160408190526200004e9162000191565b600080546001600160a01b03199081166001600160a01b0387811691821784556001805490931690871617909155604051869286929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350506001600160a01b03821660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620001f9565b6200015f90600a6200033a565b60c0526001600160a01b031660a052506200034b915050565b6001600160a01b03811681146200018e57600080fd5b50565b60008060008060808587031215620001a857600080fd5b8451620001b58162000178565b6020860151909450620001c88162000178565b6040860151909350620001db8162000178565b6060860151909250620001ee8162000178565b939692955090935050565b6000602082840312156200020c57600080fd5b815160ff811681146200021e57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200027c57816000190482111562000260576200026062000225565b808516156200026e57918102915b93841c939080029062000240565b509250929050565b600082620002955750600162000334565b81620002a45750600062000334565b8160018114620002bd5760028114620002c857620002e8565b600191505062000334565b60ff841115620002dc57620002dc62000225565b50506001821b62000334565b5060208310610133831016604e8410600b84101617156200030d575081810a62000334565b6200031983836200023b565b806000190482111562000330576200033062000225565b0290505b92915050565b60006200021e60ff84168362000284565b60805160a05160c051612aed620003cf600039600081816103bd01526114290152600081816101b80152818161138b0152611573015260008181610448015281816104a70152818161060501528181610adc01528181610b2f01528181610d8101528181610e0801528181610ea701528181610fcc0152611da40152612aed6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063a5672fd7116100c3578063b7d122b51161007c578063b7d122b5146103b8578063bf7e214f146103df578063e69a31c2146103f2578063eed4b3f81461041d578063f2fde38b14610430578063f3b977841461044357600080fd5b8063a5672fd714610279578063aa5a0ffd146102a1578063ac33a2731461034e578063affed0e014610356578063b187bd2614610381578063b22ed42a146103a557600080fd5b80636bb3b476116101155780636bb3b4761461020557806374732728146102185780637a9e5e4b1461022b5780638456cb591461023e5780638da5cb5b146102465780639fff7e2a1461025957600080fd5b80630bf6cab71461015d5780633f4ba83a14610172578063412638dc1461017a5780634a2dc5e41461018d5780634fb3ccc5146101b3578063581b4920146101f2575b600080fd5b61017061016b366004612228565b61046a565b005b610170610746565b61017061018836600461229b565b6107b0565b6101a061019b36600461248f565b610c30565b6040519081526020015b60405180910390f35b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101aa565b6101a06102003660046124be565b610c73565b6101a061021336600461254a565b610ef9565b6101706102263660046125a0565b61101a565b6101706102393660046125a0565b611095565b61017061117f565b6000546101da906001600160a01b031681565b61026c6102673660046125bd565b6111ef565b6040516101aa91906125f3565b61028c610287366004612637565b6112da565b604080519283526020830191909152016101aa565b6103076102af3660046125a0565b60056020526000908152604090205460ff81169062ffffff610100820481169164010000000081049091169061ffff600160381b8204811691600160481b8104909116906001600160601b03600160581b9091041686565b60408051961515875262ffffff9586166020880152939094169285019290925261ffff90811660608501521660808301526001600160601b031660a082015260c0016101aa565b61026c611326565b600654610369906001600160601b031681565b6040516001600160601b0390911681526020016101aa565b60065461039590600160601b900460ff1681565b60405190151581526020016101aa565b6101a06103b336600461267e565b611337565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b6001546101da906001600160a01b031681565b610405610400366004612691565b611367565b6040516001600160801b0390911681526020016101aa565b61017061042b3660046126cd565b611480565b61017061043e3660046125a0565b6117b5565b6101da7f000000000000000000000000000000000000000000000000000000000000000081565b610480336000356001600160e01b031916611832565b6104a55760405162461bcd60e51b815260040161049c90612743565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036106b75760006104ea60036118dc565b805190915082811461050f576040516312ed8d4160e21b815260040160405180910390fd5b6000805b828110156105e25783818151811061052d5761052d612769565b602002602001015186868381811061054757610547612769565b9050610100020160405160200161055e919061277f565b6040516020818303038152906040528051906020012014610592576040516312ed8d4160e21b815260040160405180910390fd5b8585828181106105a4576105a4612769565b9050610100020160600160208101906105bd9190612849565b6105d0906001600160801b03168361287a565b91506105db8161288d565b9050610513565b506040516370a0823160e01b815230600482015260009082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906128a6565b61067a91906128bf565b9050600019880361068d578097506106ae565b808811156106ae5760405163fbeb452f60e01b815260040160405180910390fd5b5050505061072b565b600019840361072b576040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072891906128a6565b93505b61073f6001600160a01b03861684866118f0565b5050505050565b61075c336000356001600160e01b031916611832565b6107785760405162461bcd60e51b815260040161049c90612743565b6006805460ff60601b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6107c6336000356001600160e01b031916611832565b6107e25760405162461bcd60e51b815260040161049c90612743565b600654600160601b900460ff161561080d5760405163158b17e360e11b815260040160405180910390fd5b60008585600081811061082257610822612769565b90506101000201604001602081019061083b91906125a0565b905060008086815b81811015610ace5789898281811061085d5761085d612769565b90506101000201604001602081019061087691906125a0565b6001600160a01b0316856001600160a01b0316146108a7576040516331f59b5960e21b815260040160405180910390fd5b60008a8a838181106108bb576108bb612769565b9050610100020160c00160208101906108d491906128d2565b62ffffff168b8b848181106108eb576108eb612769565b9050610100020160a001602081019061090491906128ed565b61090e9190612908565b64ffffffffff16905080421015610938576040516332924a4960e01b815260040160405180910390fd5b60008b8b8481811061094c5761094c612769565b9050610100020160e001602081019061096591906128d2565b6109749062ffffff168361287a565b905080421115610997576040516378b2b00760e01b815260040160405180910390fd5b8b8b848181106109a9576109a9612769565b9050610100020160800160208101906109c29190612849565b6109d5906001600160801b03168761287a565b95508b8b848181106109e9576109e9612769565b905061010002016060016020810190610a029190612849565b610a15906001600160801b03168661287a565b94506000610a4a8d8d86818110610a2e57610a2e612769565b90506101000201803603810190610a45919061248f565b611977565b90508c8c85818110610a5e57610a5e612769565b905061010002016020016020810190610a7791906125a0565b6001600160a01b0316817fd94fc49a6578873ff851671d19cacb1809887f7a9128867ee4306dc3ffc93c2642604051610ab291815260200190565b60405180910390a350505080610ac79061288d565b9050610843565b50610b036001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686846118f0565b8515610b94576040516333d5020b60e11b81526001600160a01b038616906367aa041690610b619033907f000000000000000000000000000000000000000000000000000000000000000090899088908a908f908f90600401612926565b600060405180830381600087803b158015610b7b57600080fd5b505af1158015610b8f573d6000803e3d6000fd5b505050505b60005b81811015610c2457610c14868b8b84818110610bb557610bb5612769565b905061010002016020016020810190610bce91906125a0565b8c8c85818110610be057610be0612769565b905061010002016080016020810190610bf99190612849565b6001600160a01b0389169291906001600160801b03166119d7565b610c1d8161288d565b9050610b97565b50505050505050505050565b6000610c48336000356001600160e01b031916611832565b610c645760405162461bcd60e51b815260040161049c90612743565b610c6d82611a6c565b92915050565b6000610c8b336000356001600160e01b031916611832565b610ca75760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038916600090815260056020908152604091829020825160c081018452905460ff81161515825262ffffff610100820481169383019390935264010000000081049092169281019290925261ffff600160381b820481166060840152600160481b82041660808301526001600160601b03600160581b9091041660a0820152610d39818a8a8a611aa7565b60405163d505accf60e01b81523360048201523060248201526001600160801b038a1660448201526064810187905260ff8616608482015260a4810185905260c481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d505accf9060e401600060405180830381600087803b158015610dcd57600080fd5b505af1925050508015610dde575060015b610e9a57604051636eb1769f60e11b81523360048201523060248201526001600160801b038a16907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7b91906128a6565b1015610e9a57604051634bfd8d1d60e01b815260040160405180910390fd5b610ed86001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306001600160801b038d166119d7565b610eea338b8b8b85602001518c611b9a565b509a9950505050505050505050565b6000610f11336000356001600160e01b031916611832565b610f2d5760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038516600090815260056020908152604091829020825160c081018452905460ff81161515825262ffffff610100820481169383019390935264010000000081049092169281019290925261ffff600160381b820481166060840152600160481b82041660808301526001600160601b03600160581b9091041660a0820152610fbf81868686611aa7565b610ffd6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306001600160801b0389166119d7565b61100f33878787856020015188611b9a565b509695505050505050565b611030336000356001600160e01b031916611832565b61104c5760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038116600081815260056020526040808220805460ff19169055517ff1abf38a870f414456542524a2b679c0ece751691e36f4feee2ca7826c99e4629190a250565b6000546001600160a01b031633148061112a575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906110e990339030906001600160e01b0319600035169060040161298b565b602060405180830381865afa158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a91906129b8565b61113357600080fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b611195336000356001600160e01b031916611832565b6111b15760405162461bcd60e51b815260040161049c90612743565b6006805460ff60601b1916600160601b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6060611207336000356001600160e01b031916611832565b6112235760405162461bcd60e51b815260040161049c90612743565b818067ffffffffffffffff81111561123d5761123d61234d565b604051908082528060200260200182016040528015611266578160200160208202803683370190505b50915060005b818110156112d2576112a585858381811061128957611289612769565b905061010002018036038101906112a0919061248f565b611d7f565b8382815181106112b7576112b7612769565b60209081029190910101526112cb8161288d565b905061126c565b505092915050565b6000806112f3336000356001600160e01b031916611832565b61130f5760405162461bcd60e51b815260040161049c90612743565b61131a858585611e28565b90969095509350505050565b606061133260036118dc565b905090565b60008160405160200161134a919061277f565b604051602081830303815290604052805190602001209050919050565b604051634104b9ed60e11b81526001600160a01b03848116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063820973da90602401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f691906128a6565b9050611415611407846127106129da565b829061ffff16612710611e7c565b9050600061144d6001600160801b038616837f0000000000000000000000000000000000000000000000000000000000000000611e7c565b90506001600160801b0381111561147757604051635637123160e01b815260040160405180910390fd5b95945050505050565b611496336000356001600160e01b031916611832565b6114b25760405162461bcd60e51b815260040161049c90612743565b610bb861ffff831611156114d95760405163daf4c27560e01b815260040160405180910390fd5b62278d0062ffffff86161115611502576040516341e2834f60e11b815260040160405180910390fd5b62278d0062ffffff8516111561152b57604051632496e55f60e21b815260040160405180910390fd5b8161ffff168361ffff1611156115545760405163a800f19560e01b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b0387811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063820973da90602401602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906128a6565b506040518060c001604052806001151581526020018662ffffff1681526020018562ffffff1681526020018461ffff1681526020018361ffff168152602001826001600160601b031681525060056000886001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548162ffffff021916908362ffffff16021790555060408201518160000160046101000a81548162ffffff021916908362ffffff16021790555060608201518160000160076101000a81548161ffff021916908361ffff16021790555060808201518160000160096101000a81548161ffff021916908361ffff16021790555060a082015181600001600b6101000a8154816001600160601b0302191690836001600160601b03160217905550905050856001600160a01b03167f6ece44744f1fe676735f115da497fe130c7acf43fcd142fe92e20df15788797e86868686866040516117a595949392919062ffffff958616815293909416602084015261ffff91821660408401521660608201526001600160601b0391909116608082015260a00190565b60405180910390a2505050505050565b6117cb336000356001600160e01b031916611832565b6117e75760405162461bcd60e51b815260040161049c90612743565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001546000906001600160a01b031680158015906118bc575060405163b700961360e01b81526001600160a01b0382169063b70096139061187b9087903090889060040161298b565b602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc91906129b8565b806118d457506000546001600160a01b038581169116145b949350505050565b606060006118e983611e9a565b9392505050565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806119715760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161049c565b50505050565b60008160405160200161198a91906129f5565b60408051601f198184030181529190528051602090910120905060006119b1600383611ef6565b9050806119d157604051630ba52cdd60e11b815260040160405180910390fd5b50919050565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061073f5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015260640161049c565b6020810151600090336001600160a01b0382168114611a9e576040516322583d4960e21b815260040160405180910390fd5b6118d484611d7f565b600654600160601b900460ff1615611ad25760405163158b17e360e11b815260040160405180910390fd5b8351611af1576040516312baa4e960e11b815260040160405180910390fd5b836060015161ffff168261ffff161080611b165750836080015161ffff168261ffff16115b15611b345760405163a800f19560e01b815260040160405180910390fd5b8360a001516001600160601b0316836001600160801b03161015611b6b5760405163030510d560e11b815260040160405180910390fd5b836040015162ffffff168162ffffff161015611971576040516394fb53cb60e01b815260040160405180910390fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052600680546bffffffffffffffffffffffff19811660016001600160601b03928316908101909216179091556000611c12898989611367565b90506000429050604051806101000160405280846001600160601b031681526020018c6001600160a01b031681526020018b6001600160a01b031681526020018a6001600160801b03168152602001836001600160801b031681526020018264ffffffffff1681526020018862ffffff1681526020018762ffffff16815250935083604051602001611ca491906129f5565b60408051601f19818403018152919052805160209091012094506000611ccb600387611f02565b905080611ceb57604051635028981b60e11b815260040160405180910390fd5b604080516001600160601b03861681526001600160801b038c8116602083015285168183015264ffffffffff8416606082015262ffffff8a81166080830152891660a082015290516001600160a01b038d811692908f169189917f2eb08ebdb4d68b4a37e3b424927f3363e1d799ca7e56e7b2c59cc6c1778d33f5919081900360c00190a450505050965096945050505050565b6000611d8a82611977565b9050611ddb826020015183606001516001600160801b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118f09092919063ffffffff16565b81602001516001600160a01b0316817f114ef421aef557f2e4086396789e7fb532b1133ff2982c9d948daa73d0691e3642604051611e1b91815260200190565b60405180910390a3919050565b600080846020015133806001600160a01b0316826001600160a01b031614611e63576040516322583d4960e21b815260040160405180910390fd5b611e6e878787611f0e565b909890975095505050505050565b6000826000190484118302158202611e9357600080fd5b5091020490565b606081600001805480602002602001604051908101604052809291908181526020018280548015611eea57602002820191906000526020600020905b815481526020019060010190808311611ed6575b50505050509050919050565b60006118e9838361206b565b60006118e98383612165565b600080846020015133806001600160a01b0316826001600160a01b031614611f49576040516322583d4960e21b815260040160405180910390fd5b6040878101516001600160a01b031660009081526005602090815290829020825160c081018452905460ff811615158252610100810462ffffff90811693830193909352640100000000810490921692810192909252600160381b810461ffff908116606080850191909152600160481b83049091166080840152600160581b9091046001600160601b031660a0830152880151611fea9082908989611aa7565b611ff388611977565b945087602001516001600160a01b0316857f114ef421aef557f2e4086396789e7fb532b1133ff2982c9d948daa73d0691e364260405161203591815260200190565b60405180910390a361205b886020015189604001518a606001518a85602001518b611b9a565b5080945050505050935093915050565b6000818152600183016020526040812054801561215457600061208f6001836128bf565b85549091506000906120a3906001906128bf565b90508082146121085760008660000182815481106120c3576120c3612769565b90600052602060002001549050808760000184815481106120e6576120e6612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061211957612119612aa1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c6d565b6000915050610c6d565b5092915050565b60008181526001830160205260408120546121ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c6d565b506000610c6d565b6001600160a01b03811681146121c957600080fd5b50565b80356121d7816121b4565b919050565b60008083601f8401126121ee57600080fd5b50813567ffffffffffffffff81111561220657600080fd5b6020830191508360208260081b850101111561222157600080fd5b9250929050565b60008060008060006080868803121561224057600080fd5b853561224b816121b4565b9450602086013593506040860135612262816121b4565b9250606086013567ffffffffffffffff81111561227e57600080fd5b61228a888289016121dc565b969995985093965092949392505050565b6000806000806000606086880312156122b357600080fd5b853567ffffffffffffffff808211156122cb57600080fd5b6122d789838a016121dc565b909750955060208801359150808211156122f057600080fd5b818801915088601f83011261230457600080fd5b81358181111561231357600080fd5b89602082850101111561232557600080fd5b602083019550809450505050604086013561233f816121b4565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b80356001600160601b03811681146121d757600080fd5b80356001600160801b03811681146121d757600080fd5b803564ffffffffff811681146121d757600080fd5b803562ffffff811681146121d757600080fd5b60006101008083850312156123cd57600080fd5b6040519081019067ffffffffffffffff821181831017156123fe57634e487b7160e01b600052604160045260246000fd5b8160405280925061240e84612363565b815261241c602085016121cc565b602082015261242d604085016121cc565b604082015261243e6060850161237a565b606082015261244f6080850161237a565b608082015261246060a08501612391565b60a082015261247160c085016123a6565b60c082015261248260e085016123a6565b60e0820152505092915050565b600061010082840312156124a257600080fd5b6118e983836123b9565b803561ffff811681146121d757600080fd5b600080600080600080600080610100898b0312156124db57600080fd5b88356124e6816121b4565b97506124f460208a0161237a565b965061250260408a016124ac565b955061251060608a016123a6565b94506080890135935060a089013560ff8116811461252d57600080fd5b979a969950949793969295929450505060c08201359160e0013590565b6000806000806080858703121561256057600080fd5b843561256b816121b4565b93506125796020860161237a565b9250612587604086016124ac565b9150612595606086016123a6565b905092959194509250565b6000602082840312156125b257600080fd5b81356118e9816121b4565b600080602083850312156125d057600080fd5b823567ffffffffffffffff8111156125e757600080fd5b61131a858286016121dc565b6020808252825182820181905260009190848201906040850190845b8181101561262b5783518352928401929184019160010161260f565b50909695505050505050565b6000806000610140848603121561264d57600080fd5b61265785856123b9565b925061266661010085016124ac565b915061267561012085016123a6565b90509250925092565b600061010082840312156119d157600080fd5b6000806000606084860312156126a657600080fd5b83356126b1816121b4565b92506126bf6020850161237a565b9150612675604085016124ac565b60008060008060008060c087890312156126e657600080fd5b86356126f1816121b4565b95506126ff602088016123a6565b945061270d604088016123a6565b935061271b606088016124ac565b9250612729608088016124ac565b915061273760a08801612363565b90509295509295509295565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b61010081016001600160601b0361279584612363565b16825260208301356127a6816121b4565b6001600160a01b0390811660208401526040840135906127c5826121b4565b1660408301526127d76060840161237a565b6001600160801b031660608301526127f16080840161237a565b6001600160801b0316608083015261280b60a08401612391565b64ffffffffff1660a083015261282360c084016123a6565b62ffffff1660c083015261283960e084016123a6565b62ffffff811660e084015261215e565b60006020828403121561285b57600080fd5b6118e98261237a565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6d57610c6d612864565b60006001820161289f5761289f612864565b5060010190565b6000602082840312156128b857600080fd5b5051919050565b81810381811115610c6d57610c6d612864565b6000602082840312156128e457600080fd5b6118e9826123a6565b6000602082840312156128ff57600080fd5b6118e982612391565b64ffffffffff81811683821601908082111561215e5761215e612864565b6001600160a01b038881168252878116602083015286166040820152606081018590526080810184905260c060a0820181905281018290526000828460e0840137600060e0848401015260e0601f19601f850116830101905098975050505050505050565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000602082840312156129ca57600080fd5b815180151581146118e957600080fd5b61ffff82811682821603908082111561215e5761215e612864565b6000610100820190506001600160601b038351168252602083015160018060a01b03808216602085015280604086015116604085015250506001600160801b0360608401511660608301526080830151612a5a60808401826001600160801b03169052565b5060a0830151612a7360a084018264ffffffffff169052565b5060c0830151612a8a60c084018262ffffff169052565b5060e083015161215e60e084018262ffffff169052565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220acabc043303dad95ad94c0bfd05d994da6fceedfed8842893580dc2fbe6b672364736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063a5672fd7116100c3578063b7d122b51161007c578063b7d122b5146103b8578063bf7e214f146103df578063e69a31c2146103f2578063eed4b3f81461041d578063f2fde38b14610430578063f3b977841461044357600080fd5b8063a5672fd714610279578063aa5a0ffd146102a1578063ac33a2731461034e578063affed0e014610356578063b187bd2614610381578063b22ed42a146103a557600080fd5b80636bb3b476116101155780636bb3b4761461020557806374732728146102185780637a9e5e4b1461022b5780638456cb591461023e5780638da5cb5b146102465780639fff7e2a1461025957600080fd5b80630bf6cab71461015d5780633f4ba83a14610172578063412638dc1461017a5780634a2dc5e41461018d5780634fb3ccc5146101b3578063581b4920146101f2575b600080fd5b61017061016b366004612228565b61046a565b005b610170610746565b61017061018836600461229b565b6107b0565b6101a061019b36600461248f565b610c30565b6040519081526020015b60405180910390f35b6101da7f000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be81565b6040516001600160a01b0390911681526020016101aa565b6101a06102003660046124be565b610c73565b6101a061021336600461254a565b610ef9565b6101706102263660046125a0565b61101a565b6101706102393660046125a0565b611095565b61017061117f565b6000546101da906001600160a01b031681565b61026c6102673660046125bd565b6111ef565b6040516101aa91906125f3565b61028c610287366004612637565b6112da565b604080519283526020830191909152016101aa565b6103076102af3660046125a0565b60056020526000908152604090205460ff81169062ffffff610100820481169164010000000081049091169061ffff600160381b8204811691600160481b8104909116906001600160601b03600160581b9091041686565b60408051961515875262ffffff9586166020880152939094169285019290925261ffff90811660608501521660808301526001600160601b031660a082015260c0016101aa565b61026c611326565b600654610369906001600160601b031681565b6040516001600160601b0390911681526020016101aa565b60065461039590600160601b900460ff1681565b60405190151581526020016101aa565b6101a06103b336600461267e565b611337565b6101a07f00000000000000000000000000000000000000000000000000000000000f424081565b6001546101da906001600160a01b031681565b610405610400366004612691565b611367565b6040516001600160801b0390911681526020016101aa565b61017061042b3660046126cd565b611480565b61017061043e3660046125a0565b6117b5565b6101da7f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae81565b610480336000356001600160e01b031916611832565b6104a55760405162461bcd60e51b815260040161049c90612743565b60405180910390fd5b7f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae6001600160a01b0316856001600160a01b0316036106b75760006104ea60036118dc565b805190915082811461050f576040516312ed8d4160e21b815260040160405180910390fd5b6000805b828110156105e25783818151811061052d5761052d612769565b602002602001015186868381811061054757610547612769565b9050610100020160405160200161055e919061277f565b6040516020818303038152906040528051906020012014610592576040516312ed8d4160e21b815260040160405180910390fd5b8585828181106105a4576105a4612769565b9050610100020160600160208101906105bd9190612849565b6105d0906001600160801b03168361287a565b91506105db8161288d565b9050610513565b506040516370a0823160e01b815230600482015260009082906001600160a01b037f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae16906370a0823190602401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067091906128a6565b61067a91906128bf565b9050600019880361068d578097506106ae565b808811156106ae5760405163fbeb452f60e01b815260040160405180910390fd5b5050505061072b565b600019840361072b576040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa158015610704573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072891906128a6565b93505b61073f6001600160a01b03861684866118f0565b5050505050565b61075c336000356001600160e01b031916611832565b6107785760405162461bcd60e51b815260040161049c90612743565b6006805460ff60601b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6107c6336000356001600160e01b031916611832565b6107e25760405162461bcd60e51b815260040161049c90612743565b600654600160601b900460ff161561080d5760405163158b17e360e11b815260040160405180910390fd5b60008585600081811061082257610822612769565b90506101000201604001602081019061083b91906125a0565b905060008086815b81811015610ace5789898281811061085d5761085d612769565b90506101000201604001602081019061087691906125a0565b6001600160a01b0316856001600160a01b0316146108a7576040516331f59b5960e21b815260040160405180910390fd5b60008a8a838181106108bb576108bb612769565b9050610100020160c00160208101906108d491906128d2565b62ffffff168b8b848181106108eb576108eb612769565b9050610100020160a001602081019061090491906128ed565b61090e9190612908565b64ffffffffff16905080421015610938576040516332924a4960e01b815260040160405180910390fd5b60008b8b8481811061094c5761094c612769565b9050610100020160e001602081019061096591906128d2565b6109749062ffffff168361287a565b905080421115610997576040516378b2b00760e01b815260040160405180910390fd5b8b8b848181106109a9576109a9612769565b9050610100020160800160208101906109c29190612849565b6109d5906001600160801b03168761287a565b95508b8b848181106109e9576109e9612769565b905061010002016060016020810190610a029190612849565b610a15906001600160801b03168661287a565b94506000610a4a8d8d86818110610a2e57610a2e612769565b90506101000201803603810190610a45919061248f565b611977565b90508c8c85818110610a5e57610a5e612769565b905061010002016020016020810190610a7791906125a0565b6001600160a01b0316817fd94fc49a6578873ff851671d19cacb1809887f7a9128867ee4306dc3ffc93c2642604051610ab291815260200190565b60405180910390a350505080610ac79061288d565b9050610843565b50610b036001600160a01b037f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae1686846118f0565b8515610b94576040516333d5020b60e11b81526001600160a01b038616906367aa041690610b619033907f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae90899088908a908f908f90600401612926565b600060405180830381600087803b158015610b7b57600080fd5b505af1158015610b8f573d6000803e3d6000fd5b505050505b60005b81811015610c2457610c14868b8b84818110610bb557610bb5612769565b905061010002016020016020810190610bce91906125a0565b8c8c85818110610be057610be0612769565b905061010002016080016020810190610bf99190612849565b6001600160a01b0389169291906001600160801b03166119d7565b610c1d8161288d565b9050610b97565b50505050505050505050565b6000610c48336000356001600160e01b031916611832565b610c645760405162461bcd60e51b815260040161049c90612743565b610c6d82611a6c565b92915050565b6000610c8b336000356001600160e01b031916611832565b610ca75760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038916600090815260056020908152604091829020825160c081018452905460ff81161515825262ffffff610100820481169383019390935264010000000081049092169281019290925261ffff600160381b820481166060840152600160481b82041660808301526001600160601b03600160581b9091041660a0820152610d39818a8a8a611aa7565b60405163d505accf60e01b81523360048201523060248201526001600160801b038a1660448201526064810187905260ff8616608482015260a4810185905260c481018490527f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae6001600160a01b03169063d505accf9060e401600060405180830381600087803b158015610dcd57600080fd5b505af1925050508015610dde575060015b610e9a57604051636eb1769f60e11b81523360048201523060248201526001600160801b038a16907f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae6001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7b91906128a6565b1015610e9a57604051634bfd8d1d60e01b815260040160405180910390fd5b610ed86001600160a01b037f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae1633306001600160801b038d166119d7565b610eea338b8b8b85602001518c611b9a565b509a9950505050505050505050565b6000610f11336000356001600160e01b031916611832565b610f2d5760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038516600090815260056020908152604091829020825160c081018452905460ff81161515825262ffffff610100820481169383019390935264010000000081049092169281019290925261ffff600160381b820481166060840152600160481b82041660808301526001600160601b03600160581b9091041660a0820152610fbf81868686611aa7565b610ffd6001600160a01b037f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae1633306001600160801b0389166119d7565b61100f33878787856020015188611b9a565b509695505050505050565b611030336000356001600160e01b031916611832565b61104c5760405162461bcd60e51b815260040161049c90612743565b6001600160a01b038116600081815260056020526040808220805460ff19169055517ff1abf38a870f414456542524a2b679c0ece751691e36f4feee2ca7826c99e4629190a250565b6000546001600160a01b031633148061112a575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906110e990339030906001600160e01b0319600035169060040161298b565b602060405180830381865afa158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a91906129b8565b61113357600080fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b611195336000356001600160e01b031916611832565b6111b15760405162461bcd60e51b815260040161049c90612743565b6006805460ff60601b1916600160601b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6060611207336000356001600160e01b031916611832565b6112235760405162461bcd60e51b815260040161049c90612743565b818067ffffffffffffffff81111561123d5761123d61234d565b604051908082528060200260200182016040528015611266578160200160208202803683370190505b50915060005b818110156112d2576112a585858381811061128957611289612769565b905061010002018036038101906112a0919061248f565b611d7f565b8382815181106112b7576112b7612769565b60209081029190910101526112cb8161288d565b905061126c565b505092915050565b6000806112f3336000356001600160e01b031916611832565b61130f5760405162461bcd60e51b815260040161049c90612743565b61131a858585611e28565b90969095509350505050565b606061133260036118dc565b905090565b60008160405160200161134a919061277f565b604051602081830303815290604052805190602001209050919050565b604051634104b9ed60e11b81526001600160a01b03848116600483015260009182917f000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be169063820973da90602401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f691906128a6565b9050611415611407846127106129da565b829061ffff16612710611e7c565b9050600061144d6001600160801b038616837f00000000000000000000000000000000000000000000000000000000000f4240611e7c565b90506001600160801b0381111561147757604051635637123160e01b815260040160405180910390fd5b95945050505050565b611496336000356001600160e01b031916611832565b6114b25760405162461bcd60e51b815260040161049c90612743565b610bb861ffff831611156114d95760405163daf4c27560e01b815260040160405180910390fd5b62278d0062ffffff86161115611502576040516341e2834f60e11b815260040160405180910390fd5b62278d0062ffffff8516111561152b57604051632496e55f60e21b815260040160405180910390fd5b8161ffff168361ffff1611156115545760405163a800f19560e01b815260040160405180910390fd5b604051634104b9ed60e11b81526001600160a01b0387811660048301527f000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be169063820973da90602401602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de91906128a6565b506040518060c001604052806001151581526020018662ffffff1681526020018562ffffff1681526020018461ffff1681526020018361ffff168152602001826001600160601b031681525060056000886001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548162ffffff021916908362ffffff16021790555060408201518160000160046101000a81548162ffffff021916908362ffffff16021790555060608201518160000160076101000a81548161ffff021916908361ffff16021790555060808201518160000160096101000a81548161ffff021916908361ffff16021790555060a082015181600001600b6101000a8154816001600160601b0302191690836001600160601b03160217905550905050856001600160a01b03167f6ece44744f1fe676735f115da497fe130c7acf43fcd142fe92e20df15788797e86868686866040516117a595949392919062ffffff958616815293909416602084015261ffff91821660408401521660608201526001600160601b0391909116608082015260a00190565b60405180910390a2505050505050565b6117cb336000356001600160e01b031916611832565b6117e75760405162461bcd60e51b815260040161049c90612743565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001546000906001600160a01b031680158015906118bc575060405163b700961360e01b81526001600160a01b0382169063b70096139061187b9087903090889060040161298b565b602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc91906129b8565b806118d457506000546001600160a01b038581169116145b949350505050565b606060006118e983611e9a565b9392505050565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806119715760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b604482015260640161049c565b50505050565b60008160405160200161198a91906129f5565b60408051601f198184030181529190528051602090910120905060006119b1600383611ef6565b9050806119d157604051630ba52cdd60e11b815260040160405180910390fd5b50919050565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061073f5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015260640161049c565b6020810151600090336001600160a01b0382168114611a9e576040516322583d4960e21b815260040160405180910390fd5b6118d484611d7f565b600654600160601b900460ff1615611ad25760405163158b17e360e11b815260040160405180910390fd5b8351611af1576040516312baa4e960e11b815260040160405180910390fd5b836060015161ffff168261ffff161080611b165750836080015161ffff168261ffff16115b15611b345760405163a800f19560e01b815260040160405180910390fd5b8360a001516001600160601b0316836001600160801b03161015611b6b5760405163030510d560e11b815260040160405180910390fd5b836040015162ffffff168162ffffff161015611971576040516394fb53cb60e01b815260040160405180910390fd5b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052600680546bffffffffffffffffffffffff19811660016001600160601b03928316908101909216179091556000611c12898989611367565b90506000429050604051806101000160405280846001600160601b031681526020018c6001600160a01b031681526020018b6001600160a01b031681526020018a6001600160801b03168152602001836001600160801b031681526020018264ffffffffff1681526020018862ffffff1681526020018762ffffff16815250935083604051602001611ca491906129f5565b60408051601f19818403018152919052805160209091012094506000611ccb600387611f02565b905080611ceb57604051635028981b60e11b815260040160405180910390fd5b604080516001600160601b03861681526001600160801b038c8116602083015285168183015264ffffffffff8416606082015262ffffff8a81166080830152891660a082015290516001600160a01b038d811692908f169189917f2eb08ebdb4d68b4a37e3b424927f3363e1d799ca7e56e7b2c59cc6c1778d33f5919081900360c00190a450505050965096945050505050565b6000611d8a82611977565b9050611ddb826020015183606001516001600160801b03167f000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae6001600160a01b03166118f09092919063ffffffff16565b81602001516001600160a01b0316817f114ef421aef557f2e4086396789e7fb532b1133ff2982c9d948daa73d0691e3642604051611e1b91815260200190565b60405180910390a3919050565b600080846020015133806001600160a01b0316826001600160a01b031614611e63576040516322583d4960e21b815260040160405180910390fd5b611e6e878787611f0e565b909890975095505050505050565b6000826000190484118302158202611e9357600080fd5b5091020490565b606081600001805480602002602001604051908101604052809291908181526020018280548015611eea57602002820191906000526020600020905b815481526020019060010190808311611ed6575b50505050509050919050565b60006118e9838361206b565b60006118e98383612165565b600080846020015133806001600160a01b0316826001600160a01b031614611f49576040516322583d4960e21b815260040160405180910390fd5b6040878101516001600160a01b031660009081526005602090815290829020825160c081018452905460ff811615158252610100810462ffffff90811693830193909352640100000000810490921692810192909252600160381b810461ffff908116606080850191909152600160481b83049091166080840152600160581b9091046001600160601b031660a0830152880151611fea9082908989611aa7565b611ff388611977565b945087602001516001600160a01b0316857f114ef421aef557f2e4086396789e7fb532b1133ff2982c9d948daa73d0691e364260405161203591815260200190565b60405180910390a361205b886020015189604001518a606001518a85602001518b611b9a565b5080945050505050935093915050565b6000818152600183016020526040812054801561215457600061208f6001836128bf565b85549091506000906120a3906001906128bf565b90508082146121085760008660000182815481106120c3576120c3612769565b90600052602060002001549050808760000184815481106120e6576120e6612769565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061211957612119612aa1565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c6d565b6000915050610c6d565b5092915050565b60008181526001830160205260408120546121ac57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c6d565b506000610c6d565b6001600160a01b03811681146121c957600080fd5b50565b80356121d7816121b4565b919050565b60008083601f8401126121ee57600080fd5b50813567ffffffffffffffff81111561220657600080fd5b6020830191508360208260081b850101111561222157600080fd5b9250929050565b60008060008060006080868803121561224057600080fd5b853561224b816121b4565b9450602086013593506040860135612262816121b4565b9250606086013567ffffffffffffffff81111561227e57600080fd5b61228a888289016121dc565b969995985093965092949392505050565b6000806000806000606086880312156122b357600080fd5b853567ffffffffffffffff808211156122cb57600080fd5b6122d789838a016121dc565b909750955060208801359150808211156122f057600080fd5b818801915088601f83011261230457600080fd5b81358181111561231357600080fd5b89602082850101111561232557600080fd5b602083019550809450505050604086013561233f816121b4565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b80356001600160601b03811681146121d757600080fd5b80356001600160801b03811681146121d757600080fd5b803564ffffffffff811681146121d757600080fd5b803562ffffff811681146121d757600080fd5b60006101008083850312156123cd57600080fd5b6040519081019067ffffffffffffffff821181831017156123fe57634e487b7160e01b600052604160045260246000fd5b8160405280925061240e84612363565b815261241c602085016121cc565b602082015261242d604085016121cc565b604082015261243e6060850161237a565b606082015261244f6080850161237a565b608082015261246060a08501612391565b60a082015261247160c085016123a6565b60c082015261248260e085016123a6565b60e0820152505092915050565b600061010082840312156124a257600080fd5b6118e983836123b9565b803561ffff811681146121d757600080fd5b600080600080600080600080610100898b0312156124db57600080fd5b88356124e6816121b4565b97506124f460208a0161237a565b965061250260408a016124ac565b955061251060608a016123a6565b94506080890135935060a089013560ff8116811461252d57600080fd5b979a969950949793969295929450505060c08201359160e0013590565b6000806000806080858703121561256057600080fd5b843561256b816121b4565b93506125796020860161237a565b9250612587604086016124ac565b9150612595606086016123a6565b905092959194509250565b6000602082840312156125b257600080fd5b81356118e9816121b4565b600080602083850312156125d057600080fd5b823567ffffffffffffffff8111156125e757600080fd5b61131a858286016121dc565b6020808252825182820181905260009190848201906040850190845b8181101561262b5783518352928401929184019160010161260f565b50909695505050505050565b6000806000610140848603121561264d57600080fd5b61265785856123b9565b925061266661010085016124ac565b915061267561012085016123a6565b90509250925092565b600061010082840312156119d157600080fd5b6000806000606084860312156126a657600080fd5b83356126b1816121b4565b92506126bf6020850161237a565b9150612675604085016124ac565b60008060008060008060c087890312156126e657600080fd5b86356126f1816121b4565b95506126ff602088016123a6565b945061270d604088016123a6565b935061271b606088016124ac565b9250612729608088016124ac565b915061273760a08801612363565b90509295509295509295565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b61010081016001600160601b0361279584612363565b16825260208301356127a6816121b4565b6001600160a01b0390811660208401526040840135906127c5826121b4565b1660408301526127d76060840161237a565b6001600160801b031660608301526127f16080840161237a565b6001600160801b0316608083015261280b60a08401612391565b64ffffffffff1660a083015261282360c084016123a6565b62ffffff1660c083015261283960e084016123a6565b62ffffff811660e084015261215e565b60006020828403121561285b57600080fd5b6118e98261237a565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6d57610c6d612864565b60006001820161289f5761289f612864565b5060010190565b6000602082840312156128b857600080fd5b5051919050565b81810381811115610c6d57610c6d612864565b6000602082840312156128e457600080fd5b6118e9826123a6565b6000602082840312156128ff57600080fd5b6118e982612391565b64ffffffffff81811683821601908082111561215e5761215e612864565b6001600160a01b038881168252878116602083015286166040820152606081018590526080810184905260c060a0820181905281018290526000828460e0840137600060e0848401015260e0601f19601f850116830101905098975050505050505050565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000602082840312156129ca57600080fd5b815180151581146118e957600080fd5b61ffff82811682821603908082111561215e5761215e612864565b6000610100820190506001600160601b038351168252602083015160018060a01b03808216602085015280604086015116604085015250506001600160801b0360608401511660608301526080830151612a5a60808401826001600160801b03169052565b5060a0830151612a7360a084018264ffffffffff169052565b5060c0830151612a8a60c084018262ffffff169052565b5060e083015161215e60e084018262ffffff169052565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220acabc043303dad95ad94c0bfd05d994da6fceedfed8842893580dc2fbe6b672364736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be
-----Decoded View---------------
Arg [0] : _owner (address): 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02d
Arg [1] : _auth (address): 0x0000000000000000000000000000000000000000
Arg [2] : _boringVault (address): 0xd3DCe716f3eF535C5Ff8d041c1A41C3bd89b97aE
Arg [3] : _accountant (address): 0xA76E0F54918E39A63904b51F688513043242a0BE
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 000000000000000000000000d3dce716f3ef535c5ff8d041c1a41c3bd89b97ae
Arg [3] : 000000000000000000000000a76e0f54918e39a63904b51f688513043242a0be
Loading...
Loading
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.