ETH Price: $2,192.37 (+1.38%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To
Set Curve Factor...185667822023-11-14 1:13:23474 days ago1699924403IN
0xDe9c7150...eBa9c8fDe
0 ETH0.0022678642.80760694

Latest 16 internal transactions

Advanced mode:
Parent Transaction Hash Block
Age
From
To
185672212023-11-14 2:41:11474 days ago1699929671
0xDe9c7150...eBa9c8fDe
0 ETH
185672212023-11-14 2:41:11474 days ago1699929671
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185672202023-11-14 2:40:59474 days ago1699929659
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185671792023-11-14 2:32:47474 days ago1699929167
0xDe9c7150...eBa9c8fDe
0 ETH
185670192023-11-14 2:00:47474 days ago1699927247
0xDe9c7150...eBa9c8fDe
0 ETH
185670192023-11-14 2:00:47474 days ago1699927247
0xDe9c7150...eBa9c8fDe
0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AssimilatorFactory

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 16 : AssimilatorFactory.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import "@openzeppelin/contracts/utils/Address.sol";
import "./assimilators/AssimilatorV3.sol";
import "./interfaces/IAssimilatorFactory.sol";
import "./interfaces/IOracle.sol";
import "./interfaces/ICurveFactory.sol";
import "./interfaces/IConfig.sol";
contract AssimilatorFactory is IAssimilatorFactory {
using Address for address;
event NewAssimilator(
address indexed caller,
bytes32 indexed id,
address indexed assimilator,
address oracle,
address token,
address quote
);
event AssimilatorRevoked(address indexed caller, bytes32 indexed id, address indexed assimilator);
event CurveFactoryUpdated(address indexed caller, address indexed curveFactory);
mapping(bytes32 => AssimilatorV3) public assimilators;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 16 : Address.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 (last updated v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @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
*
* Furthermore, `isContract` will also return true if the target contract within
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 16 : AssimilatorV3.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
// 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.13;
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";
import "../lib/ABDKMath64x64.sol";
import "../interfaces/IAssimilator.sol";
import "../interfaces/IOracle.sol";
import "../interfaces/IWeth.sol";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 16 : IAssimilatorFactory.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
// 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.13;
import "../assimilators/AssimilatorV3.sol";
import "../interfaces/IOracle.sol";
interface IAssimilatorFactory {
function getAssimilator(address _token, address _quote) external view returns (AssimilatorV3);
function newAssimilator(address _quote, IOracle _oracle, address _token, uint256 _tokenDecimals)
external
returns (AssimilatorV3);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 16 : IOracle.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
// 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.13;
interface IOracle {
function acceptOwnership() external;
function accessController() external view returns (address);
function aggregator() external view returns (address);
function confirmAggregator(address _aggregator) external;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 16 : ICurveFactory.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import "./IAssimilatorFactory.sol";
interface ICurveFactory {
function getProtocolFee() external view returns (int128);
function getProtocolTreasury() external view returns (address);
function assimilatorFactory() external view returns (IAssimilatorFactory);
function wETH() external view returns (address);
function isDFXCurve(address) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 16 : IConfig.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IConfig {
function getGlobalFrozenState() external view returns (bool);
function getProtocolFee() external view returns (int128);
function getProtocolTreasury() external view returns (address);
function setGlobalFrozen(bool) external;
function updateProtocolTreasury(address) external;
function updateProtocolFee(int128) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 16 : SafeERC20.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 (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
import "../extensions/IERC20Permit.sol";
import "../../../utils/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 {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 16 : IERC20Metadata.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 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 16 : SafeMath.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 (last updated v4.6.0) (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 16 : Math.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 (last updated v4.8.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 16 : ABDKMath64x64.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: BSD-4-Clause
/*
* ABDK Math 64.64 Smart Contract Library. Copyright © 2019 by ABDK Consulting.
* Author: Mikhail Vladimirov <mikhail.vladimirov@gmail.com>
*/
pragma solidity ^0.8.13;
/**
* Smart contract library of mathematical functions operating with signed
* 64.64-bit fixed point numbers. Signed 64.64-bit fixed point number is
* basically a simple fraction whose numerator is signed 128-bit integer and
* denominator is 2^64. As long as denominator is always the same, there is no
* need to store it, thus in Solidity signed 64.64-bit fixed point numbers are
* represented by int128 type holding only the numerator.
*/
library ABDKMath64x64 {
/*
* Minimum value signed 64.64-bit fixed point number may have.
*/
int128 private constant MIN_64x64 = -0x80000000000000000000000000000000;
/*
* Maximum value signed 64.64-bit fixed point number may have.
*/
int128 private constant MAX_64x64 = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 16 : IAssimilator.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
// 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.13;
interface IAssimilator {
function oracleDecimals() external view returns (uint256);
function underlyingToken() external view returns (address);
function getWeth() external view returns (address);
function tokenDecimals() external view returns (uint256);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 16 : IWeth.sol
1
2
3
4
5
6
7
8
9
10
11
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface IWETH {
function deposit() external payable;
function transfer(address to, uint256 value) external returns (bool);
function withdraw(uint256) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 16 : IERC20.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 (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 16 : IERC20Permit.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 (token/ERC20/extensions/IERC20Permit.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*/
interface IERC20Permit {
/**
* @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
* given ``owner``'s signed approval.
*
* IMPORTANT: The same issues {IERC20-approve} has related to transaction
* ordering also apply here.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `spender` cannot be the zero address.
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": [
"@openzeppelin/=lib/openzeppelin-contracts/",
"@forge-std/=lib/forge-std/src/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_config","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assimilator","type":"address"}],"name":"AssimilatorRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"curveFactory","type":"address"}],"name":"CurveFactoryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assimilator","type":"address"},{"indexed":false,"internalType":"address","name":"oracle","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"quote","type":"address"}],"name":"NewAssimilator","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"assimilators","outputs":[{"internalType":"contract AssimilatorV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curveFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_quote","type":"address"}],"name":"getAssimilator","outputs":[{"internalType":"contract AssimilatorV3","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_quote","type":"address"},{"internalType":"contract IOracle","name":"_oracle","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_tokenDecimals","type":"uint256"}],"name":"newAssimilator","outputs":[{"internalType":"contract AssimilatorV3","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_quote","type":"address"}],"name":"revokeAssimilator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_curveFactory","type":"address"}],"name":"setCurveFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516134da3803806134da83398101604081905261002f916100a1565b6001600160a01b0381163b61007c5760405162461bcd60e51b815260206004820152600f60248201526e636f6e6669672d696e76616c69642160881b604482015260640160405180910390fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556100d1565b6000602082840312156100b357600080fd5b81516001600160a01b03811681146100ca57600080fd5b9392505050565b6133fa806100e06000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063ae6836d61161005b578063ae6836d6146100ec578063b7f49a67146100ff578063d4deb6ef14610112578063d6ff16b21461013b57600080fd5b80635cf14bc81461008d57806379502c55146100a2578063840d480a146100d15780638da5cb5b146100e4575b600080fd5b6100a061009b3660046107bb565b61014e565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100b56100df3660046107df565b610299565b6100b56102f9565b6001546100b5906001600160a01b031681565b6100a061010d3660046107df565b61036c565b6100b5610120366004610818565b6000602081905290815260409020546001600160a01b031681565b6100b5610149366004610831565b61049b565b600260009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c59190610882565b6001600160a01b0316336001600160a01b0316146101fe5760405162461bcd60e51b81526004016101f59061089f565b60405180910390fd5b6001600160a01b03811661024d5760405162461bcd60e51b815260206004820152601660248201527563757276652d666163746f72792d696e76616c69642160501b60448201526064016101f5565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f745592bfae8828fcb7e3c299eb4c60ba631f2909f77e578d4274d691c98291cb90600090a350565b60008083836040516020016102c49291906001600160a01b0392831681529116602082015260400190565b60408051808303601f1901815291815281516020928301206000908152918290529020546001600160a01b0316949350505050565b60025460408051639611f3d960e01b815290516000926001600160a01b031691639611f3d99160048083019260209291908290030181865afa158015610343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103679190610882565b905090565b600260009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e39190610882565b6001600160a01b0316336001600160a01b0316146104135760405162461bcd60e51b81526004016101f59061089f565b604080516001600160a01b0384811660208084019190915284821683850152835180840385018152606090930180855283519382019390932060008181529182905293812080546001600160a01b03198116909155909116918291849133917ff18bed8b9f807bcb996b97a9b915977d9dc0896924ff760a85450ca9bb9247d491a450505050565b6001546000906001600160a01b03163314806104cf57506104ba6102f9565b6001600160a01b0316336001600160a01b0316145b6104eb5760405162461bcd60e51b81526004016101f59061089f565b6001546001600160a01b031661053b5760405162461bcd60e51b815260206004820152601560248201527418dd5c9d994b599858dd1bdc9e4b5b9bdd0b5cd95d605a1b60448201526064016101f5565b604080516001600160a01b03808616602083015287169181019190915260009060600160408051601f1981840301815291815281516020928301206000818152928390529120549091506001600160a01b0316156105db5760405162461bcd60e51b815260206004820152601a60248201527f617373696d696c61746f722d616c72656164792d65786973747300000000000060448201526064016101f5565b6001546040805163f242862160e01b815290516000926001600160a01b03169163f24286219160048083019260209291908290030181865afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190610882565b878787878a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906108c5565b6040516106bb90610796565b6001600160a01b0396871681529486166020860152928516604085015293166060830152608082019290925260ff90911660a082015260c001604051809103906000f080158015610710573d6000803e3d6000fd5b506000838152602081815260409182902080546001600160a01b038581166001600160a01b0319909216821790925583518b831681528a831693810193909352908b168284015291519293509091849133917f6ceadc6ec2d3ce244de4d8bbeafc02c35fc696937c765c081b3f451566dada8b9181900360600190a49695505050505050565b612adc806108e983390190565b6001600160a01b03811681146107b857600080fd5b50565b6000602082840312156107cd57600080fd5b81356107d8816107a3565b9392505050565b600080604083850312156107f257600080fd5b82356107fd816107a3565b9150602083013561080d816107a3565b809150509250929050565b60006020828403121561082a57600080fd5b5035919050565b6000806000806080858703121561084757600080fd5b8435610852816107a3565b93506020850135610862816107a3565b92506040850135610872816107a3565b9396929550929360600135925050565b60006020828403121561089457600080fd5b81516107d8816107a3565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b6000602082840312156108d757600080fd5b815160ff811681146107d857600080fdfe6101606040523480156200001257600080fd5b5060405162002adc38038062002adc8339810160408190526200003591620000f1565b6001600160a01b038087166101405284811660a05283811660c05260e0829052610100839052851660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c491906200016d565b60ff16610120525062000199945050505050565b6001600160a01b0381168114620000ee57600080fd5b50565b60008060008060008060c087890312156200010b57600080fd5b86516200011881620000d8565b60208801519096506200012b81620000d8565b60408801519095506200013e81620000d8565b60608801519094506200015181620000d8565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200018057600080fd5b815160ff811681146200019257600080fd5b9392505050565b60805160a05160c05160e051610100516101205161014051612736620003a6600039600081816101d8015281816104760152610be10152600081816103ce015281816105ae0152610ad80152600081816102b5015281816105fc015281816106e00152818161078e01528181610b5e01528181610d4101528181610e36015281816111db0152818161135e015281816113c20152818161150c0152818161176b015281816117d0015281816118ee0152818161199e015281816119ec0152611be90152600081816104220152818161076d01528181610b3d01528181610d6c01528181610e61015281816111ba0152818161133d015281816113a1015281816114eb01528181611796015281816117fb0152818161197d01528181611a170152611c1401526000818161027f015281816104dd015281816105230152818161081601528181610898015281816108d8015281816109a201528181610cfb01528181610dc101528181610ea001528181610f030152818161100d0152818161108f015281816110cf0152818161121801528181611281015281816112c00152818161156b015281816115ed0152818161162d015281816116e2015281816118670152818161194e01528181611a7601528181611af801528181611b380152611df101526000818161038701526114000152600081816102e90152818161064c0152610a3d01526127366000f3fe60806040526004361061014b5760003560e01c8063679aefce116100b6578063e68b52e71161006f578063e68b52e714610410578063f09a3fc314610444578063f242862114610464578063f5e6c0ca14610498578063fa00102a146104b8578063fc0c546a146104cb57600080fd5b8063679aefce146103405780636b677a8f146103555780637dc0d1d0146103755780637f328ecc146103a95780638d288aec146103bc578063ac969a73146103f057600080fd5b80631e9c4778116101085780631e9c47781461025d5780632495a599146102705780633b97e856146102a35780633de35b79146102d7578063459d5a061461030b578063523bf2571461032057600080fd5b8063011847a0146101505780630271c3c81461018357806305cf7bb414610196578063107c279f146101c9578063186e9cba146102105780631e9b2cba14610223575b600080fd5b34801561015c57600080fd5b5061017061016b366004612235565b6104ff565b6040519081526020015b60405180910390f35b61017061019136600461227b565b610755565b3480156101a257600080fd5b506101b66101b1366004612296565b61097e565b604051600f9190910b815260200161017a565b3480156101d557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017a565b61017061021e3660046122dc565b610b25565b34801561022f57600080fd5b5061024361023e366004612323565b610d2a565b60408051600f93840b81529190920b60208201520161017a565b61017061026b36600461234d565b610e9c565b34801561027c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f8565b3480156102af57600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e357600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b61031e6103193660046123a9565b61117a565b005b34801561032c57600080fd5b5061024361033b366004612323565b611245565b34801561034c57600080fd5b506101706113fb565b34801561036157600080fd5b5061017061037036600461227b565b6114d3565b34801561038157600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b6102436103b73660046123dc565b611530565b3480156103c857600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fc57600080fd5b506101b661040b3660046123f5565b611837565b34801561041c57600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b34801561045057600080fd5b506101b661045f366004612323565b611914565b34801561047057600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a457600080fd5b506101b66104b33660046123dc565b6119d7565b6101b66104c63660046123dc565b611a3d565b3480156104d757600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561056a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058e9190612410565b9050600081116105a257600091505061074d565b6105ec866105e66105d47f0000000000000000000000000000000000000000000000000000000000000000601261243f565b6105df90600a612536565b8490611c4e565b90611c63565b905060006106be866105e66106227f0000000000000000000000000000000000000000000000000000000000000000601261243f565b61062d90600a612536565b6040516370a0823160e01b81526001600160a01b038a811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190612410565b90611c4e565b905060006106d3836105e684620f4240611c4e565b90506107476107306107067f0000000000000000000000000000000000000000000000000000000000000000600a612536565b61071390620f4240612542565b61072590670de0b6b3a7640000612542565b600f88900b90611c6f565b61074283670de0b6b3a7640000612542565b611cda565b93505050505b949350505050565b6000806107606113fb565b90506107d36107306107b27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6107bd90601261243f565b6107c890600a612536565b600f86900b90611c6f565b9150600082116107fe5760405162461bcd60e51b81526004016107f590612559565b60405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190612410565b90506108c06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190612410565b90506000610959838361257f565b610963908661257f565b90508015610975576109758582611d7c565b50505050919050565b6040516370a0823160e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0d9190612410565b905060008111610a2957610a216000611e19565b915050610b1e565b6000610a96856105e6670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161067791906001600160a01b0391909116815260200190565b90506000610ac5610ab3886105e686670de0b6b3a7640000611c4e565b6105e684670de0b6b3a7640000611c4e565b9050610b18670de0b6b3a7640000610afe7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088487612542565b610b1291906125a8565b90611e37565b93505050505b9392505050565b600080610b306113fb565b9050610ba3610730610b827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b610b8d90601261243f565b610b9890600a612536565b600f87900b90611c6f565b915060008211610bc55760405162461bcd60e51b81526004016107f590612559565b8215610cee57604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050506000856001600160a01b03168360405160006040518083038185875af1925050503d8060008114610c92576040519150601f19603f3d011682016040523d82523d6000602084013e610c97565b606091505b5050905080610ce85760405162461bcd60e51b815260206004820152601f60248201527f417373696d696c61746f722f5472616e7366657220455448204661696c65640060448201526064016107f5565b50610d22565b610d226001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168684611e71565b509392505050565b6000806000610d376113fb565b9050610d9c610d677f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610d927f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088488612542565b6040516370a0823160e01b81526001600160a01b0387811660048301529194506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612410565b9050610e91610e5c7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610e877f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088585612542565b925050509250929050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ede575084610ee1565b50815b60008111610f015760405162461bcd60e51b81526004016107f590612559565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f9a578781118015610f495750868111155b610f955760405162461bcd60e51b815260206004820181905260248201527f417373696d696c61746f722f4c5020526174696f20696d62616c616e6365642160448201526064016107f5565b610ff5565b8481118015610fa95750838111155b610ff55760405162461bcd60e51b815260206004820181905260248201527f417373696d696c61746f722f4c5020526174696f20696d62616c616e6365642160448201526064016107f5565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561105c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110809190612410565b90506110b76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561111e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111429190612410565b90506000611150838361257f565b61115a908561257f565b9050801561116c5761116c8482611d7c565b505050979650505050505050565b60006111846113fb565b9050600083600f0b121561119e5761119b836125ca565b92505b60006111b282670de0b6b3a7640000612542565b6111ff610b827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b61120991906125a8565b905061123f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611e71565b50505050565b600080600083116112685760405162461bcd60e51b81526004016107f590612559565b60006112726113fb565b90506112a86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686611e71565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612410565b90506113976113827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b61138d90600a612536565b610b128488612542565b9350610e916113e67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6113f190600a612536565b610b128484612542565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611480919061260a565b50505091505060008112156114ce5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964207072696365206f7261636c6560601b60448201526064016107f5565b919050565b6000806114de6113fb565b9050610b1e6107306107b27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b600080600083116115535760405162461bcd60e51b81526004016107f590612559565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190612410565b90506116156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612410565b905060006116ae838361257f565b6116b8908761257f565b905080156116ca576116ca8682611d7c565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190612410565b905060006117616113fb565b90506117c66117917f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6117bc7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088486612542565b955061182b6117f67f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6118217f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b08848c612542565b96505050505050915091565b6000806118426113fb565b6040516370a0823160e01b81526001600160a01b0385811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190612410565b9050600081116118e65761074d6000611e19565b61074d610e5c7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b60008082116119355760405162461bcd60e51b81526004016107f590612559565b600061193f6113fb565b90506119756001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611e71565b61074d6119c27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6119cd90600a612536565b610b128386612542565b6000806119e26113fb565b9050610b1e611a127f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610afe7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6000808211611a5e5760405162461bcd60e51b81526004016107f590612559565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190612410565b9050611b206001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab9190612410565b90506000611bb9838361257f565b611bc3908661257f565b90508015611bd557611bd58582611d7c565b6000611bdf6113fb565b9050611c44611c0f7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b611c3a7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b08848a612542565b9695505050505050565b6000611c5a8284612542565b90505b92915050565b6000611c5a82846125a8565b600081600003611c8157506000611c5d565b600083600f0b1215611c9257600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115611cc157600080fd5b60401b8119811115611cd257600080fd5b019392505050565b60008215611d085781611cee60018561257f565b611cf891906125a8565b611d0390600161243f565b611c5a565b50600092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261123f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea6565b60008211611d9c5760405162461bcd60e51b81526004016107f590612559565b6000611dba6001611db4856105e686620186a0611c4e565b90611f78565b90506000611dcb82620186a061257f565b611dd884620186a0612542565b611de291906125a8565b905061123f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611d11565b6000677fffffffffffffff821115611e3057600080fd5b5060401b90565b600081600003611e4657600080fd5b6000611e528484611f84565b905060016001607f1b036001600160801b0382161115611c5a57600080fd5b6040516001600160a01b038316602482015260448101829052611ea190849063a9059cbb60e01b90606401611d45565b505050565b6000611efb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120e99092919063ffffffff16565b805190915015611ea15780806020019051810190611f19919061265a565b611ea15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107f5565b6000611c5a828461243f565b600081600003611f9357600080fd5b60006001600160c01b038411611fbe5782604085901b81611fb657611fb6612592565b0490506120d5565b60c084811c6401000000008110611fd7576020918201911c5b620100008110611fe9576010918201911c5b6101008110611ffa576008918201911c5b6010811061200a576004918201911c5b6004811061201a576002918201911c5b60028110612029576001820191505b60bf820360018603901c6001018260ff0387901b8161204a5761204a612592565b0492506001600160801b0383111561206157600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101561208d576001820391505b608084901b929003828110156120a4576001820391505b829003608084901c82146120ba576120ba612677565b8881816120c9576120c9612592565b04870196505050505050505b6001600160801b03811115611c5a57600080fd5b606061074d848460008585600080866001600160a01b0316858760405161211091906126b1565b60006040518083038185875af1925050503d806000811461214d576040519150601f19603f3d011682016040523d82523d6000602084013e612152565b606091505b50915091506121638783838761216e565b979650505050505050565b606083156121dd5782516000036121d6576001600160a01b0385163b6121d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f5565b508161074d565b61074d83838151156121f25781518083602001fd5b8060405162461bcd60e51b81526004016107f591906126cd565b80356001600160a01b03811681146114ce57600080fd5b8035600f81900b81146114ce57600080fd5b6000806000806080858703121561224b57600080fd5b84359350602085013592506122626040860161220c565b915061227060608601612223565b905092959194509250565b60006020828403121561228d57600080fd5b611c5a82612223565b6000806000606084860312156122ab57600080fd5b83359250602084013591506122c26040850161220c565b90509250925092565b80151581146122d957600080fd5b50565b6000806000606084860312156122f157600080fd5b6122fa8461220c565b925061230860208501612223565b91506040840135612318816122cb565b809150509250925092565b6000806040838503121561233657600080fd5b61233f8361220c565b946020939093013593505050565b600080600080600080600060e0888a03121561236857600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915061239b60c0890161220c565b905092959891949750929550565b600080604083850312156123bc57600080fd5b6123c583612223565b91506123d36020840161220c565b90509250929050565b6000602082840312156123ee57600080fd5b5035919050565b60006020828403121561240757600080fd5b611c5a8261220c565b60006020828403121561242257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611c5d57611c5d612429565b600181815b8085111561248d57816000190482111561247357612473612429565b8085161561248057918102915b93841c9390800290612457565b509250929050565b6000826124a457506001611c5d565b816124b157506000611c5d565b81600181146124c757600281146124d1576124ed565b6001915050611c5d565b60ff8411156124e2576124e2612429565b50506001821b611c5d565b5060208310610133831016604e8410600b8410161715612510575081810a611c5d565b61251a8383612452565b806000190482111561252e5761252e612429565b029392505050565b6000611c5a8383612495565b8082028115828204841417611c5d57611c5d612429565b6020808252600c908201526b7a65726f20616d6f756e742160a01b604082015260600190565b81810381811115611c5d57611c5d612429565b634e487b7160e01b600052601260045260246000fd5b6000826125c557634e487b7160e01b600052601260045260246000fd5b500490565b600081600f0b60016001607f1b031981036125e7576125e7612429565b60000392915050565b805169ffffffffffffffffffff811681146114ce57600080fd5b600080600080600060a0868803121561262257600080fd5b61262b866125f0565b945060208601519350604086015192506060860151915061264e608087016125f0565b90509295509295909350565b60006020828403121561266c57600080fd5b8151611c5a816122cb565b634e487b7160e01b600052600160045260246000fd5b60005b838110156126a8578181015183820152602001612690565b50506000910152565b600082516126c381846020870161268d565b9190910192915050565b60208152600082518060208401526126ec81604085016020870161268d565b601f01601f1916919091016040019291505056fea264697066735822122038d5f2864d8776167ba7bad6d03c47589363a0572834f8c4c06c9fee82d8c84b64736f6c63430008150033a26469706673582212208d0932f9bde34a3638f5aabb84934aead3c8ac53697d9ea02f069418c0b4410764736f6c634300081500330000000000000000000000001020e08935e9f8ee963356f4c47d7fe8a024c8a7

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063ae6836d61161005b578063ae6836d6146100ec578063b7f49a67146100ff578063d4deb6ef14610112578063d6ff16b21461013b57600080fd5b80635cf14bc81461008d57806379502c55146100a2578063840d480a146100d15780638da5cb5b146100e4575b600080fd5b6100a061009b3660046107bb565b61014e565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100b56100df3660046107df565b610299565b6100b56102f9565b6001546100b5906001600160a01b031681565b6100a061010d3660046107df565b61036c565b6100b5610120366004610818565b6000602081905290815260409020546001600160a01b031681565b6100b5610149366004610831565b61049b565b600260009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c59190610882565b6001600160a01b0316336001600160a01b0316146101fe5760405162461bcd60e51b81526004016101f59061089f565b60405180910390fd5b6001600160a01b03811661024d5760405162461bcd60e51b815260206004820152601660248201527563757276652d666163746f72792d696e76616c69642160501b60448201526064016101f5565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f745592bfae8828fcb7e3c299eb4c60ba631f2909f77e578d4274d691c98291cb90600090a350565b60008083836040516020016102c49291906001600160a01b0392831681529116602082015260400190565b60408051808303601f1901815291815281516020928301206000908152918290529020546001600160a01b0316949350505050565b60025460408051639611f3d960e01b815290516000926001600160a01b031691639611f3d99160048083019260209291908290030181865afa158015610343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103679190610882565b905090565b600260009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e39190610882565b6001600160a01b0316336001600160a01b0316146104135760405162461bcd60e51b81526004016101f59061089f565b604080516001600160a01b0384811660208084019190915284821683850152835180840385018152606090930180855283519382019390932060008181529182905293812080546001600160a01b03198116909155909116918291849133917ff18bed8b9f807bcb996b97a9b915977d9dc0896924ff760a85450ca9bb9247d491a450505050565b6001546000906001600160a01b03163314806104cf57506104ba6102f9565b6001600160a01b0316336001600160a01b0316145b6104eb5760405162461bcd60e51b81526004016101f59061089f565b6001546001600160a01b031661053b5760405162461bcd60e51b815260206004820152601560248201527418dd5c9d994b599858dd1bdc9e4b5b9bdd0b5cd95d605a1b60448201526064016101f5565b604080516001600160a01b03808616602083015287169181019190915260009060600160408051601f1981840301815291815281516020928301206000818152928390529120549091506001600160a01b0316156105db5760405162461bcd60e51b815260206004820152601a60248201527f617373696d696c61746f722d616c72656164792d65786973747300000000000060448201526064016101f5565b6001546040805163f242862160e01b815290516000926001600160a01b03169163f24286219160048083019260209291908290030181865afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190610882565b878787878a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906108c5565b6040516106bb90610796565b6001600160a01b0396871681529486166020860152928516604085015293166060830152608082019290925260ff90911660a082015260c001604051809103906000f080158015610710573d6000803e3d6000fd5b506000838152602081815260409182902080546001600160a01b038581166001600160a01b0319909216821790925583518b831681528a831693810193909352908b168284015291519293509091849133917f6ceadc6ec2d3ce244de4d8bbeafc02c35fc696937c765c081b3f451566dada8b9181900360600190a49695505050505050565b612adc806108e983390190565b6001600160a01b03811681146107b857600080fd5b50565b6000602082840312156107cd57600080fd5b81356107d8816107a3565b9392505050565b600080604083850312156107f257600080fd5b82356107fd816107a3565b9150602083013561080d816107a3565b809150509250929050565b60006020828403121561082a57600080fd5b5035919050565b6000806000806080858703121561084757600080fd5b8435610852816107a3565b93506020850135610862816107a3565b92506040850135610872816107a3565b9396929550929360600135925050565b60006020828403121561089457600080fd5b81516107d8816107a3565b6020808252600c908201526b1d5b985d5d1a1bdc9a5e995960a21b604082015260600190565b6000602082840312156108d757600080fd5b815160ff811681146107d857600080fdfe6101606040523480156200001257600080fd5b5060405162002adc38038062002adc8339810160408190526200003591620000f1565b6001600160a01b038087166101405284811660a05283811660c05260e0829052610100839052851660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c491906200016d565b60ff16610120525062000199945050505050565b6001600160a01b0381168114620000ee57600080fd5b50565b60008060008060008060c087890312156200010b57600080fd5b86516200011881620000d8565b60208801519096506200012b81620000d8565b60408801519095506200013e81620000d8565b60608801519094506200015181620000d8565b809350506080870151915060a087015190509295509295509295565b6000602082840312156200018057600080fd5b815160ff811681146200019257600080fd5b9392505050565b60805160a05160c05160e051610100516101205161014051612736620003a6600039600081816101d8015281816104760152610be10152600081816103ce015281816105ae0152610ad80152600081816102b5015281816105fc015281816106e00152818161078e01528181610b5e01528181610d4101528181610e36015281816111db0152818161135e015281816113c20152818161150c0152818161176b015281816117d0015281816118ee0152818161199e015281816119ec0152611be90152600081816104220152818161076d01528181610b3d01528181610d6c01528181610e61015281816111ba0152818161133d015281816113a1015281816114eb01528181611796015281816117fb0152818161197d01528181611a170152611c1401526000818161027f015281816104dd015281816105230152818161081601528181610898015281816108d8015281816109a201528181610cfb01528181610dc101528181610ea001528181610f030152818161100d0152818161108f015281816110cf0152818161121801528181611281015281816112c00152818161156b015281816115ed0152818161162d015281816116e2015281816118670152818161194e01528181611a7601528181611af801528181611b380152611df101526000818161038701526114000152600081816102e90152818161064c0152610a3d01526127366000f3fe60806040526004361061014b5760003560e01c8063679aefce116100b6578063e68b52e71161006f578063e68b52e714610410578063f09a3fc314610444578063f242862114610464578063f5e6c0ca14610498578063fa00102a146104b8578063fc0c546a146104cb57600080fd5b8063679aefce146103405780636b677a8f146103555780637dc0d1d0146103755780637f328ecc146103a95780638d288aec146103bc578063ac969a73146103f057600080fd5b80631e9c4778116101085780631e9c47781461025d5780632495a599146102705780633b97e856146102a35780633de35b79146102d7578063459d5a061461030b578063523bf2571461032057600080fd5b8063011847a0146101505780630271c3c81461018357806305cf7bb414610196578063107c279f146101c9578063186e9cba146102105780631e9b2cba14610223575b600080fd5b34801561015c57600080fd5b5061017061016b366004612235565b6104ff565b6040519081526020015b60405180910390f35b61017061019136600461227b565b610755565b3480156101a257600080fd5b506101b66101b1366004612296565b61097e565b604051600f9190910b815260200161017a565b3480156101d557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017a565b61017061021e3660046122dc565b610b25565b34801561022f57600080fd5b5061024361023e366004612323565b610d2a565b60408051600f93840b81529190920b60208201520161017a565b61017061026b36600461234d565b610e9c565b34801561027c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101f8565b3480156102af57600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e357600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b61031e6103193660046123a9565b61117a565b005b34801561032c57600080fd5b5061024361033b366004612323565b611245565b34801561034c57600080fd5b506101706113fb565b34801561036157600080fd5b5061017061037036600461227b565b6114d3565b34801561038157600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b6102436103b73660046123dc565b611530565b3480156103c857600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fc57600080fd5b506101b661040b3660046123f5565b611837565b34801561041c57600080fd5b506101707f000000000000000000000000000000000000000000000000000000000000000081565b34801561045057600080fd5b506101b661045f366004612323565b611914565b34801561047057600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a457600080fd5b506101b66104b33660046123dc565b6119d7565b6101b66104c63660046123dc565b611a3d565b3480156104d757600080fd5b506101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516370a0823160e01b81526001600160a01b03838116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561056a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058e9190612410565b9050600081116105a257600091505061074d565b6105ec866105e66105d47f0000000000000000000000000000000000000000000000000000000000000000601261243f565b6105df90600a612536565b8490611c4e565b90611c63565b905060006106be866105e66106227f0000000000000000000000000000000000000000000000000000000000000000601261243f565b61062d90600a612536565b6040516370a0823160e01b81526001600160a01b038a811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190612410565b90611c4e565b905060006106d3836105e684620f4240611c4e565b90506107476107306107067f0000000000000000000000000000000000000000000000000000000000000000600a612536565b61071390620f4240612542565b61072590670de0b6b3a7640000612542565b600f88900b90611c6f565b61074283670de0b6b3a7640000612542565b611cda565b93505050505b949350505050565b6000806107606113fb565b90506107d36107306107b27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6107bd90601261243f565b6107c890600a612536565b600f86900b90611c6f565b9150600082116107fe5760405162461bcd60e51b81526004016107f590612559565b60405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190612410565b90506108c06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190612410565b90506000610959838361257f565b610963908661257f565b90508015610975576109758582611d7c565b50505050919050565b6040516370a0823160e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0d9190612410565b905060008111610a2957610a216000611e19565b915050610b1e565b6000610a96856105e6670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161067791906001600160a01b0391909116815260200190565b90506000610ac5610ab3886105e686670de0b6b3a7640000611c4e565b6105e684670de0b6b3a7640000611c4e565b9050610b18670de0b6b3a7640000610afe7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088487612542565b610b1291906125a8565b90611e37565b93505050505b9392505050565b600080610b306113fb565b9050610ba3610730610b827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b610b8d90601261243f565b610b9890600a612536565b600f87900b90611c6f565b915060008211610bc55760405162461bcd60e51b81526004016107f590612559565b8215610cee57604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050506000856001600160a01b03168360405160006040518083038185875af1925050503d8060008114610c92576040519150601f19603f3d011682016040523d82523d6000602084013e610c97565b606091505b5050905080610ce85760405162461bcd60e51b815260206004820152601f60248201527f417373696d696c61746f722f5472616e7366657220455448204661696c65640060448201526064016107f5565b50610d22565b610d226001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168684611e71565b509392505050565b6000806000610d376113fb565b9050610d9c610d677f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610d927f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088488612542565b6040516370a0823160e01b81526001600160a01b0387811660048301529194506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612410565b9050610e91610e5c7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610e877f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088585612542565b925050509250929050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ede575084610ee1565b50815b60008111610f015760405162461bcd60e51b81526004016107f590612559565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f9a578781118015610f495750868111155b610f955760405162461bcd60e51b815260206004820181905260248201527f417373696d696c61746f722f4c5020526174696f20696d62616c616e6365642160448201526064016107f5565b610ff5565b8481118015610fa95750838111155b610ff55760405162461bcd60e51b815260206004820181905260248201527f417373696d696c61746f722f4c5020526174696f20696d62616c616e6365642160448201526064016107f5565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561105c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110809190612410565b90506110b76001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561111e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111429190612410565b90506000611150838361257f565b61115a908561257f565b9050801561116c5761116c8482611d7c565b505050979650505050505050565b60006111846113fb565b9050600083600f0b121561119e5761119b836125ca565b92505b60006111b282670de0b6b3a7640000612542565b6111ff610b827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b61120991906125a8565b905061123f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611e71565b50505050565b600080600083116112685760405162461bcd60e51b81526004016107f590612559565b60006112726113fb565b90506112a86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686611e71565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612410565b90506113976113827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b61138d90600a612536565b610b128488612542565b9350610e916113e67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6113f190600a612536565b610b128484612542565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561145c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611480919061260a565b50505091505060008112156114ce5760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964207072696365206f7261636c6560601b60448201526064016107f5565b919050565b6000806114de6113fb565b9050610b1e6107306107b27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b600080600083116115535760405162461bcd60e51b81526004016107f590612559565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190612410565b90506116156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612410565b905060006116ae838361257f565b6116b8908761257f565b905080156116ca576116ca8682611d7c565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190612410565b905060006117616113fb565b90506117c66117917f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6117bc7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b088486612542565b955061182b6117f67f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6118217f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b08848c612542565b96505050505050915091565b6000806118426113fb565b6040516370a0823160e01b81526001600160a01b0385811660048301529192506000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d29190612410565b9050600081116118e65761074d6000611e19565b61074d610e5c7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b60008082116119355760405162461bcd60e51b81526004016107f590612559565b600061193f6113fb565b90506119756001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611e71565b61074d6119c27f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061243f565b6119cd90600a612536565b610b128386612542565b6000806119e26113fb565b9050610b1e611a127f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610afe7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b6000808211611a5e5760405162461bcd60e51b81526004016107f590612559565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae99190612410565b9050611b206001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611d11565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab9190612410565b90506000611bb9838361257f565b611bc3908661257f565b90508015611bd557611bd58582611d7c565b6000611bdf6113fb565b9050611c44611c0f7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b611c3a7f0000000000000000000000000000000000000000000000000000000000000000600a612536565b610b08848a612542565b9695505050505050565b6000611c5a8284612542565b90505b92915050565b6000611c5a82846125a8565b600081600003611c8157506000611c5d565b600083600f0b1215611c9257600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115611cc157600080fd5b60401b8119811115611cd257600080fd5b019392505050565b60008215611d085781611cee60018561257f565b611cf891906125a8565b611d0390600161243f565b611c5a565b50600092915050565b6040516001600160a01b038085166024830152831660448201526064810182905261123f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ea6565b60008211611d9c5760405162461bcd60e51b81526004016107f590612559565b6000611dba6001611db4856105e686620186a0611c4e565b90611f78565b90506000611dcb82620186a061257f565b611dd884620186a0612542565b611de291906125a8565b905061123f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611d11565b6000677fffffffffffffff821115611e3057600080fd5b5060401b90565b600081600003611e4657600080fd5b6000611e528484611f84565b905060016001607f1b036001600160801b0382161115611c5a57600080fd5b6040516001600160a01b038316602482015260448101829052611ea190849063a9059cbb60e01b90606401611d45565b505050565b6000611efb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120e99092919063ffffffff16565b805190915015611ea15780806020019051810190611f19919061265a565b611ea15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107f5565b6000611c5a828461243f565b600081600003611f9357600080fd5b60006001600160c01b038411611fbe5782604085901b81611fb657611fb6612592565b0490506120d5565b60c084811c6401000000008110611fd7576020918201911c5b620100008110611fe9576010918201911c5b6101008110611ffa576008918201911c5b6010811061200a576004918201911c5b6004811061201a576002918201911c5b60028110612029576001820191505b60bf820360018603901c6001018260ff0387901b8161204a5761204a612592565b0492506001600160801b0383111561206157600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101561208d576001820391505b608084901b929003828110156120a4576001820391505b829003608084901c82146120ba576120ba612677565b8881816120c9576120c9612592565b04870196505050505050505b6001600160801b03811115611c5a57600080fd5b606061074d848460008585600080866001600160a01b0316858760405161211091906126b1565b60006040518083038185875af1925050503d806000811461214d576040519150601f19603f3d011682016040523d82523d6000602084013e612152565b606091505b50915091506121638783838761216e565b979650505050505050565b606083156121dd5782516000036121d6576001600160a01b0385163b6121d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f5565b508161074d565b61074d83838151156121f25781518083602001fd5b8060405162461bcd60e51b81526004016107f591906126cd565b80356001600160a01b03811681146114ce57600080fd5b8035600f81900b81146114ce57600080fd5b6000806000806080858703121561224b57600080fd5b84359350602085013592506122626040860161220c565b915061227060608601612223565b905092959194509250565b60006020828403121561228d57600080fd5b611c5a82612223565b6000806000606084860312156122ab57600080fd5b83359250602084013591506122c26040850161220c565b90509250925092565b80151581146122d957600080fd5b50565b6000806000606084860312156122f157600080fd5b6122fa8461220c565b925061230860208501612223565b91506040840135612318816122cb565b809150509250925092565b6000806040838503121561233657600080fd5b61233f8361220c565b946020939093013593505050565b600080600080600080600060e0888a03121561236857600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915061239b60c0890161220c565b905092959891949750929550565b600080604083850312156123bc57600080fd5b6123c583612223565b91506123d36020840161220c565b90509250929050565b6000602082840312156123ee57600080fd5b5035919050565b60006020828403121561240757600080fd5b611c5a8261220c565b60006020828403121561242257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611c5d57611c5d612429565b600181815b8085111561248d57816000190482111561247357612473612429565b8085161561248057918102915b93841c9390800290612457565b509250929050565b6000826124a457506001611c5d565b816124b157506000611c5d565b81600181146124c757600281146124d1576124ed565b6001915050611c5d565b60ff8411156124e2576124e2612429565b50506001821b611c5d565b5060208310610133831016604e8410600b8410161715612510575081810a611c5d565b61251a8383612452565b806000190482111561252e5761252e612429565b029392505050565b6000611c5a8383612495565b8082028115828204841417611c5d57611c5d612429565b6020808252600c908201526b7a65726f20616d6f756e742160a01b604082015260600190565b81810381811115611c5d57611c5d612429565b634e487b7160e01b600052601260045260246000fd5b6000826125c557634e487b7160e01b600052601260045260246000fd5b500490565b600081600f0b60016001607f1b031981036125e7576125e7612429565b60000392915050565b805169ffffffffffffffffffff811681146114ce57600080fd5b600080600080600060a0868803121561262257600080fd5b61262b866125f0565b945060208601519350604086015192506060860151915061264e608087016125f0565b90509295509295909350565b60006020828403121561266c57600080fd5b8151611c5a816122cb565b634e487b7160e01b600052600160045260246000fd5b60005b838110156126a8578181015183820152602001612690565b50506000910152565b600082516126c381846020870161268d565b9190910192915050565b60208152600082518060208401526126ec81604085016020870161268d565b601f01601f1916919091016040019291505056fea264697066735822122038d5f2864d8776167ba7bad6d03c47589363a0572834f8c4c06c9fee82d8c84b64736f6c63430008150033a26469706673582212208d0932f9bde34a3638f5aabb84934aead3c8ac53697d9ea02f069418c0b4410764736f6c63430008150033

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

0000000000000000000000001020e08935e9f8ee963356f4c47d7fe8a024c8a7

-----Decoded View---------------
Arg [0] : _config (address): 0x1020E08935e9F8Ee963356f4C47d7fE8A024c8A7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001020e08935e9f8ee963356f4c47d7fe8a024c8a7


Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.