ETH Price: $4,464.43 (-5.18%)

Contract

0x35bb522b102326ea3F1141661dF4626C87000e3E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To
Swap And Repay235333202025-10-08 13:26:5914 mins ago1759930019IN
Aave: Repay With Collateral V3
0 ETH0.000295780.35509098
Swap And Repay235333142025-10-08 13:25:4715 mins ago1759929947IN
Aave: Repay With Collateral V3
0 ETH0.000247420.33097531
Swap And Repay235333062025-10-08 13:24:1117 mins ago1759929851IN
Aave: Repay With Collateral V3
0 ETH0.000269830.34515639
Swap And Repay235329792025-10-08 12:18:111 hr ago1759925891IN
Aave: Repay With Collateral V3
0 ETH0.001388851.69709333
Swap And Repay235329532025-10-08 12:12:591 hr ago1759925579IN
Aave: Repay With Collateral V3
0 ETH0.001449361.68834094
Swap And Repay235329152025-10-08 12:05:111 hr ago1759925111IN
Aave: Repay With Collateral V3
0 ETH0.002263051.66481137
Swap And Repay235328972025-10-08 12:01:231 hr ago1759924883IN
Aave: Repay With Collateral V3
0 ETH0.002459041.68583373
Swap And Repay235328282025-10-08 11:47:231 hr ago1759924043IN
Aave: Repay With Collateral V3
0 ETH0.000174260.1700095
Swap And Repay235327682025-10-08 11:35:232 hrs ago1759923323IN
Aave: Repay With Collateral V3
0 ETH0.000202630.3243704
Swap And Repay235325512025-10-08 10:50:472 hrs ago1759920647IN
Aave: Repay With Collateral V3
0 ETH0.000023070.18240751
Swap And Repay235325512025-10-08 10:50:472 hrs ago1759920647IN
Aave: Repay With Collateral V3
0 ETH0.000023070.18240751
Swap And Repay235320312025-10-08 9:05:474 hrs ago1759914347IN
Aave: Repay With Collateral V3
0 ETH0.000888830.9861578
Swap And Repay235319702025-10-08 8:53:354 hrs ago1759913615IN
Aave: Repay With Collateral V3
0 ETH0.00228711.6961273
Swap And Repay235319652025-10-08 8:52:354 hrs ago1759913555IN
Aave: Repay With Collateral V3
0 ETH0.000174760.22102416
Swap And Repay235318482025-10-08 8:29:115 hrs ago1759912151IN
Aave: Repay With Collateral V3
0 ETH0.000887591.12253659
Swap And Repay235318312025-10-08 8:25:475 hrs ago1759911947IN
Aave: Repay With Collateral V3
0 ETH0.000100410.12531702
Swap And Repay235318092025-10-08 8:21:235 hrs ago1759911683IN
Aave: Repay With Collateral V3
0 ETH0.002056181.6353839
Swap And Repay235317902025-10-08 8:17:355 hrs ago1759911455IN
Aave: Repay With Collateral V3
0 ETH0.00123231.63298988
Swap And Repay235317082025-10-08 8:01:115 hrs ago1759910471IN
Aave: Repay With Collateral V3
0 ETH0.000091980.1190783
Swap And Repay235316582025-10-08 7:51:115 hrs ago1759909871IN
Aave: Repay With Collateral V3
0 ETH0.000158550.14078699
Swap And Repay235312272025-10-08 6:23:597 hrs ago1759904639IN
Aave: Repay With Collateral V3
0 ETH0.000750150.71787748
Swap And Repay235311992025-10-08 6:18:237 hrs ago1759904303IN
Aave: Repay With Collateral V3
0 ETH0.000191610.20368596
Swap And Repay235309592025-10-08 5:29:598 hrs ago1759901399IN
Aave: Repay With Collateral V3
0 ETH0.000784771.00506264
Swap And Repay235308572025-10-08 5:09:358 hrs ago1759900175IN
Aave: Repay With Collateral V3
0 ETH0.001722851.65431057
Swap And Repay235307962025-10-08 4:56:598 hrs ago1759899419IN
Aave: Repay With Collateral V3
0 ETH0.001653961.63413168
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions

Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ParaSwapRepayAdapter

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.10;
import {DataTypes} from 'aave-v3-core/contracts/protocol/libraries/types/DataTypes.sol';
import {IERC20Detailed} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol';
import {IERC20} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20.sol';
import {IERC20WithPermit} from 'aave-v3-core/contracts/interfaces/IERC20WithPermit.sol';
import {IPoolAddressesProvider} from 'aave-v3-core/contracts/interfaces/IPoolAddressesProvider.sol';
import {SafeERC20} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol';
import {SafeMath} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeMath.sol';
import {BaseParaSwapBuyAdapter} from './BaseParaSwapBuyAdapter.sol';
import {IParaSwapAugustusRegistry} from './interfaces/IParaSwapAugustusRegistry.sol';
import {IParaSwapAugustus} from './interfaces/IParaSwapAugustus.sol';
import {ReentrancyGuard} from '../../dependencies/openzeppelin/ReentrancyGuard.sol';
/**
* @title ParaSwapRepayAdapter
* @notice ParaSwap Adapter to perform a repay of a debt with collateral.
* @author Aave
**/
contract ParaSwapRepayAdapter is BaseParaSwapBuyAdapter, ReentrancyGuard {
using SafeMath for uint256;
using SafeERC20 for IERC20;
struct RepayParams {
address collateralAsset;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 22 : DataTypes.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library DataTypes {
/**
* This exists specifically to maintain the `getReserveData()` interface, since the new, internal
* `ReserveData` struct includes the reserve's `virtualUnderlyingBalance`.
*/
struct ReserveDataLegacy {
//stores the reserve configuration
ReserveConfigurationMap configuration;
//the liquidity index. Expressed in ray
uint128 liquidityIndex;
//the current supply rate. Expressed in ray
uint128 currentLiquidityRate;
//variable borrow index. Expressed in ray
uint128 variableBorrowIndex;
//the current variable borrow rate. Expressed in ray
uint128 currentVariableBorrowRate;
//the current stable borrow rate. Expressed in ray
uint128 currentStableBorrowRate;
//timestamp of last update
uint40 lastUpdateTimestamp;
//the id of the reserve. Represents the position in the list of the active reserves
uint16 id;
//aToken address
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import {IERC20} from './IERC20.sol';
interface IERC20Detailed is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

File 5 of 22 : IERC20WithPermit.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';
/**
* @title IERC20WithPermit
* @author Aave
* @notice Interface for the permit function (EIP-2612)
*/
interface IERC20WithPermit is IERC20 {
/**
* @notice Allow passing a signed message to approve spending
* @dev implements the permit function as for
* https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md
* @param owner The owner of the funds
* @param spender The spender
* @param value The amount
* @param deadline The deadline timestamp, type(uint256).max for max deadline
* @param v Signature param
* @param s Signature param
* @param r Signature param
*/
function permit(
address owner,
address spender,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title IPoolAddressesProvider
* @author Aave
* @notice Defines the basic interface for a Pool Addresses Provider.
*/
interface IPoolAddressesProvider {
/**
* @dev Emitted when the market identifier is updated.
* @param oldMarketId The old id of the market
* @param newMarketId The new id of the market
*/
event MarketIdSet(string indexed oldMarketId, string indexed newMarketId);
/**
* @dev Emitted when the pool is updated.
* @param oldAddress The old address of the Pool
* @param newAddress The new address of the Pool
*/
event PoolUpdated(address indexed oldAddress, address indexed newAddress);
/**
* @dev Emitted when the pool configurator is updated.
* @param oldAddress The old address of the PoolConfigurator
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import './IERC20.sol';
import './Address.sol';
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
/// @title Optimized overflow and underflow safe math operations
/// @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost
library SafeMath {
/// @notice Returns x + y, reverts if sum overflows uint256
/// @param x The augend
/// @param y The addend
/// @return z The sum of x and y
function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
unchecked {
require((z = x + y) >= x);
}
}
/// @notice Returns x - y, reverts if underflows
/// @param x The minuend
/// @param y The subtrahend
/// @return z The difference of x and y
function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
unchecked {
require((z = x - y) <= x);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 22 : BaseParaSwapBuyAdapter.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.10;
import {SafeERC20} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol';
import {SafeMath} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeMath.sol';
import {PercentageMath} from 'aave-v3-core/contracts/protocol/libraries/math/PercentageMath.sol';
import {IPoolAddressesProvider} from 'aave-v3-core/contracts/interfaces/IPoolAddressesProvider.sol';
import {IERC20Detailed} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol';
import {IParaSwapAugustus} from './interfaces/IParaSwapAugustus.sol';
import {IParaSwapAugustusRegistry} from './interfaces/IParaSwapAugustusRegistry.sol';
import {BaseParaSwapAdapter} from './BaseParaSwapAdapter.sol';
/**
* @title BaseParaSwapBuyAdapter
* @notice Implements the logic for buying tokens on ParaSwap
*/
abstract contract BaseParaSwapBuyAdapter is BaseParaSwapAdapter {
using PercentageMath for uint256;
using SafeMath for uint256;
using SafeERC20 for IERC20Detailed;
IParaSwapAugustusRegistry public immutable AUGUSTUS_REGISTRY;
constructor(
IPoolAddressesProvider addressesProvider,
IParaSwapAugustusRegistry augustusRegistry
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
interface IParaSwapAugustusRegistry {
function isValidAugustus(address augustus) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
interface IParaSwapAugustus {
function getTokenTransferProxy() external view returns (address);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 22 : ReentrancyGuard.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)
pragma solidity ^0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
/**
* @title PercentageMath library
* @author Aave
* @notice Provides functions to perform percentage calculations
* @dev Percentages are defined by default with 2 decimals of precision (100.00). The precision is indicated by PERCENTAGE_FACTOR
* @dev Operations are rounded. If a value is >=.5, will be rounded up, otherwise rounded down.
*/
library PercentageMath {
// Maximum percentage factor (100.00%)
uint256 internal constant PERCENTAGE_FACTOR = 1e4;
// Half percentage factor (50.00%)
uint256 internal constant HALF_PERCENTAGE_FACTOR = 0.5e4;
/**
* @notice Executes a percentage multiplication
* @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
* @param value The value of which the percentage needs to be calculated
* @param percentage The percentage of the value to be calculated
* @return result value percentmul percentage
*/
function percentMul(uint256 value, uint256 percentage) internal pure returns (uint256 result) {
// to avoid overflow, value <= (type(uint256).max - HALF_PERCENTAGE_FACTOR) / percentage
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.10;
import {DataTypes} from 'aave-v3-core/contracts/protocol/libraries/types/DataTypes.sol';
import {FlashLoanSimpleReceiverBase} from 'aave-v3-core/contracts/flashloan/base/FlashLoanSimpleReceiverBase.sol';
import {GPv2SafeERC20} from 'aave-v3-core/contracts/dependencies/gnosis/contracts/GPv2SafeERC20.sol';
import {IERC20} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20.sol';
import {IERC20Detailed} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol';
import {IERC20WithPermit} from 'aave-v3-core/contracts/interfaces/IERC20WithPermit.sol';
import {IPoolAddressesProvider} from 'aave-v3-core/contracts/interfaces/IPoolAddressesProvider.sol';
import {IPriceOracleGetter} from 'aave-v3-core/contracts/interfaces/IPriceOracleGetter.sol';
import {SafeMath} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/SafeMath.sol';
import {Ownable} from 'aave-v3-core/contracts/dependencies/openzeppelin/contracts/Ownable.sol';
/**
* @title BaseParaSwapAdapter
* @notice Utility functions for adapters using ParaSwap
* @author Jason Raymond Bell
*/
abstract contract BaseParaSwapAdapter is FlashLoanSimpleReceiverBase, Ownable {
using SafeMath for uint256;
using GPv2SafeERC20 for IERC20;
using GPv2SafeERC20 for IERC20Detailed;
using GPv2SafeERC20 for IERC20WithPermit;
struct PermitSignature {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 22 : FlashLoanSimpleReceiverBase.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import {IFlashLoanSimpleReceiver} from '../interfaces/IFlashLoanSimpleReceiver.sol';
import {IPoolAddressesProvider} from '../../interfaces/IPoolAddressesProvider.sol';
import {IPool} from '../../interfaces/IPool.sol';
/**
* @title FlashLoanSimpleReceiverBase
* @author Aave
* @notice Base contract to develop a flashloan-receiver contract.
*/
abstract contract FlashLoanSimpleReceiverBase is IFlashLoanSimpleReceiver {
IPoolAddressesProvider public immutable override ADDRESSES_PROVIDER;
IPool public immutable override POOL;
constructor(IPoolAddressesProvider provider) {
ADDRESSES_PROVIDER = provider;
POOL = IPool(provider.getPool());
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: LGPL-3.0-or-later
pragma solidity ^0.8.10;
import {IERC20} from '../../openzeppelin/contracts/IERC20.sol';
/// @title Gnosis Protocol v2 Safe ERC20 Transfer Library
/// @author Gnosis Developers
/// @dev Gas-efficient version of Openzeppelin's SafeERC20 contract.
library GPv2SafeERC20 {
/// @dev Wrapper around a call to the ERC20 function `transfer` that reverts
/// also when the token returns `false`.
function safeTransfer(IERC20 token, address to, uint256 value) internal {
bytes4 selector_ = token.transfer.selector;
// solhint-disable-next-line no-inline-assembly
assembly {
let freeMemoryPointer := mload(0x40)
mstore(freeMemoryPointer, selector_)
mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff))
mstore(add(freeMemoryPointer, 36), value)
if iszero(call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)) {
returndatacopy(0, 0, returndatasize())
revert(0, returndatasize())
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title IPriceOracleGetter
* @author Aave
* @notice Interface for the Aave price oracle.
*/
interface IPriceOracleGetter {
/**
* @notice Returns the base currency address
* @dev Address 0x0 is reserved for USD as base currency.
* @return Returns the base currency address.
*/
function BASE_CURRENCY() external view returns (address);
/**
* @notice Returns the base currency unit
* @dev 1 ether for ETH, 1e8 for USD.
* @return Returns the base currency unit.
*/
function BASE_CURRENCY_UNIT() external view returns (uint256);
/**
* @notice Returns the asset price in the base currency
* @param asset The address of the asset
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
import './Context.sol';
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IPoolAddressesProvider} from '../../interfaces/IPoolAddressesProvider.sol';
import {IPool} from '../../interfaces/IPool.sol';
/**
* @title IFlashLoanSimpleReceiver
* @author Aave
* @notice Defines the basic interface of a flashloan-receiver contract.
* @dev Implement this interface to develop a flashloan-compatible flashLoanReceiver contract
*/
interface IFlashLoanSimpleReceiver {
/**
* @notice Executes an operation after receiving the flash-borrowed asset
* @dev Ensure that the contract can return the debt + premium, e.g., has
* enough funds to repay and has approved the Pool to pull the total amount
* @param asset The address of the flash-borrowed asset
* @param amount The amount of the flash-borrowed asset
* @param premium The fee of the flash-borrowed asset
* @param initiator The address of the flashloan initiator
* @param params The byte-encoded params passed when initiating the flashloan
* @return True if the execution of the operation succeeds, false otherwise
*/
function executeOperation(
address asset,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 21 of 22 : IPool.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';
import {DataTypes} from '../protocol/libraries/types/DataTypes.sol';
/**
* @title IPool
* @author Aave
* @notice Defines the basic interface for an Aave Pool.
*/
interface IPool {
/**
* @dev Emitted on mintUnbacked()
* @param reserve The address of the underlying asset of the reserve
* @param user The address initiating the supply
* @param onBehalfOf The beneficiary of the supplied assets, receiving the aTokens
* @param amount The amount of supplied assets
* @param referralCode The referral code used
*/
event MintUnbacked(
address indexed reserve,
address user,
address indexed onBehalfOf,
uint256 amount,
uint16 indexed referralCode
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"remappings": [
"aave-v3-core/=src/core/",
"aave-v3-periphery/=src/periphery/",
"solidity-utils/=lib/solidity-utils/src/",
"forge-std/=lib/forge-std/src/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"@openzeppelin/contracts-upgradeable/=lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
"erc4626-tests/=lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"openzeppelin-contracts-upgradeable/=lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/solidity-utils/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"addressesProvider","type":"address"},{"internalType":"contract IParaSwapAugustusRegistry","name":"augustusRegistry","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromAsset","type":"address"},{"indexed":true,"internalType":"address","name":"toAsset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedAmount","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fromAsset","type":"address"},{"indexed":true,"internalType":"address","name":"toAsset","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedAmount","type":"uint256"}],"name":"Swapped","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AUGUSTUS_REGISTRY","outputs":[{"internalType":"contract IParaSwapAugustusRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SLIPPAGE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE","outputs":[{"internalType":"contract IPriceOracleGetter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL","outputs":[{"internalType":"contract IPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"},{"internalType":"address","name":"initiator","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"executeOperation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20Detailed","name":"collateralAsset","type":"address"},{"internalType":"contract IERC20Detailed","name":"debtAsset","type":"address"},{"internalType":"uint256","name":"collateralAmount","type":"uint256"},{"internalType":"uint256","name":"debtRepayAmount","type":"uint256"},{"internalType":"uint256","name":"debtRateMode","type":"uint256"},{"internalType":"uint256","name":"buyAllBalanceOffset","type":"uint256"},{"internalType":"bytes","name":"paraswapData","type":"bytes"},{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct BaseParaSwapAdapter.PermitSignature","name":"permitSignature","type":"tuple"}],"name":"swapAndRepay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101006040523480156200001257600080fd5b50604051620029d2380380620029d283398101604081905262000035916200036c565b82828180806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000092573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b89190620003c0565b6001600160a01b031660a05250600080546001600160a01b03191633908117825560405190918291600080516020620029b2833981519152908290a350806001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015a9190620003c0565b6001600160a01b0390811660c05260405163fb04e17b60e01b815260006004820152908316915063fb04e17b90602401602060405180830381865afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce9190620003e7565b15620002215760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420612076616c696420417567757374757320616464726573730000000060448201526064015b60405180910390fd5b6001600160a01b031660e05250600180556200023d8162000246565b5050506200040b565b6000546001600160a01b03163314620002a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000218565b6001600160a01b038116620003095760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000218565b600080546040516001600160a01b0380851693921691600080516020620029b283398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146200036957600080fd5b50565b6000806000606084860312156200038257600080fd5b83516200038f8162000353565b6020850151909350620003a28162000353565b6040850151909250620003b58162000353565b809150509250925092565b600060208284031215620003d357600080fd5b8151620003e08162000353565b9392505050565b600060208284031215620003fa57600080fd5b81518015158114620003e057600080fd5b60805160a05160c05160e0516124fe620004b46000396000818161016c0152610cbd01526000818161014501526118bc0152600081816101ae0152818161031c015281816104a0015281816104f80152818161056401528181610599015281816105f10152818161066e015281816109110152818161096b015281816109e801528181610a6001528181610a8b015281816115cd01526117230152600060c701526124fe6000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c80633a829867116100715780633a829867146101675780634db9dc971461018e578063715018a6146101a15780637535d246146101a95780638da5cb5b146101d0578063f2fde38b146101e157600080fd5b8062ae3bf8146100ad5780630542975c146100c25780631b11d0ff1461010657806332e4b2861461012957806338013f0214610140575b600080fd5b6100c06100bb366004611c96565b6101f4565b005b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b610119610114366004611cfc565b6102b8565b60405190151581526020016100fd565b610132610bb881565b6040519081526020016100fd565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6100c061019c366004611d78565b6103a3565b6100c06106cf565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100e9565b6100c06101ef366004611c96565b610743565b6000546001600160a01b031633146102275760405162461bcd60e51b815260040161021e90611e23565b60405180910390fd5b6102b561023c6000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a49190611e58565b6001600160a01b038416919061082d565b50565b600060026001540361030c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161021e565b6002600155336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461037f5760405162461bcd60e51b815260206004820152601360248201527210d05313115497d35554d517d09157d413d3d3606a1b604482015260640161021e565b85848861039086868a8585886108be565b5050600180805598975050505050505050565b6002600154036103f55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161021e565b60026001556104078886868933610adf565b955061042389338961041e36869003860186611f6c565b610c58565b6000806104788686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d8d610c7e565b90925090506000610489838b611f9e565b9050801561058a576104c56001600160a01b038d167f0000000000000000000000000000000000000000000000000000000000000000836112f3565b60405163e8eda9df60e01b81526001600160a01b038d8116600483015260248201839052336044830152600060648301527f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df90608401600060405180830381600087803b15801561053c57600080fd5b505af1158015610550573d6000803e3d6000fd5b5061058a925050506001600160a01b038d167f000000000000000000000000000000000000000000000000000000000000000060006112f3565b6105be6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b6112f3565b60405163573ade8160e01b81526001600160a01b038c81166004830152602482018b9052604482018a90523360648301527f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906084016020604051808303816000875af115801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190611e58565b506106946001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000060006112f3565b60006106a08a84611f9e565b905080156106bc576106bc6001600160a01b038d163383611440565b5050600180555050505050505050505050565b6000546001600160a01b031633146106f95760405162461bcd60e51b815260040161021e90611e23565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461076d5760405162461bcd60e51b815260040161021e90611e23565b6001600160a01b0381166107d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405163a9059cbb60e01b8082526001600160a01b0384166004830152602482018390529060008060448382895af161086a573d6000803e3d6000fd5b5061087484611470565b6108b85760405162461bcd60e51b815260206004820152601560248201527423a83b191d103330b4b632b2103a3930b739b332b960591b604482015260640161021e565b50505050565b600080808080806108d18b8d018d611fd9565b9550955095509550955095506108ea868486888d610adf565b94506000806108fd86858c8b8d8c610c7e565b90925090506109366001600160a01b0389167f0000000000000000000000000000000000000000000000000000000000000000896112f3565b60405163573ade8160e01b81526001600160a01b03898116600483015260248201899052604482018790528c811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906084016020604051808303816000875af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611e58565b50610a0e6001600160a01b0389167f000000000000000000000000000000000000000000000000000000000000000060006112f3565b6000610a1a838e611518565b9050610a288b8d8387610c58565b6000610a348984611f9e565b90508015610a5057610a506001600160a01b038b168e83611440565b50610a866001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000060006112f3565b610ace7f0000000000000000000000000000000000000000000000000000000000000000610abd8f8d61151890919063ffffffff16565b6001600160a01b038e1691906112f3565b505050505050505050505050505050565b600080610aeb8761152e565b905060006001876002811115610b0357610b0361209a565b6002811115610b1457610b1461209a565b14610b2457816101400151610b2b565b8161012001515b6040516370a0823160e01b81526001600160a01b0386811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611e58565b90508615610bfb5785811115610bf35760405162461bcd60e51b815260206004820152601c60248201527f494e53554646494349454e545f414d4f554e545f544f5f524550415900000000604482015260640161021e565b809550610c4b565b80861115610c4b5760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f444542545f52455041595f414d4f554e5400000000000000604482015260640161021e565b5093979650505050505050565b6000610c638561152e565b61010001519050610c778582868686611639565b5050505050565b60008060008088806020019051810190610c9891906120d4565b60405163fb04e17b60e01b81526001600160a01b0380831660048301529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063fb04e17b90602401602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190612162565b610d695760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f415547555354555360801b604482015260640161021e565b6000610d74896117df565b60ff1690506000610d84896117df565b60ff1690506000610d948b61189a565b90506000610da18b61189a565b90506000610df9610db6612710610bb8611518565b610df3610dce610dc788600a612268565b8790611929565b610ded610de6610ddf8b600a612268565b8890611929565b8f90611929565b90611953565b90611966565b9050808b1115610e575760405162461bcd60e51b815260206004820152602360248201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060448201526261676560e81b606482015260840161021e565b50506040516370a0823160e01b8152306004820152600093506001600160a01b038c1692506370a082319150602401602060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190611e58565b905086811015610f195760405162461bcd60e51b815260206004820181905260248201527f494e53554646494349454e545f42414c414e43455f4245464f52455f53574150604482015260640161021e565b6040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190611e58565b90506000836001600160a01b031663d2c4b5986040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea9190612284565b90506110006001600160a01b038c16828b6112f3565b8c156110785760048d101580156110235750845161101f90602061198c565b8d11155b61106f5760405162461bcd60e51b815260206004820152601d60248201527f544f5f414d4f554e545f4f46465345545f4f55545f4f465f52414e4745000000604482015260640161021e565b8760208e018601525b6000846001600160a01b03168660405161109291906122a1565b6000604051808303816000865af19150503d80600081146110cf576040519150601f19603f3d011682016040523d82523d6000602084013e6110d4565b606091505b50509050806110e7573d6000803e3d6000fd5b6110fc6001600160a01b038d168360006112f3565b6040516370a0823160e01b81523060048201526000906001600160a01b038e16906370a0823190602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611e58565b90506111738186611f9e565b98508a8911156111c55760405162461bcd60e51b815260206004820152601860248201527f57524f4e475f42414c414e43455f41465445525f535741500000000000000000604482015260640161021e565b6040516370a0823160e01b81523060048201526112399085906001600160a01b038f16906370a0823190602401602060405180830381865afa15801561120f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112339190611e58565b9061198c565b97508988101561128b5760405162461bcd60e51b815260206004820152601c60248201527f494e53554646494349454e545f414d4f554e545f524543454956454400000000604482015260640161021e565b8b6001600160a01b03168d6001600160a01b03167fbf77fd13a39d14dc0da779342c14105c38d9a5d0c60f2caa22f5fd1d5525416d8b8b6040516112d9929190918252602082015260400190565b60405180910390a350505050505050965096945050505050565b80158061136d5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611e58565b155b6113d85760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161021e565b6040516001600160a01b03831660248201526044810182905261143b90849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261199c565b505050565b6040516001600160a01b03831660248201526044810182905261143b90849063a9059cbb60e01b90606401611404565b6000611495565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d80156114d45760208114611505576114cf7f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f611477565b611512565b823b6114fc576114fc7311d41d8c8e881b9bdd08184818dbdb9d1c9858dd60621b6014611477565b60019150611512565b3d6000803e600051151591505b50919050565b8082018281101561152857600080fd5b92915050565b604080516102008101825260006101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190612346565b6020810151156116e0578051602082015160408084015160608501516080860151925163d505accf60e01b81526001600160a01b0389811660048301523060248301526044820196909652606481019490945260ff909116608484015260a483015260c48201529085169063d505accf9060e401600060405180830381600087803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050505b6116f56001600160a01b038516843085611a6e565b604051631a4ca37b60e21b81526001600160a01b0386811660048301526024820184905230604483015283917f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec906064016020604051808303816000875af115801561176e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117929190611e58565b14610c775760405162461bcd60e51b815260206004820152601b60248201527f554e45585045435445445f414d4f554e545f57495448445241574e0000000000604482015260640161021e565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190612469565b9050604d8160ff1611156115285760405162461bcd60e51b815260206004820152601a60248201527f544f4f5f4d414e595f444543494d414c535f4f4e5f544f4b454e000000000000604482015260640161021e565b60405163b3596f0760e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063b3596f0790602401602060405180830381865afa158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190611e58565b600082158061194a5750508181028183828161194757611947612486565b04145b61152857600080fd5b600061195f828461249c565b9392505050565b60008115611388198390048411151761197e57600080fd5b506127109102611388010490565b8082038281111561152857600080fd5b60006119f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b099092919063ffffffff16565b80519091501561143b5780806020019051810190611a0f9190612162565b61143b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161021e565b6040516323b872dd60e01b8082526001600160a01b038581166004840152841660248301526044820183905290600080606483828a5af1611ab3573d6000803e3d6000fd5b50611abd85611470565b610c775760405162461bcd60e51b815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d00000000000000604482015260640161021e565b6060611b188484600085611b20565b949350505050565b606082471015611b815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161021e565b843b611bcf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161021e565b600080866001600160a01b03168587604051611beb91906122a1565b60006040518083038185875af1925050503d8060008114611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b5091509150611c3d828286611c48565b979650505050505050565b60608315611c5757508161195f565b825115611c675782518084602001fd5b8160405162461bcd60e51b815260040161021e91906124be565b6001600160a01b03811681146102b557600080fd5b600060208284031215611ca857600080fd5b813561195f81611c81565b60008083601f840112611cc557600080fd5b50813567ffffffffffffffff811115611cdd57600080fd5b602083019150836020828501011115611cf557600080fd5b9250929050565b60008060008060008060a08789031215611d1557600080fd5b8635611d2081611c81565b955060208701359450604087013593506060870135611d3e81611c81565b9250608087013567ffffffffffffffff811115611d5a57600080fd5b611d6689828a01611cb3565b979a9699509497509295939492505050565b6000806000806000806000806000898b03610180811215611d9857600080fd5b8a35611da381611c81565b995060208b0135611db381611c81565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff811115611deb57600080fd5b611df78d828e01611cb3565b90955093505060a060df1982011215611e0f57600080fd5b5060e08a0190509295985092959850929598565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611e6a57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff81118282101715611eab57611eab611e71565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611eda57611eda611e71565b604052919050565b60ff811681146102b557600080fd5b600060a08284031215611f0357600080fd5b60405160a0810181811067ffffffffffffffff82111715611f2657611f26611e71565b806040525080915082358152602083013560208201526040830135611f4a81611ee2565b8060408301525060608301356060820152608083013560808201525092915050565b600060a08284031215611f7e57600080fd5b61195f8383611ef1565b634e487b7160e01b600052601160045260246000fd5b8181038181111561152857611528611f88565b600067ffffffffffffffff821115611fcb57611fcb611e71565b50601f01601f191660200190565b6000806000806000806101408789031215611ff357600080fd5b8635611ffe81611c81565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561202f57600080fd5b8701601f8101891361204057600080fd5b803561205361204e82611fb1565b611eb1565b8181528a602083850101111561206857600080fd5b8160208401602083013760006020838301015280945050505061208e8860a08901611ef1565b90509295509295509295565b634e487b7160e01b600052602160045260246000fd5b60005b838110156120cb5781810151838201526020016120b3565b50506000910152565b600080604083850312156120e757600080fd5b825167ffffffffffffffff8111156120fe57600080fd5b8301601f8101851361210f57600080fd5b805161211d61204e82611fb1565b81815286602083850101111561213257600080fd5b6121438260208301602086016120b0565b809450505050602083015161215781611c81565b809150509250929050565b60006020828403121561217457600080fd5b8151801515811461195f57600080fd5b600181815b808511156121bf5781600019048211156121a5576121a5611f88565b808516156121b257918102915b93841c9390800290612189565b509250929050565b6000826121d657506001611528565b816121e357506000611528565b81600181146121f957600281146122035761221f565b6001915050611528565b60ff84111561221457612214611f88565b50506001821b611528565b5060208310610133831016604e8410600b8410161715612242575081810a611528565b61224c8383612184565b806000190482111561226057612260611f88565b029392505050565b600061195f83836121c7565b805161227f81611c81565b919050565b60006020828403121561229657600080fd5b815161195f81611c81565b600082516122b38184602087016120b0565b9190910192915050565b6000602082840312156122cf57600080fd5b6040516020810181811067ffffffffffffffff821117156122f2576122f2611e71565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461227f57600080fd5b805164ffffffffff8116811461227f57600080fd5b805161ffff8116811461227f57600080fd5b60006101e0828403121561235957600080fd5b612361611e87565b61236b84846122bd565b8152612379602084016122ff565b602082015261238a604084016122ff565b604082015261239b606084016122ff565b60608201526123ac608084016122ff565b60808201526123bd60a084016122ff565b60a08201526123ce60c0840161231f565b60c08201526123df60e08401612334565b60e08201526101006123f2818501612274565b90820152610120612404848201612274565b90820152610140612416848201612274565b90820152610160612428848201612274565b9082015261018061243a8482016122ff565b908201526101a061244c8482016122ff565b908201526101c061245e8482016122ff565b908201529392505050565b60006020828403121561247b57600080fd5b815161195f81611ee2565b634e487b7160e01b600052601260045260246000fd5b6000826124b957634e487b7160e01b600052601260045260246000fd5b500490565b60208152600082518060208401526124dd8160408501602087016120b0565b601f01601f1916919091016040019291505056fea164736f6c6343000813000a8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e000000000000000000000000a68bea62dc4034a689aa0f58a76681433caca66300000000000000000000000057dc6c401819ea097db8d4b66d8e35cda0277a73

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a85760003560e01c80633a829867116100715780633a829867146101675780634db9dc971461018e578063715018a6146101a15780637535d246146101a95780638da5cb5b146101d0578063f2fde38b146101e157600080fd5b8062ae3bf8146100ad5780630542975c146100c25780631b11d0ff1461010657806332e4b2861461012957806338013f0214610140575b600080fd5b6100c06100bb366004611c96565b6101f4565b005b6100e97f0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e81565b6040516001600160a01b0390911681526020015b60405180910390f35b610119610114366004611cfc565b6102b8565b60405190151581526020016100fd565b610132610bb881565b6040519081526020016100fd565b6100e97f00000000000000000000000054586be62e3c3580375ae3723c145253060ca0c281565b6100e97f000000000000000000000000a68bea62dc4034a689aa0f58a76681433caca66381565b6100c061019c366004611d78565b6103a3565b6100c06106cf565b6100e97f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e281565b6000546001600160a01b03166100e9565b6100c06101ef366004611c96565b610743565b6000546001600160a01b031633146102275760405162461bcd60e51b815260040161021e90611e23565b60405180910390fd5b6102b561023c6000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a49190611e58565b6001600160a01b038416919061082d565b50565b600060026001540361030c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161021e565b6002600155336001600160a01b037f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2161461037f5760405162461bcd60e51b815260206004820152601360248201527210d05313115497d35554d517d09157d413d3d3606a1b604482015260640161021e565b85848861039086868a8585886108be565b5050600180805598975050505050505050565b6002600154036103f55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161021e565b60026001556104078886868933610adf565b955061042389338961041e36869003860186611f6c565b610c58565b6000806104788686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d8d610c7e565b90925090506000610489838b611f9e565b9050801561058a576104c56001600160a01b038d167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2836112f3565b60405163e8eda9df60e01b81526001600160a01b038d8116600483015260248201839052336044830152600060648301527f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2169063e8eda9df90608401600060405180830381600087803b15801561053c57600080fd5b505af1158015610550573d6000803e3d6000fd5b5061058a925050506001600160a01b038d167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e260006112f3565b6105be6001600160a01b038c167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e28b6112f3565b60405163573ade8160e01b81526001600160a01b038c81166004830152602482018b9052604482018a90523360648301527f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2169063573ade81906084016020604051808303816000875af115801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190611e58565b506106946001600160a01b038c167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e260006112f3565b60006106a08a84611f9e565b905080156106bc576106bc6001600160a01b038d163383611440565b5050600180555050505050505050505050565b6000546001600160a01b031633146106f95760405162461bcd60e51b815260040161021e90611e23565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461076d5760405162461bcd60e51b815260040161021e90611e23565b6001600160a01b0381166107d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60405163a9059cbb60e01b8082526001600160a01b0384166004830152602482018390529060008060448382895af161086a573d6000803e3d6000fd5b5061087484611470565b6108b85760405162461bcd60e51b815260206004820152601560248201527423a83b191d103330b4b632b2103a3930b739b332b960591b604482015260640161021e565b50505050565b600080808080806108d18b8d018d611fd9565b9550955095509550955095506108ea868486888d610adf565b94506000806108fd86858c8b8d8c610c7e565b90925090506109366001600160a01b0389167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2896112f3565b60405163573ade8160e01b81526001600160a01b03898116600483015260248201899052604482018790528c811660648301527f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2169063573ade81906084016020604051808303816000875af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611e58565b50610a0e6001600160a01b0389167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e260006112f3565b6000610a1a838e611518565b9050610a288b8d8387610c58565b6000610a348984611f9e565b90508015610a5057610a506001600160a01b038b168e83611440565b50610a866001600160a01b038c167f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e260006112f3565b610ace7f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2610abd8f8d61151890919063ffffffff16565b6001600160a01b038e1691906112f3565b505050505050505050505050505050565b600080610aeb8761152e565b905060006001876002811115610b0357610b0361209a565b6002811115610b1457610b1461209a565b14610b2457816101400151610b2b565b8161012001515b6040516370a0823160e01b81526001600160a01b0386811660048301529192506000918316906370a0823190602401602060405180830381865afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611e58565b90508615610bfb5785811115610bf35760405162461bcd60e51b815260206004820152601c60248201527f494e53554646494349454e545f414d4f554e545f544f5f524550415900000000604482015260640161021e565b809550610c4b565b80861115610c4b5760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f444542545f52455041595f414d4f554e5400000000000000604482015260640161021e565b5093979650505050505050565b6000610c638561152e565b61010001519050610c778582868686611639565b5050505050565b60008060008088806020019051810190610c9891906120d4565b60405163fb04e17b60e01b81526001600160a01b0380831660048301529294509092507f000000000000000000000000a68bea62dc4034a689aa0f58a76681433caca6639091169063fb04e17b90602401602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190612162565b610d695760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f415547555354555360801b604482015260640161021e565b6000610d74896117df565b60ff1690506000610d84896117df565b60ff1690506000610d948b61189a565b90506000610da18b61189a565b90506000610df9610db6612710610bb8611518565b610df3610dce610dc788600a612268565b8790611929565b610ded610de6610ddf8b600a612268565b8890611929565b8f90611929565b90611953565b90611966565b9050808b1115610e575760405162461bcd60e51b815260206004820152602360248201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060448201526261676560e81b606482015260840161021e565b50506040516370a0823160e01b8152306004820152600093506001600160a01b038c1692506370a082319150602401602060405180830381865afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190611e58565b905086811015610f195760405162461bcd60e51b815260206004820181905260248201527f494e53554646494349454e545f42414c414e43455f4245464f52455f53574150604482015260640161021e565b6040516370a0823160e01b81523060048201526000906001600160a01b038a16906370a0823190602401602060405180830381865afa158015610f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f849190611e58565b90506000836001600160a01b031663d2c4b5986040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea9190612284565b90506110006001600160a01b038c16828b6112f3565b8c156110785760048d101580156110235750845161101f90602061198c565b8d11155b61106f5760405162461bcd60e51b815260206004820152601d60248201527f544f5f414d4f554e545f4f46465345545f4f55545f4f465f52414e4745000000604482015260640161021e565b8760208e018601525b6000846001600160a01b03168660405161109291906122a1565b6000604051808303816000865af19150503d80600081146110cf576040519150601f19603f3d011682016040523d82523d6000602084013e6110d4565b606091505b50509050806110e7573d6000803e3d6000fd5b6110fc6001600160a01b038d168360006112f3565b6040516370a0823160e01b81523060048201526000906001600160a01b038e16906370a0823190602401602060405180830381865afa158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111679190611e58565b90506111738186611f9e565b98508a8911156111c55760405162461bcd60e51b815260206004820152601860248201527f57524f4e475f42414c414e43455f41465445525f535741500000000000000000604482015260640161021e565b6040516370a0823160e01b81523060048201526112399085906001600160a01b038f16906370a0823190602401602060405180830381865afa15801561120f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112339190611e58565b9061198c565b97508988101561128b5760405162461bcd60e51b815260206004820152601c60248201527f494e53554646494349454e545f414d4f554e545f524543454956454400000000604482015260640161021e565b8b6001600160a01b03168d6001600160a01b03167fbf77fd13a39d14dc0da779342c14105c38d9a5d0c60f2caa22f5fd1d5525416d8b8b6040516112d9929190918252602082015260400190565b60405180910390a350505050505050965096945050505050565b80158061136d5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611e58565b155b6113d85760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161021e565b6040516001600160a01b03831660248201526044810182905261143b90849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261199c565b505050565b6040516001600160a01b03831660248201526044810182905261143b90849063a9059cbb60e01b90606401611404565b6000611495565b62461bcd60e51b600052602060045280602452508060445260646000fd5b3d80156114d45760208114611505576114cf7f475076323a206d616c666f726d6564207472616e7366657220726573756c7400601f611477565b611512565b823b6114fc576114fc7311d41d8c8e881b9bdd08184818dbdb9d1c9858dd60621b6014611477565b60019150611512565b3d6000803e600051151591505b50919050565b8082018281101561152857600080fd5b92915050565b604080516102008101825260006101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b0383811660048301527f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e216906335ea6a75906024016101e060405180830381865afa158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190612346565b6020810151156116e0578051602082015160408084015160608501516080860151925163d505accf60e01b81526001600160a01b0389811660048301523060248301526044820196909652606481019490945260ff909116608484015260a483015260c48201529085169063d505accf9060e401600060405180830381600087803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050505b6116f56001600160a01b038516843085611a6e565b604051631a4ca37b60e21b81526001600160a01b0386811660048301526024820184905230604483015283917f00000000000000000000000087870bca3f3fd6335c3f4ce8392d69350b4fa4e2909116906369328dec906064016020604051808303816000875af115801561176e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117929190611e58565b14610c775760405162461bcd60e51b815260206004820152601b60248201527f554e45585045435445445f414d4f554e545f57495448445241574e0000000000604482015260640161021e565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118449190612469565b9050604d8160ff1611156115285760405162461bcd60e51b815260206004820152601a60248201527f544f4f5f4d414e595f444543494d414c535f4f4e5f544f4b454e000000000000604482015260640161021e565b60405163b3596f0760e01b81526001600160a01b0382811660048301526000917f00000000000000000000000054586be62e3c3580375ae3723c145253060ca0c29091169063b3596f0790602401602060405180830381865afa158015611905573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115289190611e58565b600082158061194a5750508181028183828161194757611947612486565b04145b61152857600080fd5b600061195f828461249c565b9392505050565b60008115611388198390048411151761197e57600080fd5b506127109102611388010490565b8082038281111561152857600080fd5b60006119f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b099092919063ffffffff16565b80519091501561143b5780806020019051810190611a0f9190612162565b61143b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161021e565b6040516323b872dd60e01b8082526001600160a01b038581166004840152841660248301526044820183905290600080606483828a5af1611ab3573d6000803e3d6000fd5b50611abd85611470565b610c775760405162461bcd60e51b815260206004820152601960248201527f475076323a206661696c6564207472616e7366657246726f6d00000000000000604482015260640161021e565b6060611b188484600085611b20565b949350505050565b606082471015611b815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161021e565b843b611bcf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161021e565b600080866001600160a01b03168587604051611beb91906122a1565b60006040518083038185875af1925050503d8060008114611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b5091509150611c3d828286611c48565b979650505050505050565b60608315611c5757508161195f565b825115611c675782518084602001fd5b8160405162461bcd60e51b815260040161021e91906124be565b6001600160a01b03811681146102b557600080fd5b600060208284031215611ca857600080fd5b813561195f81611c81565b60008083601f840112611cc557600080fd5b50813567ffffffffffffffff811115611cdd57600080fd5b602083019150836020828501011115611cf557600080fd5b9250929050565b60008060008060008060a08789031215611d1557600080fd5b8635611d2081611c81565b955060208701359450604087013593506060870135611d3e81611c81565b9250608087013567ffffffffffffffff811115611d5a57600080fd5b611d6689828a01611cb3565b979a9699509497509295939492505050565b6000806000806000806000806000898b03610180811215611d9857600080fd5b8a35611da381611c81565b995060208b0135611db381611c81565b985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b013567ffffffffffffffff811115611deb57600080fd5b611df78d828e01611cb3565b90955093505060a060df1982011215611e0f57600080fd5b5060e08a0190509295985092959850929598565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611e6a57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff81118282101715611eab57611eab611e71565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611eda57611eda611e71565b604052919050565b60ff811681146102b557600080fd5b600060a08284031215611f0357600080fd5b60405160a0810181811067ffffffffffffffff82111715611f2657611f26611e71565b806040525080915082358152602083013560208201526040830135611f4a81611ee2565b8060408301525060608301356060820152608083013560808201525092915050565b600060a08284031215611f7e57600080fd5b61195f8383611ef1565b634e487b7160e01b600052601160045260246000fd5b8181038181111561152857611528611f88565b600067ffffffffffffffff821115611fcb57611fcb611e71565b50601f01601f191660200190565b6000806000806000806101408789031215611ff357600080fd5b8635611ffe81611c81565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff81111561202f57600080fd5b8701601f8101891361204057600080fd5b803561205361204e82611fb1565b611eb1565b8181528a602083850101111561206857600080fd5b8160208401602083013760006020838301015280945050505061208e8860a08901611ef1565b90509295509295509295565b634e487b7160e01b600052602160045260246000fd5b60005b838110156120cb5781810151838201526020016120b3565b50506000910152565b600080604083850312156120e757600080fd5b825167ffffffffffffffff8111156120fe57600080fd5b8301601f8101851361210f57600080fd5b805161211d61204e82611fb1565b81815286602083850101111561213257600080fd5b6121438260208301602086016120b0565b809450505050602083015161215781611c81565b809150509250929050565b60006020828403121561217457600080fd5b8151801515811461195f57600080fd5b600181815b808511156121bf5781600019048211156121a5576121a5611f88565b808516156121b257918102915b93841c9390800290612189565b509250929050565b6000826121d657506001611528565b816121e357506000611528565b81600181146121f957600281146122035761221f565b6001915050611528565b60ff84111561221457612214611f88565b50506001821b611528565b5060208310610133831016604e8410600b8410161715612242575081810a611528565b61224c8383612184565b806000190482111561226057612260611f88565b029392505050565b600061195f83836121c7565b805161227f81611c81565b919050565b60006020828403121561229657600080fd5b815161195f81611c81565b600082516122b38184602087016120b0565b9190910192915050565b6000602082840312156122cf57600080fd5b6040516020810181811067ffffffffffffffff821117156122f2576122f2611e71565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461227f57600080fd5b805164ffffffffff8116811461227f57600080fd5b805161ffff8116811461227f57600080fd5b60006101e0828403121561235957600080fd5b612361611e87565b61236b84846122bd565b8152612379602084016122ff565b602082015261238a604084016122ff565b604082015261239b606084016122ff565b60608201526123ac608084016122ff565b60808201526123bd60a084016122ff565b60a08201526123ce60c0840161231f565b60c08201526123df60e08401612334565b60e08201526101006123f2818501612274565b90820152610120612404848201612274565b90820152610140612416848201612274565b90820152610160612428848201612274565b9082015261018061243a8482016122ff565b908201526101a061244c8482016122ff565b908201526101c061245e8482016122ff565b908201529392505050565b60006020828403121561247b57600080fd5b815161195f81611ee2565b634e487b7160e01b600052601260045260246000fd5b6000826124b957634e487b7160e01b600052601260045260246000fd5b500490565b60208152600082518060208401526124dd8160408501602087016120b0565b601f01601f1916919091016040019291505056fea164736f6c6343000813000a

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

0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e000000000000000000000000a68bea62dc4034a689aa0f58a76681433caca66300000000000000000000000057dc6c401819ea097db8d4b66d8e35cda0277a73

-----Decoded View---------------
Arg [0] : addressesProvider (address): 0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e
Arg [1] : augustusRegistry (address): 0xa68bEA62Dc4034A689AA0F58A76681433caCa663
Arg [2] : owner (address): 0x57dc6c401819eA097dB8d4b66D8E35CdA0277a73

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e
Arg [1] : 000000000000000000000000a68bea62dc4034a689aa0f58a76681433caca663
Arg [2] : 00000000000000000000000057dc6c401819ea097db8d4b66d8e35cda0277a73


Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.