Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 5 from a total of 5 transactions
Latest 7 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x3d602d80 | 21268476 | 454 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 21111903 | 476 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 21069763 | 482 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 20918141 | 503 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 20912941 | 503 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 20619905 | 544 days ago | Contract Creation | 0 ETH | |||
| 0x3d602d80 | 20425410 | 572 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
DynamicFactory
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Standard Json-Input format)
// Copyright (c) [2023], [Qwantum Finance Labs]
// All rights reserved.
// SPDX-License-Identifier: No License (None)
pragma solidity =0.6.12;
import './interfaces/IDynamicRouter02.sol';
import './interfaces/IDynamicFactory.sol';
import './interfaces/IERC20.sol';
import './interfaces/IWETH.sol';
import './libraries/Clones.sol';
import './interfaces/IDynamicPair.sol';
//import './DynamicPair.sol';
interface IReimbursement {
// returns fee percentage with 2 decimals
function getLicenseeFee(address vault, address projectContract) external view returns(uint256);
// returns fee receiver address or address(0) if need to refund fee to user.
function requestReimbursement(address user, uint256 feeAmount, address vault) external returns(address);
}
contract DynamicFactory {
enum Vars {timeFrame, maxDump0, maxDump1, maxTxDump0, maxTxDump1, coefficient, minimalFee, periodMA}
uint32[8] public vars; // timeFrame, maxDump0, maxDump1, maxTxDump0, maxTxDump1, coefficient, minimalFee, periodMA
//timeFrame = 1 days; // during this time frame rate of reserve1/reserve0 should be in range [baseLinePrice0*(1-maxDump0), baseLinePrice0*(1+maxDump1)]
//maxDump0 = 10000; // maximum allowed dump (in percentage with 2 decimals) of reserve1/reserve0 rate during time frame relatively the baseline
//maxDump1 = 10000; // maximum allowed dump (in percentage with 2 decimals) of reserve0/reserve1 rate during time frame relatively the baseline
//maxTxDump0 = 10000; // maximum allowed dump (in percentage with 2 decimals) of token0 price per transaction
//maxTxDump1 = 10000; // maximum allowed dump (in percentage with 2 decimals) of token1 price per transaction
//coefficient = 10000; // coefficient (in percentage with 2 decimals) to transform price growing into fee. ie
//minimalFee = 5; // Minimal fee percentage (with 2 decimals) applied to transaction. I.e. 5 = 0.05%
//periodMA = 45 minutes; // MA period in seconds
address public dynamic; // dynamic token address
address public uniV2Router; // uniswap compatible router
address public reimbursement; // address of users reimbursements contract
address public reimbursementVault; // address of company vault for reimbursements
address public pairImplementation; // pair implementation code contract (using in clone).
address public feeTo;
uint256 public feeToPart = 20; // company part of charged fee (in percentage). I.e. send to `feeTo` amount of (charged fee * feeToPart / 100)
uint256 public feeReimbursement = 100; // percent of fee to reimburse
address public feeToSetter;
//bool public defaultCircuitBreakerEnable = true; // protect from dumping token against WETH
address public WETH;
uint256 public nonce;
mapping(address => mapping(address => address)) public getPair;
address[] public allPairs;
mapping(address => bool) isPair;
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
constructor(address _feeToSetter, address _pairImplementation) public {
require(_feeToSetter != address(0) && _pairImplementation != address(0), "Address zero");
feeToSetter = _feeToSetter;
pairImplementation = _pairImplementation;
vars = [1 days, 10000, 10000, 10000, 10000, 10000, 5, 45 minutes];
}
function allPairsLength() external view returns (uint) {
return allPairs.length;
}
function createPair(address tokenA, address tokenB) external returns (address pair) {
require(getPair[tokenA][tokenB] == address(0), 'Dynamic: PAIR_EXISTS'); // single check is sufficient
uint32[2] memory voteVars;
voteVars[0] = 1 days;
voteVars[1] = 100; // 1%
return _createPair(tokenA, tokenB, vars, false, address(0), voteVars);
}
function createPair(
address tokenA,
address tokenB,
uint32[8] calldata _vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
)
external
returns (address pair)
{
require(getPair[tokenA][tokenB] == address(0), 'Dynamic: PAIR_EXISTS'); // single check is sufficient
return _createPair(tokenA, tokenB, _vars, isPrivate, protectedToken, voteVars);
}
function createPairFork(
address tokenA, // for ETH use address WETH
address tokenB, // for ETH use address WETH
uint amountA,
uint amountB,
uint32[8] calldata _vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
)
external
payable
returns (address pair, uint liquidity)
{
pair = getPair[tokenA][tokenB];
require(pair != address(0), 'Dynamic: FORK_ONLY_EXISTING'); // fork only existing pool
//new pool should be bigger than old one;
(uint reserve0, uint reserve1,) = IDynamicPair(pair).getReserves();
if (tokenA < tokenB) require(reserve0 < amountA && reserve1 < amountB, "New pool smaller");
else require(reserve0 < amountB && reserve1 < amountA, "New pool smaller");
pair = _createPair(tokenA, tokenB, _vars, isPrivate, protectedToken, voteVars);
if (msg.value != 0) {
require(
(tokenA == WETH && amountA == msg.value) ||
(tokenB == WETH && amountB == msg.value),
"no WETH"
);
IWETH(WETH).deposit{value: msg.value}();
require(IWETH(WETH).transfer(pair, msg.value));
if (tokenA != WETH) _safeTransferFrom(tokenA, msg.sender, pair, amountA);
else _safeTransferFrom(tokenB, msg.sender, pair, amountB);
} else {
_safeTransferFrom(tokenA, msg.sender, pair, amountA);
_safeTransferFrom(tokenB, msg.sender, pair, amountB);
}
liquidity = IDynamicPair(pair).mint(msg.sender);
}
// create pair without checking if it already exist
function _createPair(
address tokenA,
address tokenB,
uint32[8] memory _vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
)
internal
returns (address pair)
{
require(tokenA != tokenB, 'Dynamic: IDENTICAL_ADDRESSES');
(address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
require(token0 != address(0), 'Dynamic: ZERO_ADDRESS');
uint baseProtectedToken = 2;
if (protectedToken == token0) baseProtectedToken = 0;
else if (protectedToken == token1) baseProtectedToken = 1;
else require(protectedToken == address(0), "Wrong protected token");
nonce++;
bytes32 salt = keccak256(abi.encodePacked(token0, token1, nonce));
pair = Clones.cloneDeterministic(pairImplementation, salt);
IDynamicPair(pair).initialize(token0, token1, _vars, isPrivate, baseProtectedToken, voteVars);
getPair[token0][token1] = pair;
getPair[token1][token0] = pair; // populate mapping in the reverse direction
allPairs.push(pair);
isPair[pair] = true;
emit PairCreated(token0, token1, pair, allPairs.length);
}
function setFeeTo(address _feeTo) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
feeTo = _feeTo;
}
function setFeeToSetter(address _feeToSetter) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
feeToSetter = _feeToSetter;
}
// mint dynamic tokens for LP
function mintReward(address to, uint amount) external {
require(isPair[msg.sender], "Only pair");
//return; // TEST
IERC20(dynamic).mint(to, amount);
}
function swapFee(address token0, address token1, uint fee0, uint fee1) external returns(bool) {
//return false; // TEST
uint gasA = gasleft();
require(isPair[msg.sender], "Only pair");
address _WETH = WETH;
address _dynamic = dynamic;
if ((token0 == _dynamic || token1 == _dynamic) && (token0 == _WETH || token1 == _WETH)) return false; // protection from loop when swap dynamic/WETH
address _dynamicPair = getPair[_dynamic][_WETH];
if (_dynamicPair == address(0)) return false;
uint amount;
uint fee;
if (fee0 != 0) amount = _swapFee(_WETH, token0, fee0);
if (fee1 != 0) amount += _swapFee(_WETH, token1, fee1);
if (amount == 0) {
if (reimbursement != address(0)) {
fee = ((73000 + gasA - gasleft()) * tx.gasprice); // add gas for swap
IReimbursement(reimbursement).requestReimbursement(tx.origin, fee, reimbursementVault); // user reimbursement
}
return false;
}
(uint112 _reserve0, uint112 _reserve1,) = IDynamicPair(_dynamicPair).getReserves();
if (_WETH > _dynamic) {
(_reserve0, _reserve1) = (_reserve1, _reserve0); // WETH amount = _reserve0
}
fee = amount;
amount = (100 - feeToPart) * amount / 100; // amount in WETH to move to pool
//_safeTransfer(WETH, _dynamicPair, amount); // add fee to dynamic pool on one side
//IDynamicPair(_dynamicPair).sync(); // sync in pair
amount = (amount * _reserve1) / (_reserve0 + amount);
IDynamicPair(msg.sender).addReward(amount); // amount in dynamic
if (reimbursement != address(0)) {
fee = (fee * feeReimbursement / 100) + ((73000 + gasA - gasleft()) * tx.gasprice); // add gas for swap
IReimbursement(reimbursement).requestReimbursement(tx.origin, fee, reimbursementVault); // user reimbursement
}
return true;
}
// swap token to WETH and return WETH amount
function _swapFee(address _WETH, address _token, uint _feeAmount) internal returns(uint amountOut) {
if (_token == _WETH) {
_safeTransferFrom(_token, msg.sender, address(this), _feeAmount);
return _feeAmount;
}
bool localPair;
address _pair = getPair[_token][_WETH];
if (_pair == address(0)) {
address _factory = IDynamicRouter02(uniV2Router).factory();
_pair = IDynamicFactory(_factory).getPair(_token, _WETH);
if (_pair == address(0)) return 0; // no pair token-WETH
} else {
// local factory
localPair == true;
}
if (_pair == msg.sender) return 0; // avoid deadlock on recursion
_safeTransferFrom(_token, msg.sender, _pair, _feeAmount);
(uint112 _reserve0, uint112 _reserve1,) = IDynamicPair(_pair).getReserves();
if (_token > _WETH) _reserve0 = _reserve1; // _reserve0 = reserve of _token
// get amountInput for tokens with fee on transfer
uint amountInput = IERC20(_token).balanceOf(address(_pair));
if (amountInput > _reserve0) amountInput = amountInput - uint(_reserve0);
else return 0;
if (localPair) {
amountOut = IDynamicPair(_pair).getAmountOut(amountInput, _token, _WETH);
} else {
address[] memory _path = new address[](2);
_path[0] = _token;
_path[1] = _WETH;
uint256[] memory _amountOut = IDynamicRouter02(uniV2Router).getAmountsOut(amountInput, _path);
amountOut = _amountOut[1];
}
if (amountOut == 0) return 0;
if (_token < _WETH) {
IDynamicPair(_pair).swap(0, amountOut, address(this), new bytes(0));
} else {
IDynamicPair(_pair).swap(amountOut, 0, address(this), new bytes(0));
}
}
function _safeTransfer(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
}
function _safeTransferFrom(address token, address from, address to, uint value) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
}
function setVars(uint varId, uint32 value) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
require(varId <= vars.length, "Wrong varID");
if (varId == uint(Vars.timeFrame) || varId == uint(Vars.periodMA))
require(value != 0, "Wrong time frame");
else
require(value <= 10000, "Wrong percentage");
if (varId < vars.length) {
vars[varId] = value;
return;
}
if (varId == vars.length) {
feeToPart = value; // varId = 8
}
}
// set Router contract address
function setRouter(address _router) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
require(_router != address(0));
uniV2Router = _router;
WETH = IDynamicRouter02(uniV2Router).WETH();
require(WETH != address(0));
}
// set fee reimbursement percentage (without decimals)
function setFeeReimbursement(uint256 percentage) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
require(percentage <= 100, "percentage too high");
feeReimbursement = percentage;
}
// set dynamic token address
function setDynamic(address _dynamic) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
require(_dynamic != address(0), "Address zero");
dynamic = _dynamic;
}
// set reimbursement contract address for users reimbursements, address(0) to switch of reimbursement
function setReimbursementContractAndVault(address _reimbursement, address _vault) external {
require(msg.sender == feeToSetter, 'Dynamic: FORBIDDEN');
reimbursement = _reimbursement;
reimbursementVault = _vault;
}
function getColletedFees() external view returns (uint256 feeAmount) {
feeAmount = IERC20(WETH).balanceOf(address(this));
}
function claimFee() external returns (uint256) {
require(msg.sender == feeTo, 'Dynamic: FORBIDDEN');
uint balance = IERC20(WETH).balanceOf(address(this));
if (balance != 0) {
IWETH(WETH).withdraw(balance);
msg.sender.transfer(address(this).balance);
//_safeTransfer(WETH, msg.sender, balance);
}
return balance;
}
receive() external payable {}
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.0;
interface IDynamicPair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function vars(uint id) external view returns (uint32);
function baseLinePrice0() external view returns (uint);
function lastMA() external view returns (uint);
function isPrivate() external view returns (bool);
function votingTime() external view returns (uint);
function minimalLevel() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address, uint32[8] calldata, bool, uint, uint32[2] calldata) external;
function addReward(uint amount) external;
function getRewards(address user) external view returns (uint);
function getAmountOut(uint amountIn, address tokenIn, address tokenOut) external view returns(uint);
function getAmountIn(uint amountOut, address tokenIn, address tokenOut) external view returns(uint);
function setTokenTax(address token, address buyTaxReceiver, uint256 buyTax, address sellTaxReceiver, uint256 sellTax) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
/**
* @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
* deploying minimal proxy contracts, also known as "clones".
*
* > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
* > a minimal bytecode implementation that delegates all calls to a known, fixed address.
*
* The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
* (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
* deterministic method.
*
* _Available since v3.4._
*/
library Clones {
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create opcode, which should never revert.
*/
function clone(address implementation) internal returns (address instance) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
instance := create(0, ptr, 0x37)
}
require(instance != address(0), "ERC1167: create failed");
}
/**
* @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
*
* This function uses the create2 opcode and a `salt` to deterministically deploy
* the clone. Using the same `implementation` and `salt` multiple time will revert, since
* the clones cannot be deployed twice at the same address.
*/
function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
instance := create2(0, ptr, 0x37, salt)
}
require(instance != address(0), "ERC1167: create2 failed");
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(
address implementation,
bytes32 salt,
address deployer
) internal pure returns (address predicted) {
assembly {
let ptr := mload(0x40)
mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
mstore(add(ptr, 0x14), shl(0x60, implementation))
mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)
mstore(add(ptr, 0x38), shl(0x60, deployer))
mstore(add(ptr, 0x4c), salt)
mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))
predicted := keccak256(add(ptr, 0x37), 0x55)
}
}
/**
* @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
*/
function predictDeterministicAddress(address implementation, bytes32 salt)
internal
view
returns (address predicted)
{
return predictDeterministicAddress(implementation, salt, address(this));
}
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.0;
interface IWETH {
function deposit() external payable;
function transfer(address to, uint value) external returns (bool);
function withdraw(uint) external;
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.0;
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function mint(address to, uint256 amount) external returns (bool);
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.0;
interface IDynamicFactory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function dynamic() external view returns (address);
function WETH() external view returns (address);
function uniV2Router() external view returns (address);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function createPair(
address tokenA,
address tokenB,
uint32[8] calldata _vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
) external returns (address pair);
//function setFeeTo(address) external;
function setFeeToSetter(address) external;
function mintReward(address to, uint amount) external;
function swapFee(address token0, address token1, uint fee0, uint fee1) external returns(bool);
function setVars(uint varId, uint32 value) external;
function setRouter(address _router) external;
function setReimbursementContractAndVault(address _reimbursement, address _vault) external;
function claimFee() external returns (uint256);
function getColletedFees() external view returns (uint256 feeAmount);
function pairImplementation() external view returns (address);
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.2;
import './IDynamicRouter01.sol';
interface IDynamicRouter02 is IDynamicRouter01 {
// Create pair with options
function createPair(
address tokenA,
address tokenB,
uint amountA,
uint amountB,
address to,
uint32[8] memory vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
) external returns (uint liquidity);
function createPairETH(
address token,
uint amountToken,
address to,
uint32[8] memory vars,
bool isPrivate, // is private pool
address protectedToken, // which token should be protected by secure floor, if address(0) then without secure floor
uint32[2] memory voteVars // [0] - voting delay, [1] - minimal level for proposal in percentage with 2 decimals i.e. 100 = 1%
) external payable returns (uint liquidity);
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}// SPDX-License-Identifier: No License (None)
pragma solidity >=0.6.2;
interface IDynamicRouter01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
//function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
//function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"},{"internalType":"address","name":"_pairImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint32[8]","name":"_vars","type":"uint32[8]"},{"internalType":"bool","name":"isPrivate","type":"bool"},{"internalType":"address","name":"protectedToken","type":"address"},{"internalType":"uint32[2]","name":"voteVars","type":"uint32[2]"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint32[8]","name":"_vars","type":"uint32[8]"},{"internalType":"bool","name":"isPrivate","type":"bool"},{"internalType":"address","name":"protectedToken","type":"address"},{"internalType":"uint32[2]","name":"voteVars","type":"uint32[2]"}],"name":"createPairFork","outputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dynamic","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReimbursement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToPart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getColletedFees","outputs":[{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimbursement","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reimbursementVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dynamic","type":"address"}],"name":"setDynamic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setFeeReimbursement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_reimbursement","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"name":"setReimbursementContractAndVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"varId","type":"uint256"},{"internalType":"uint32","name":"value","type":"uint32"}],"name":"setVars","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint256","name":"fee0","type":"uint256"},{"internalType":"uint256","name":"fee1","type":"uint256"}],"name":"swapFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vars","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052601460075560646008553480156200001b57600080fd5b5060405162002a1d38038062002a1d833981810160405260408110156200004157600080fd5b5080516020909101516001600160a01b038216158015906200006b57506001600160a01b03811615155b620000ac576040805162461bcd60e51b815260206004820152600c60248201526b41646472657373207a65726f60a01b604482015290519081900360640190fd5b600980546001600160a01b038085166001600160a01b0319928316179092556005805492841692909116919091178155604080516101008101825262015180815261271060208201819052918101829052606081018290526080810182905260a081019190915260c0810191909152610a8c60e0820152620001339060009060086200013c565b505050620001fc565b600183019183908215620001cc5791602002820160005b838211156200019857835183826101000a81548163ffffffff021916908362ffffff160217905550926020019260040160208160030104928301926001030262000153565b8015620001ca5782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000198565b505b50620001da929150620001de565b5090565b5b80821115620001da57805463ffffffff19168155600101620001df565b612811806200020c6000396000f3fe6080604052600436106101c65760003560e01c80639a49090e116100f7578063c9c6539611610095578063e6a4390511610064578063e6a4390514610604578063e71a136a1461063f578063ec71730f14610682578063f46901ed1461070d576101cd565b8063c9c653961461058a578063d3f0c8bb146105c5578063e1b8277b146105da578063e39ccb55146105ef576101cd565b8063affed0e0116100d1578063affed0e01461045a578063bedc5ca61461046f578063c0d786551461051c578063c6276c971461054f576101cd565b80639a49090e146103d9578063a2e74af614610412578063ad5c464814610445576101cd565b806371f3c596116101645780638b63c1581161013e5780638b63c15814610346578063958c2e5214610379578063983c00a81461038e57806399d32fc4146103c4576101cd565b806371f3c596146102bf5780637bf0bd2e146102d45780637c28115b14610331576101cd565b8063447f25ef116101a0578063447f25ef146102425780634bd54f0414610269578063574f2ba31461027e5780636b4646ec14610293576101cd565b8063017e7e58146101d2578063094b7415146102035780631e3dd18b14610218576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610740565b604080516001600160a01b039092168252519081900360200190f35b34801561020f57600080fd5b506101e761074f565b34801561022457600080fd5b506101e76004803603602081101561023b57600080fd5b503561075e565b34801561024e57600080fd5b50610257610785565b60408051918252519081900360200190f35b34801561027557600080fd5b506101e7610801565b34801561028a57600080fd5b50610257610810565b34801561029f57600080fd5b506102bd600480360360208110156102b657600080fd5b5035610816565b005b3480156102cb57600080fd5b506101e76108bb565b3480156102e057600080fd5b5061031d600480360360808110156102f757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356108ca565b604080519115158252519081900360200190f35b34801561033d57600080fd5b506101e7610cc2565b34801561035257600080fd5b506102bd6004803603602081101561036957600080fd5b50356001600160a01b0316610cd1565b34801561038557600080fd5b506101e7610d91565b34801561039a57600080fd5b506102bd600480360360408110156103b157600080fd5b508035906020013563ffffffff16610da0565b3480156103d057600080fd5b50610257610f47565b3480156103e557600080fd5b506102bd600480360360408110156103fc57600080fd5b506001600160a01b0381351690602001356110b6565b34801561041e57600080fd5b506102bd6004803603602081101561043557600080fd5b50356001600160a01b031661118c565b34801561045157600080fd5b506101e7611202565b34801561046657600080fd5b50610257611211565b6104f9600480360361020081101561048657600080fd5b6040805180820182526001600160a01b0384358116946020810135821694848201359460608301359460808401946101808501351515946101a08101359091169381019290916102008301916101c084019060029083908390808284376000920191909152509194506112179350505050565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561052857600080fd5b506102bd6004803603602081101561053f57600080fd5b50356001600160a01b0316611650565b34801561055b57600080fd5b506102bd6004803603604081101561057257600080fd5b506001600160a01b038135811691602001351661176a565b34801561059657600080fd5b506101e7600480360360408110156105ad57600080fd5b506001600160a01b03813581169160200135166117ec565b3480156105d157600080fd5b506101e76118e7565b3480156105e657600080fd5b506102576118f6565b3480156105fb57600080fd5b506102576118fc565b34801561061057600080fd5b506101e76004803603604081101561062757600080fd5b506001600160a01b0381358116916020013516611902565b34801561064b57600080fd5b506106696004803603602081101561066257600080fd5b5035611928565b6040805163ffffffff9092168252519081900360200190f35b34801561068e57600080fd5b506101e760048036036101c08110156106a657600080fd5b6040805180820182526001600160a01b0384358116946020810135821694848201946101408301351515946101608401359094169391830192916101c083019161018084019060029083908390808284376000920191909152509194506119559350505050565b34801561071957600080fd5b506102bd6004803603602081101561073057600080fd5b50356001600160a01b0316611a0b565b6006546001600160a01b031681565b6009546001600160a01b031681565b600d818154811061076b57fe5b6000918252602090912001546001600160a01b0316905081565b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d60208110156107fa57600080fd5b5051919050565b6001546001600160a01b031681565b600d5490565b6009546001600160a01b0316331461086a576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b60648111156108b6576040805162461bcd60e51b81526020600482015260136024820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b604482015290519081900360640190fd5b600855565b6005546001600160a01b031681565b6000805a336000908152600e602052604090205490915060ff16610921576040805162461bcd60e51b815260206004820152600960248201526827b7363c903830b4b960b91b604482015290519081900360640190fd5b600a546001546001600160a01b03918216919081169088168114806109575750806001600160a01b0316876001600160a01b0316145b801561098f5750816001600160a01b0316886001600160a01b0316148061098f5750816001600160a01b0316876001600160a01b0316145b156109a05760009350505050610cba565b6001600160a01b038082166000908152600c60209081526040808320868516845290915290205416806109da576000945050505050610cba565b60008088156109f1576109ee858c8b611a81565b91505b8715610a0757610a02858b8a611a81565b820191505b81610aca576003546001600160a01b031615610abb573a5a60035460048054604080516305c2b27f60e21b81523293810193909352938b0362011d280194909402602482018190526001600160a01b039485166044830152925192945092169163170ac9fc9160648083019260209291908290030181600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b50505b60009650505050505050610cba565b600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6060811015610b3057600080fd5b50805160209091015190925090506001600160a01b038087169088161115610b5457905b8392506064846007546064030281610b6857fe5b04935083826001600160701b031601816001600160701b0316850281610b8a57fe5b049350336001600160a01b03166374de4ec4856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bd357600080fd5b505af1158015610be7573d6000803e3d6000fd5b50506003546001600160a01b0316159150610cad9050573a5a8962011d280103026064600854850281610c1657fe5b60035460048054604080516305c2b27f60e21b815232938101939093529490930494909401602485018190526001600160a01b0392831660448601529251929650169163170ac9fc9160648083019260209291908290030181600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b50505b6001985050505050505050505b949350505050565b6004546001600160a01b031681565b6009546001600160a01b03163314610d25576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b038116610d6f576040805162461bcd60e51b815260206004820152600c60248201526b41646472657373207a65726f60a01b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6009546001600160a01b03163314610df4576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6008821115610e38576040805162461bcd60e51b815260206004820152600b60248201526a15dc9bdb99c81d985c925160aa1b604482015290519081900360640190fd5b811580610e455750600782145b15610e9a5763ffffffff8116610e95576040805162461bcd60e51b815260206004820152601060248201526f57726f6e672074696d65206672616d6560801b604482015290519081900360640190fd5b610eea565b6127108163ffffffff161115610eea576040805162461bcd60e51b815260206004820152601060248201526f57726f6e672070657263656e7461676560801b604482015290519081900360640190fd5b6008821015610f2f578060008360088110610f0157fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550610f43565b6008821415610f435763ffffffff81166007555b5050565b6006546000906001600160a01b03163314610f9e576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610fe957600080fd5b505afa158015610ffd573d6000803e3d6000fd5b505050506040513d602081101561101357600080fd5b5051905080156110b157600a5460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50506040513392504780156108fc029250906000818181858888f193505050501580156110af573d6000803e3d6000fd5b505b905090565b336000908152600e602052604090205460ff16611106576040805162461bcd60e51b815260206004820152600960248201526827b7363c903830b4b960b91b604482015290519081900360640190fd5b600154604080516340c10f1960e01b81526001600160a01b03858116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b50505050565b6009546001600160a01b031633146111e0576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b600b5481565b6001600160a01b038089166000908152600c602090815260408083208b851684529091528120549091169081611294576040805162461bcd60e51b815260206004820152601b60248201527f44796e616d69633a20464f524b5f4f4e4c595f4558495354494e470000000000604482015290519081900360640190fd5b600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156112d057600080fd5b505afa1580156112e4573d6000803e3d6000fd5b505050506040513d60608110156112fa57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03808c16908d16101561137e57898210801561133557508881105b611379576040805162461bcd60e51b815260206004820152601060248201526f2732bb903837b7b61039b6b0b63632b960811b604482015290519081900360640190fd5b6113d0565b888210801561138c57508981105b6113d0576040805162461bcd60e51b815260206004820152601060248201526f2732bb903837b7b61039b6b0b63632b960811b604482015290519081900360640190fd5b6114088c8c8a60088060200260405190810160405280929190826008602002808284376000920191909152508c91508b90508a6121de565b935034156115b157600a546001600160a01b038d8116911614801561142c5750348a145b8061144e5750600a546001600160a01b038c8116911614801561144e57503489145b611489576040805162461bcd60e51b81526020600482015260076024820152660dcde40ae8aa8960cb1b604482015290519081900360640190fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b5050600a546040805163a9059cbb60e01b81526001600160a01b038a81166004830152346024830152915191909216945063a9059cbb9350604480830193506020928290030181600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d602081101561156f57600080fd5b505161157a57600080fd5b600a546001600160a01b038d81169116146115a05761159b8c33868d612597565b6115ac565b6115ac8b33868c612597565b6115c9565b6115bd8c33868d612597565b6115c98b33868c612597565b604080516335313c2160e11b815233600482015290516001600160a01b03861691636a6278429160248083019260209291908290030181600087803b15801561161157600080fd5b505af1158015611625573d6000803e3d6000fd5b505050506040513d602081101561163b57600080fd5b5051939c939b50929950505050505050505050565b6009546001600160a01b031633146116a4576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b0381166116b757600080fd5b600280546001600160a01b0319166001600160a01b038381169190911791829055604080516315ab88c960e31b81529051929091169163ad5c464891600480820192602092909190829003018186803b15801561171357600080fd5b505afa158015611727573d6000803e3d6000fd5b505050506040513d602081101561173d57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617908190551661176757600080fd5b50565b6009546001600160a01b031633146117be576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6001600160a01b038281166000908152600c6020908152604080832085851684529091528120549091161561185f576040805162461bcd60e51b815260206004820152601460248201527344796e616d69633a20504149525f45584953545360601b604482015290519081900360640190fd5b611867612799565b62015180815260646020820152604080516101008101918290526118dd91869186916000906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118935790505050505050600080866121de565b9150505b92915050565b6003546001600160a01b031681565b60075481565b60085481565b600c6020908152600092835260408084209091529082529020546001600160a01b031681565b6000816008811061193557fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b6001600160a01b038681166000908152600c602090815260408083208985168452909152812054909116156119c8576040805162461bcd60e51b815260206004820152601460248201527344796e616d69633a20504149525f45584953545360601b604482015290519081900360640190fd5b611a008787876008806020026040519081016040528092919082600860200280828437600092019190915250899150889050876121de565b979650505050505050565b6009546001600160a01b03163314611a5f576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000836001600160a01b0316836001600160a01b03161415611ab057611aa983333085612597565b50806121d7565b6001600160a01b038084166000908152600c60209081526040808320888516845290915281205490911680611bef576002546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b158015611b2457600080fd5b505afa158015611b38573d6000803e3d6000fd5b505050506040513d6020811015611b4e57600080fd5b50516040805163e6a4390560e01b81526001600160a01b0389811660048301528a8116602483015291519293509083169163e6a4390591604480820192602092909190829003018186803b158015611ba557600080fd5b505afa158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b505191506001600160a01b038216611bed57600093505050506121d7565b505b6001600160a01b038116331415611c0b576000925050506121d7565b611c1785338387612597565b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611c5357600080fd5b505afa158015611c67573d6000803e3d6000fd5b505050506040513d6060811015611c7d57600080fd5b50805160209091015190925090506001600160a01b038089169088161115611ca3578091505b6000876001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611cf257600080fd5b505afa158015611d06573d6000803e3d6000fd5b505050506040513d6020811015611d1c57600080fd5b505190506001600160701b038316811115611d42576001600160701b0383169003611d50565b6000955050505050506121d7565b8415611def57836001600160a01b0316635e1e6325828a8c6040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b158015611dbc57600080fd5b505afa158015611dd0573d6000803e3d6000fd5b505050506040513d6020811015611de657600080fd5b50519550611fd3565b60408051600280825260608083018452926020830190803683370190505090508881600081518110611e1d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508981600181518110611e4b57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810187815260248201928352865160448301528651606096949094169463d06ca61f94899489949092606490910191858201910280838360005b83811015611eca578181015183820152602001611eb2565b50505050905001935050505060006040518083038186803b158015611eee57600080fd5b505afa158015611f02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611f2b57600080fd5b8101908080516040519392919084640100000000821115611f4b57600080fd5b908301906020820185811115611f6057600080fd5b8251866020820283011164010000000082111715611f7d57600080fd5b82525081516020918201928201910280838360005b83811015611faa578181015183820152602001611f92565b50505050905001604052505050905080600181518110611fc657fe5b6020026020010151975050505b85611fe6576000955050505050506121d7565b886001600160a01b0316886001600160a01b031610156120ea57604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018a90523060648401819052608060848501908152845160a486018190526001600160a01b038b169663022c0d9f968e9590939092909160c48501918083838b5b8381101561207e578181015183820152602001612066565b50505050905090810190601f1680156120ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156120cd57600080fd5b505af11580156120e1573d6000803e3d6000fd5b505050506121d1565b604080516000808252602082019283905263022c0d9f60e01b835260248201898152604483018290523060648401819052608060848501908152845160a486018190526001600160a01b038b169663022c0d9f968e969590939092909160c48501918083838a5b83811015612169578181015183820152602001612151565b50505050905090810190601f1680156121965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121b857600080fd5b505af11580156121cc573d6000803e3d6000fd5b505050505b50505050505b9392505050565b6000856001600160a01b0316876001600160a01b03161415612247576040805162461bcd60e51b815260206004820152601c60248201527f44796e616d69633a204944454e544943414c5f41444452455353455300000000604482015290519081900360640190fd5b600080876001600160a01b0316896001600160a01b03161061226a57878961226d565b88885b90925090506001600160a01b0382166122c5576040805162461bcd60e51b815260206004820152601560248201527444796e616d69633a205a45524f5f4144445245535360581b604482015290519081900360640190fd5b60026001600160a01b0386811690841614156122e357506000612359565b816001600160a01b0316866001600160a01b0316141561230557506001612359565b6001600160a01b03861615612359576040805162461bcd60e51b81526020600482015260156024820152742bb937b73390383937ba32b1ba32b2103a37b5b2b760591b604482015290519081900360640190fd5b600b80546001019081905560408051606086811b6bffffffffffffffffffffffff199081166020808501919091529187901b16603483015260488083019490945282518083039094018452606890910190915281519101206005546123c7906001600160a01b0316826126f4565b9450846001600160a01b0316631591e6a185858c8c878c6040518763ffffffff1660e01b815260040180876001600160a01b03168152602001866001600160a01b0316815260200185600860200280838360005b8381101561243357818101518382015260200161241b565b50505050905001841515815260200183815260200182600260200280838360005b8381101561246c578181015183820152602001612454565b505050509050019650505050505050600060405180830381600087803b15801561249557600080fd5b505af11580156124a9573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600c602081815260408084208987168086529083528185208054978d166001600160a01b0319988916811790915593835281852086865283528185208054881685179055600d8054600181810183557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb590910180549099168617909855848652600e845294829020805460ff1916909717909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a3505050509695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061261c5780518252601f1990920191602091820191016125fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461267e576040519150601f19603f3d011682016040523d82523d6000602084013e612683565b606091505b50915091508180156126b15750805115806126b157508080602001905160208110156126ae57600080fd5b50515b6126ec5760405162461bcd60e51b81526004018080602001828103825260248152602001806127b86024913960400191505060405180910390fd5b505050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166118e1576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b6040518060400160405280600290602082028036833750919291505056fe5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122014b66875652521105fcea11da2250abf8b86e694fe0110f91ed81be047260dc064736f6c634300060c003300000000000000000000000044a707dfb86efb6b0e7c1ccc826ae1ced61d70fb0000000000000000000000008f7ed659d03ae5e820dc115d202c2f781fc38b1d
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80639a49090e116100f7578063c9c6539611610095578063e6a4390511610064578063e6a4390514610604578063e71a136a1461063f578063ec71730f14610682578063f46901ed1461070d576101cd565b8063c9c653961461058a578063d3f0c8bb146105c5578063e1b8277b146105da578063e39ccb55146105ef576101cd565b8063affed0e0116100d1578063affed0e01461045a578063bedc5ca61461046f578063c0d786551461051c578063c6276c971461054f576101cd565b80639a49090e146103d9578063a2e74af614610412578063ad5c464814610445576101cd565b806371f3c596116101645780638b63c1581161013e5780638b63c15814610346578063958c2e5214610379578063983c00a81461038e57806399d32fc4146103c4576101cd565b806371f3c596146102bf5780637bf0bd2e146102d45780637c28115b14610331576101cd565b8063447f25ef116101a0578063447f25ef146102425780634bd54f0414610269578063574f2ba31461027e5780636b4646ec14610293576101cd565b8063017e7e58146101d2578063094b7415146102035780631e3dd18b14610218576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610740565b604080516001600160a01b039092168252519081900360200190f35b34801561020f57600080fd5b506101e761074f565b34801561022457600080fd5b506101e76004803603602081101561023b57600080fd5b503561075e565b34801561024e57600080fd5b50610257610785565b60408051918252519081900360200190f35b34801561027557600080fd5b506101e7610801565b34801561028a57600080fd5b50610257610810565b34801561029f57600080fd5b506102bd600480360360208110156102b657600080fd5b5035610816565b005b3480156102cb57600080fd5b506101e76108bb565b3480156102e057600080fd5b5061031d600480360360808110156102f757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356108ca565b604080519115158252519081900360200190f35b34801561033d57600080fd5b506101e7610cc2565b34801561035257600080fd5b506102bd6004803603602081101561036957600080fd5b50356001600160a01b0316610cd1565b34801561038557600080fd5b506101e7610d91565b34801561039a57600080fd5b506102bd600480360360408110156103b157600080fd5b508035906020013563ffffffff16610da0565b3480156103d057600080fd5b50610257610f47565b3480156103e557600080fd5b506102bd600480360360408110156103fc57600080fd5b506001600160a01b0381351690602001356110b6565b34801561041e57600080fd5b506102bd6004803603602081101561043557600080fd5b50356001600160a01b031661118c565b34801561045157600080fd5b506101e7611202565b34801561046657600080fd5b50610257611211565b6104f9600480360361020081101561048657600080fd5b6040805180820182526001600160a01b0384358116946020810135821694848201359460608301359460808401946101808501351515946101a08101359091169381019290916102008301916101c084019060029083908390808284376000920191909152509194506112179350505050565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561052857600080fd5b506102bd6004803603602081101561053f57600080fd5b50356001600160a01b0316611650565b34801561055b57600080fd5b506102bd6004803603604081101561057257600080fd5b506001600160a01b038135811691602001351661176a565b34801561059657600080fd5b506101e7600480360360408110156105ad57600080fd5b506001600160a01b03813581169160200135166117ec565b3480156105d157600080fd5b506101e76118e7565b3480156105e657600080fd5b506102576118f6565b3480156105fb57600080fd5b506102576118fc565b34801561061057600080fd5b506101e76004803603604081101561062757600080fd5b506001600160a01b0381358116916020013516611902565b34801561064b57600080fd5b506106696004803603602081101561066257600080fd5b5035611928565b6040805163ffffffff9092168252519081900360200190f35b34801561068e57600080fd5b506101e760048036036101c08110156106a657600080fd5b6040805180820182526001600160a01b0384358116946020810135821694848201946101408301351515946101608401359094169391830192916101c083019161018084019060029083908390808284376000920191909152509194506119559350505050565b34801561071957600080fd5b506102bd6004803603602081101561073057600080fd5b50356001600160a01b0316611a0b565b6006546001600160a01b031681565b6009546001600160a01b031681565b600d818154811061076b57fe5b6000918252602090912001546001600160a01b0316905081565b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107d057600080fd5b505afa1580156107e4573d6000803e3d6000fd5b505050506040513d60208110156107fa57600080fd5b5051919050565b6001546001600160a01b031681565b600d5490565b6009546001600160a01b0316331461086a576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b60648111156108b6576040805162461bcd60e51b81526020600482015260136024820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b604482015290519081900360640190fd5b600855565b6005546001600160a01b031681565b6000805a336000908152600e602052604090205490915060ff16610921576040805162461bcd60e51b815260206004820152600960248201526827b7363c903830b4b960b91b604482015290519081900360640190fd5b600a546001546001600160a01b03918216919081169088168114806109575750806001600160a01b0316876001600160a01b0316145b801561098f5750816001600160a01b0316886001600160a01b0316148061098f5750816001600160a01b0316876001600160a01b0316145b156109a05760009350505050610cba565b6001600160a01b038082166000908152600c60209081526040808320868516845290915290205416806109da576000945050505050610cba565b60008088156109f1576109ee858c8b611a81565b91505b8715610a0757610a02858b8a611a81565b820191505b81610aca576003546001600160a01b031615610abb573a5a60035460048054604080516305c2b27f60e21b81523293810193909352938b0362011d280194909402602482018190526001600160a01b039485166044830152925192945092169163170ac9fc9160648083019260209291908290030181600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b505050506040513d6020811015610ab857600080fd5b50505b60009650505050505050610cba565b600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6060811015610b3057600080fd5b50805160209091015190925090506001600160a01b038087169088161115610b5457905b8392506064846007546064030281610b6857fe5b04935083826001600160701b031601816001600160701b0316850281610b8a57fe5b049350336001600160a01b03166374de4ec4856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bd357600080fd5b505af1158015610be7573d6000803e3d6000fd5b50506003546001600160a01b0316159150610cad9050573a5a8962011d280103026064600854850281610c1657fe5b60035460048054604080516305c2b27f60e21b815232938101939093529490930494909401602485018190526001600160a01b0392831660448601529251929650169163170ac9fc9160648083019260209291908290030181600087803b158015610c8057600080fd5b505af1158015610c94573d6000803e3d6000fd5b505050506040513d6020811015610caa57600080fd5b50505b6001985050505050505050505b949350505050565b6004546001600160a01b031681565b6009546001600160a01b03163314610d25576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b038116610d6f576040805162461bcd60e51b815260206004820152600c60248201526b41646472657373207a65726f60a01b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6009546001600160a01b03163314610df4576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6008821115610e38576040805162461bcd60e51b815260206004820152600b60248201526a15dc9bdb99c81d985c925160aa1b604482015290519081900360640190fd5b811580610e455750600782145b15610e9a5763ffffffff8116610e95576040805162461bcd60e51b815260206004820152601060248201526f57726f6e672074696d65206672616d6560801b604482015290519081900360640190fd5b610eea565b6127108163ffffffff161115610eea576040805162461bcd60e51b815260206004820152601060248201526f57726f6e672070657263656e7461676560801b604482015290519081900360640190fd5b6008821015610f2f578060008360088110610f0157fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550610f43565b6008821415610f435763ffffffff81166007555b5050565b6006546000906001600160a01b03163314610f9e576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610fe957600080fd5b505afa158015610ffd573d6000803e3d6000fd5b505050506040513d602081101561101357600080fd5b5051905080156110b157600a5460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b50506040513392504780156108fc029250906000818181858888f193505050501580156110af573d6000803e3d6000fd5b505b905090565b336000908152600e602052604090205460ff16611106576040805162461bcd60e51b815260206004820152600960248201526827b7363c903830b4b960b91b604482015290519081900360640190fd5b600154604080516340c10f1960e01b81526001600160a01b03858116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b505050506040513d602081101561118657600080fd5b50505050565b6009546001600160a01b031633146111e0576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b600b5481565b6001600160a01b038089166000908152600c602090815260408083208b851684529091528120549091169081611294576040805162461bcd60e51b815260206004820152601b60248201527f44796e616d69633a20464f524b5f4f4e4c595f4558495354494e470000000000604482015290519081900360640190fd5b600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156112d057600080fd5b505afa1580156112e4573d6000803e3d6000fd5b505050506040513d60608110156112fa57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03808c16908d16101561137e57898210801561133557508881105b611379576040805162461bcd60e51b815260206004820152601060248201526f2732bb903837b7b61039b6b0b63632b960811b604482015290519081900360640190fd5b6113d0565b888210801561138c57508981105b6113d0576040805162461bcd60e51b815260206004820152601060248201526f2732bb903837b7b61039b6b0b63632b960811b604482015290519081900360640190fd5b6114088c8c8a60088060200260405190810160405280929190826008602002808284376000920191909152508c91508b90508a6121de565b935034156115b157600a546001600160a01b038d8116911614801561142c5750348a145b8061144e5750600a546001600160a01b038c8116911614801561144e57503489145b611489576040805162461bcd60e51b81526020600482015260076024820152660dcde40ae8aa8960cb1b604482015290519081900360640190fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114d957600080fd5b505af11580156114ed573d6000803e3d6000fd5b5050600a546040805163a9059cbb60e01b81526001600160a01b038a81166004830152346024830152915191909216945063a9059cbb9350604480830193506020928290030181600087803b15801561154557600080fd5b505af1158015611559573d6000803e3d6000fd5b505050506040513d602081101561156f57600080fd5b505161157a57600080fd5b600a546001600160a01b038d81169116146115a05761159b8c33868d612597565b6115ac565b6115ac8b33868c612597565b6115c9565b6115bd8c33868d612597565b6115c98b33868c612597565b604080516335313c2160e11b815233600482015290516001600160a01b03861691636a6278429160248083019260209291908290030181600087803b15801561161157600080fd5b505af1158015611625573d6000803e3d6000fd5b505050506040513d602081101561163b57600080fd5b5051939c939b50929950505050505050505050565b6009546001600160a01b031633146116a4576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b0381166116b757600080fd5b600280546001600160a01b0319166001600160a01b038381169190911791829055604080516315ab88c960e31b81529051929091169163ad5c464891600480820192602092909190829003018186803b15801561171357600080fd5b505afa158015611727573d6000803e3d6000fd5b505050506040513d602081101561173d57600080fd5b5051600a80546001600160a01b0319166001600160a01b0392831617908190551661176757600080fd5b50565b6009546001600160a01b031633146117be576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b6001600160a01b038281166000908152600c6020908152604080832085851684529091528120549091161561185f576040805162461bcd60e51b815260206004820152601460248201527344796e616d69633a20504149525f45584953545360601b604482015290519081900360640190fd5b611867612799565b62015180815260646020820152604080516101008101918290526118dd91869186916000906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118935790505050505050600080866121de565b9150505b92915050565b6003546001600160a01b031681565b60075481565b60085481565b600c6020908152600092835260408084209091529082529020546001600160a01b031681565b6000816008811061193557fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b6001600160a01b038681166000908152600c602090815260408083208985168452909152812054909116156119c8576040805162461bcd60e51b815260206004820152601460248201527344796e616d69633a20504149525f45584953545360601b604482015290519081900360640190fd5b611a008787876008806020026040519081016040528092919082600860200280828437600092019190915250899150889050876121de565b979650505050505050565b6009546001600160a01b03163314611a5f576040805162461bcd60e51b8152602060048201526012602482015271223cb730b6b4b19d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000836001600160a01b0316836001600160a01b03161415611ab057611aa983333085612597565b50806121d7565b6001600160a01b038084166000908152600c60209081526040808320888516845290915281205490911680611bef576002546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b158015611b2457600080fd5b505afa158015611b38573d6000803e3d6000fd5b505050506040513d6020811015611b4e57600080fd5b50516040805163e6a4390560e01b81526001600160a01b0389811660048301528a8116602483015291519293509083169163e6a4390591604480820192602092909190829003018186803b158015611ba557600080fd5b505afa158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b505191506001600160a01b038216611bed57600093505050506121d7565b505b6001600160a01b038116331415611c0b576000925050506121d7565b611c1785338387612597565b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611c5357600080fd5b505afa158015611c67573d6000803e3d6000fd5b505050506040513d6060811015611c7d57600080fd5b50805160209091015190925090506001600160a01b038089169088161115611ca3578091505b6000876001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611cf257600080fd5b505afa158015611d06573d6000803e3d6000fd5b505050506040513d6020811015611d1c57600080fd5b505190506001600160701b038316811115611d42576001600160701b0383169003611d50565b6000955050505050506121d7565b8415611def57836001600160a01b0316635e1e6325828a8c6040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b158015611dbc57600080fd5b505afa158015611dd0573d6000803e3d6000fd5b505050506040513d6020811015611de657600080fd5b50519550611fd3565b60408051600280825260608083018452926020830190803683370190505090508881600081518110611e1d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508981600181518110611e4b57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810187815260248201928352865160448301528651606096949094169463d06ca61f94899489949092606490910191858201910280838360005b83811015611eca578181015183820152602001611eb2565b50505050905001935050505060006040518083038186803b158015611eee57600080fd5b505afa158015611f02573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611f2b57600080fd5b8101908080516040519392919084640100000000821115611f4b57600080fd5b908301906020820185811115611f6057600080fd5b8251866020820283011164010000000082111715611f7d57600080fd5b82525081516020918201928201910280838360005b83811015611faa578181015183820152602001611f92565b50505050905001604052505050905080600181518110611fc657fe5b6020026020010151975050505b85611fe6576000955050505050506121d7565b886001600160a01b0316886001600160a01b031610156120ea57604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018a90523060648401819052608060848501908152845160a486018190526001600160a01b038b169663022c0d9f968e9590939092909160c48501918083838b5b8381101561207e578181015183820152602001612066565b50505050905090810190601f1680156120ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156120cd57600080fd5b505af11580156120e1573d6000803e3d6000fd5b505050506121d1565b604080516000808252602082019283905263022c0d9f60e01b835260248201898152604483018290523060648401819052608060848501908152845160a486018190526001600160a01b038b169663022c0d9f968e969590939092909160c48501918083838a5b83811015612169578181015183820152602001612151565b50505050905090810190601f1680156121965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121b857600080fd5b505af11580156121cc573d6000803e3d6000fd5b505050505b50505050505b9392505050565b6000856001600160a01b0316876001600160a01b03161415612247576040805162461bcd60e51b815260206004820152601c60248201527f44796e616d69633a204944454e544943414c5f41444452455353455300000000604482015290519081900360640190fd5b600080876001600160a01b0316896001600160a01b03161061226a57878961226d565b88885b90925090506001600160a01b0382166122c5576040805162461bcd60e51b815260206004820152601560248201527444796e616d69633a205a45524f5f4144445245535360581b604482015290519081900360640190fd5b60026001600160a01b0386811690841614156122e357506000612359565b816001600160a01b0316866001600160a01b0316141561230557506001612359565b6001600160a01b03861615612359576040805162461bcd60e51b81526020600482015260156024820152742bb937b73390383937ba32b1ba32b2103a37b5b2b760591b604482015290519081900360640190fd5b600b80546001019081905560408051606086811b6bffffffffffffffffffffffff199081166020808501919091529187901b16603483015260488083019490945282518083039094018452606890910190915281519101206005546123c7906001600160a01b0316826126f4565b9450846001600160a01b0316631591e6a185858c8c878c6040518763ffffffff1660e01b815260040180876001600160a01b03168152602001866001600160a01b0316815260200185600860200280838360005b8381101561243357818101518382015260200161241b565b50505050905001841515815260200183815260200182600260200280838360005b8381101561246c578181015183820152602001612454565b505050509050019650505050505050600060405180830381600087803b15801561249557600080fd5b505af11580156124a9573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600c602081815260408084208987168086529083528185208054978d166001600160a01b0319988916811790915593835281852086865283528185208054881685179055600d8054600181810183557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb590910180549099168617909855848652600e845294829020805460ff1916909717909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a3505050509695505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061261c5780518252601f1990920191602091820191016125fd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461267e576040519150601f19603f3d011682016040523d82523d6000602084013e612683565b606091505b50915091508180156126b15750805115806126b157508080602001905160208110156126ae57600080fd5b50515b6126ec5760405162461bcd60e51b81526004018080602001828103825260248152602001806127b86024913960400191505060405180910390fd5b505050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b0381166118e1576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b6040518060400160405280600290602082028036833750919291505056fe5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122014b66875652521105fcea11da2250abf8b86e694fe0110f91ed81be047260dc064736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000044a707dfb86efb6b0e7c1ccc826ae1ced61d70fb0000000000000000000000008f7ed659d03ae5e820dc115d202c2f781fc38b1d
-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0x44A707Dfb86EfB6B0E7c1cCc826ae1ceD61D70fb
Arg [1] : _pairImplementation (address): 0x8F7eD659D03AE5e820dc115D202c2f781Fc38B1d
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000044a707dfb86efb6b0e7c1ccc826ae1ced61d70fb
Arg [1] : 0000000000000000000000008f7ed659d03ae5e820dc115d202c2f781fc38b1d
Deployed Bytecode Sourcemap
788:15012:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:20;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2394:20:0;;;;;;;;;;;;;;2645:26;;;;;;;;;;;;;:::i;2900:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2900:25:0;;:::i;15213:137::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2013:22;;;;;;;;;;;;;:::i;3415:96::-;;;;;;;;;;;;;:::i;14359:233::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14359:233:0;;:::i;:::-;;2298:33;;;;;;;;;;;;;:::i;8598:2032::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8598:2032:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2210:33;;;;;;;;;;;;;:::i;14634:209::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14634:209:0;-1:-1:-1;;;;;14634:209:0;;:::i;2069:26::-;;;;;;;;;;;;;:::i;13380:582::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13380:582:0;;;;;;;;;:::i;15358:402::-;;;;;;;;;;;;;:::i;8407:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8407:183:0;;;;;;;;:::i;8197:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8197:167:0;-1:-1:-1;;;;;8197:167:0;;:::i;2776:19::-;;;;;;;;;;;;;:::i;2804:20::-;;;;;;;;;;;;;:::i;4605:1881::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4605:1881:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4605:1881:0;;-1:-1:-1;4605:1881:0;;-1:-1:-1;;;;4605:1881:0:i;:::-;;;;-1:-1:-1;;;;;4605:1881:0;;;;;;;;;;;;;;;;;;;;;14006:285;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14006:285:0;-1:-1:-1;;;;;14006:285:0;;:::i;14958:245::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14958:245:0;;;;;;;;;;:::i;3519:384::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3519:384:0;;;;;;;;;;:::i;2131:28::-;;;;;;;;;;;;;:::i;2421:29::-;;;;;;;;;;;;;:::i;2568:37::-;;;;;;;;;;;;;:::i;2831:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2831:62:0;;;;;;;;;;:::i;925:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;925:21:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;3911:686;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3911:686:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3911:686:0;;-1:-1:-1;3911:686:0;;-1:-1:-1;;;;3911:686:0:i;8046:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8046:143:0;-1:-1:-1;;;;;8046:143:0;;:::i;2394:20::-;;;-1:-1:-1;;;;;2394:20:0;;:::o;2645:26::-;;;-1:-1:-1;;;;;2645:26:0;;:::o;2900:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2900:25:0;;-1:-1:-1;2900:25:0;:::o;15213:137::-;15312:4;;15305:37;;;-1:-1:-1;;;15305:37:0;;15336:4;15305:37;;;;;;15263:17;;-1:-1:-1;;;;;15312:4:0;;15305:22;;:37;;;;;;;;;;;;;;15312:4;15305:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15305:37:0;;15213:137;-1:-1:-1;15213:137:0:o;2013:22::-;;;-1:-1:-1;;;;;2013:22:0;;:::o;3415:96::-;3488:8;:15;3415:96;:::o;14359:233::-;14450:11;;-1:-1:-1;;;;;14450:11:0;14436:10;:25;14428:56;;;;;-1:-1:-1;;;14428:56:0;;;;;;;;;;;;-1:-1:-1;;;14428:56:0;;;;;;;;;;;;;;;14517:3;14503:10;:17;;14495:49;;;;;-1:-1:-1;;;14495:49:0;;;;;;;;;;;;-1:-1:-1;;;14495:49:0;;;;;;;;;;;;;;;14555:16;:29;14359:233::o;2298:33::-;;;-1:-1:-1;;;;;2298:33:0;;:::o;8598:2032::-;8686:4;8736:9;8748;8783:10;8776:18;;;;:6;:18;;;;;;8736:21;;-1:-1:-1;8776:18:0;;8768:40;;;;;-1:-1:-1;;;8768:40:0;;;;;;;;;;;;-1:-1:-1;;;8768:40:0;;;;;;;;;;;;;;;8835:4;;;8869:7;-1:-1:-1;;;;;8835:4:0;;;;8869:7;;;;8892:18;;;;;:40;;;8924:8;-1:-1:-1;;;;;8914:18:0;:6;-1:-1:-1;;;;;8914:18:0;;8892:40;8891:82;;;;;8948:5;-1:-1:-1;;;;;8938:15:0;:6;-1:-1:-1;;;;;8938:15:0;;:34;;;;8967:5;-1:-1:-1;;;;;8957:15:0;:6;-1:-1:-1;;;;;8957:15:0;;8938:34;8887:100;;;8982:5;8975:12;;;;;;;8887:100;-1:-1:-1;;;;;9068:17:0;;;9045:20;9068:17;;;:7;:17;;;;;;;;:24;;;;;;;;;;;;9107:26;9103:44;;9142:5;9135:12;;;;;;;;9103:44;9158:11;;9203:9;;9199:53;;9223:29;9232:5;9239:6;9247:4;9223:8;:29::i;:::-;9214:38;;9199:53;9267:9;;9263:54;;9288:29;9297:5;9304:6;9312:4;9288:8;:29::i;:::-;9278:39;;;;9263:54;9332:11;9328:338;;9364:13;;-1:-1:-1;;;;;9364:13:0;:27;9360:268;;9448:11;9435:9;9514:13;;9566:18;;;9499:86;;;-1:-1:-1;;;9499:86:0;;9550:9;9499:86;;;;;;;9420:24;;;:5;:24;9419:40;;;;9499:86;;;;;;-1:-1:-1;;;;;9566:18:0;;;9499:86;;;;;;9419:40;;-1:-1:-1;9514:13:0;;;9499:50;;:86;;;;;;;;;;;;;;9514:13;;9499:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9360:268:0;9649:5;9642:12;;;;;;;;;;9328:338;9677:17;9696;9731:12;-1:-1:-1;;;;;9718:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9718:40:0;;;;;;;;;-1:-1:-1;9718:40:0;-1:-1:-1;;;;;;9773:16:0;;;;;;;9769:126;;;9832:9;9769:126;9911:6;9905:12;;9966:3;9957:6;9944:9;;9938:3;:15;9937:26;:32;;;;;;9928:41;;10220:6;10208:9;-1:-1:-1;;;;;10208:18:0;;10194:9;-1:-1:-1;;;;;10185:18:0;:6;:18;10184:43;;;;;;10175:52;;10251:10;-1:-1:-1;;;;;10238:34:0;;10273:6;10238:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10316:13:0;;-1:-1:-1;;;;;10316:13:0;:27;;-1:-1:-1;10312:289:0;;-1:-1:-1;10312:289:0;10429:11;10416:9;10409:4;10401:5;:12;:24;10400:40;10392:3;10373:16;;10367:3;:22;:28;;;;;10491:13;;10543:18;;;10476:86;;;-1:-1:-1;;;10476:86:0;;10527:9;10476:86;;;;;;;10367:28;;;;10366:75;;;;10476:86;;;;;;-1:-1:-1;;;;;10543:18:0;;;10476:86;;;;;;10366:75;;-1:-1:-1;10491:13:0;;10476:50;;:86;;;;;;;;;;;;;;10491:13;;10476:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10312:289:0;10618:4;10611:11;;;;;;;;;;8598:2032;;;;;;;:::o;2210:33::-;;;-1:-1:-1;;;;;2210:33:0;;:::o;14634:209::-;14714:11;;-1:-1:-1;;;;;14714:11:0;14700:10;:25;14692:56;;;;;-1:-1:-1;;;14692:56:0;;;;;;;;;;;;-1:-1:-1;;;14692:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14767:22:0;;14759:47;;;;;-1:-1:-1;;;14759:47:0;;;;;;;;;;;;-1:-1:-1;;;14759:47:0;;;;;;;;;;;;;;;14817:7;:18;;-1:-1:-1;;;;;;14817:18:0;-1:-1:-1;;;;;14817:18:0;;;;;;;;;;14634:209::o;2069:26::-;;;-1:-1:-1;;;;;2069:26:0;;:::o;13380:582::-;13465:11;;-1:-1:-1;;;;;13465:11:0;13451:10;:25;13443:56;;;;;-1:-1:-1;;;13443:56:0;;;;;;;;;;;;-1:-1:-1;;;13443:56:0;;;;;;;;;;;;;;;13527:11;13518:5;:20;;13510:44;;;;;-1:-1:-1;;;13510:44:0;;;;;;;;;;;;-1:-1:-1;;;13510:44:0;;;;;;;;;;;;;;;13569:29;;;:61;;-1:-1:-1;13616:13:0;13602:5;:28;13569:61;13565:191;;;13653:10;;;13645:39;;;;;-1:-1:-1;;;13645:39:0;;;;;;;;;;;;-1:-1:-1;;;13645:39:0;;;;;;;;;;;;;;;13565:191;;;13730:5;13721;:14;;;;13713:43;;;;;-1:-1:-1;;;13713:43:0;;;;;;;;;;;;-1:-1:-1;;;13713:43:0;;;;;;;;;;;;;;;13779:11;13771:5;:19;13767:92;;;13821:5;13807:4;13812:5;13807:11;;;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13841:7;;13767:92;13882:11;13873:5;:20;13869:86;;;13910:17;;;:9;:17;13869:86;13380:582;;:::o;15358:402::-;15438:5;;15396:7;;-1:-1:-1;;;;;15438:5:0;15424:10;:19;15416:50;;;;;-1:-1:-1;;;15416:50:0;;;;;;;;;;;;-1:-1:-1;;;15416:50:0;;;;;;;;;;;;;;;15499:4;;15492:37;;;-1:-1:-1;;;15492:37:0;;15523:4;15492:37;;;;;;15477:12;;-1:-1:-1;;;;;15499:4:0;;15492:22;;:37;;;;;;;;;;;;;;15499:4;15492:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15492:37:0;;-1:-1:-1;15544:12:0;;15540:188;;15579:4;;15573:29;;;-1:-1:-1;;;15573:29:0;;;;;;;;;;-1:-1:-1;;;;;15579:4:0;;;;15573:20;;:29;;;;;15579:4;;15573:29;;;;;;;;15579:4;;15573:29;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15617:42:0;;:10;;-1:-1:-1;15637:21:0;15617:42;;;;;-1:-1:-1;15637:21:0;15617:42;;;;15637:21;15617:10;:42;;;;;;;;;;;;;;;;;;;;;15540:188;15745:7;-1:-1:-1;15358:402:0;:::o;8407:183::-;8487:10;8480:18;;;;:6;:18;;;;;;;;8472:40;;;;;-1:-1:-1;;;8472:40:0;;;;;;;;;;;;-1:-1:-1;;;8472:40:0;;;;;;;;;;;;;;;8557:7;;8550:32;;;-1:-1:-1;;;8550:32:0;;-1:-1:-1;;;;;8550:32:0;;;;;;;;;;;;;;;8557:7;;;;;8550:20;;:32;;;;;;;;;;;;;;8557:7;;8550:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;8407:183:0:o;8197:167::-;8285:11;;-1:-1:-1;;;;;8285:11:0;8271:10;:25;8263:56;;;;;-1:-1:-1;;;8263:56:0;;;;;;;;;;;;-1:-1:-1;;;8263:56:0;;;;;;;;;;;;;;;8330:11;:26;;-1:-1:-1;;;;;;8330:26:0;-1:-1:-1;;;;;8330:26:0;;;;;;;;;;8197:167::o;2776:19::-;;;-1:-1:-1;;;;;2776:19:0;;:::o;2804:20::-;;;;:::o;4605:1881::-;-1:-1:-1;;;;;5237:15:0;;;5184:12;5237:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;;;;5279:18;5271:58;;;;;-1:-1:-1;;;5271:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5421:13;5436;5467:4;-1:-1:-1;;;;;5454:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5454:32:0;;;;;;;-1:-1:-1;;;;;5420:66:0;;;;-1:-1:-1;5420:66:0;;-1:-1:-1;;;;;;5501:15:0;;;;;;;5497:175;;;5537:7;5526:8;:18;:40;;;;;5559:7;5548:8;:18;5526:40;5518:69;;;;;-1:-1:-1;;;5518:69:0;;;;;;;;;;;;-1:-1:-1;;;5518:69:0;;;;;;;;;;;;;;;5497:175;;;5622:7;5611:8;:18;:40;;;;;5644:7;5633:8;:18;5611:40;5603:69;;;;;-1:-1:-1;;;5603:69:0;;;;;;;;;;;;-1:-1:-1;;;5603:69:0;;;;;;;;;;;;;;;5692:71;5704:6;5712;5720:5;5692:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5727:9:0;;-1:-1:-1;5738:14:0;;-1:-1:-1;5754:8:0;5692:11;:71::i;:::-;5685:78;-1:-1:-1;5780:9:0;:14;5776:645;;5848:4;;-1:-1:-1;;;;;5838:14:0;;;5848:4;;5838:14;:38;;;;;5867:9;5856:7;:20;5838:38;5837:102;;;-1:-1:-1;5910:4:0;;-1:-1:-1;;;;;5900:14:0;;;5910:4;;5900:14;:38;;;;;5929:9;5918:7;:20;5900:38;5811:172;;;;;-1:-1:-1;;;5811:172:0;;;;;;;;;;;;-1:-1:-1;;;5811:172:0;;;;;;;;;;;;;;;6004:4;;;;;;;;;-1:-1:-1;;;;;6004:4:0;-1:-1:-1;;;;;5998:19:0;;6025:9;5998:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6066:4:0;;6060:37;;;-1:-1:-1;;;6060:37:0;;-1:-1:-1;;;;;6060:37:0;;;;;;;6087:9;6060:37;;;;;;6066:4;;;;;-1:-1:-1;6060:20:0;;-1:-1:-1;6060:37:0;;;;;-1:-1:-1;6060:37:0;;;;;;;6066:4;;6060:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6060:37:0;6052:46;;;;;;6127:4;;-1:-1:-1;;;;;6117:14:0;;;6127:4;;6117:14;6113:144;;6133:52;6151:6;6159:10;6171:4;6177:7;6133:17;:52::i;:::-;6113:144;;;6205:52;6223:6;6231:10;6243:4;6249:7;6205:17;:52::i;:::-;5776:645;;;6290:52;6308:6;6316:10;6328:4;6334:7;6290:17;:52::i;:::-;6357;6375:6;6383:10;6395:4;6401:7;6357:17;:52::i;:::-;6443:35;;;-1:-1:-1;;;6443:35:0;;6467:10;6443:35;;;;;;-1:-1:-1;;;;;6443:23:0;;;;;:35;;;;;;;;;;;;;;-1:-1:-1;6443:23:0;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6443:35:0;4605:1881;;6443:35;;-1:-1:-1;4605:1881:0;;-1:-1:-1;;;;;;;;;;4605:1881:0:o;14006:285::-;14084:11;;-1:-1:-1;;;;;14084:11:0;14070:10;:25;14062:56;;;;;-1:-1:-1;;;14062:56:0;;;;;;;;;;;;-1:-1:-1;;;14062:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14137:21:0;;14129:30;;;;;;14170:11;:21;;-1:-1:-1;;;;;;14170:21:0;-1:-1:-1;;;;;14170:21:0;;;;;;;;;;;14209:36;;;-1:-1:-1;;;14209:36:0;;;;14226:11;;;;;14209:34;;:36;;;;;;;;;;;;;;;14226:11;14209:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14209:36:0;14202:4;:43;;-1:-1:-1;;;;;;14202:43:0;-1:-1:-1;;;;;14202:43:0;;;;;;;;14264:4;14256:27;;;;;;14006:285;:::o;14958:245::-;15082:11;;-1:-1:-1;;;;;15082:11:0;15068:10;:25;15060:56;;;;;-1:-1:-1;;;15060:56:0;;;;;;;;;;;;-1:-1:-1;;;15060:56:0;;;;;;;;;;;;;;;15127:13;:30;;-1:-1:-1;;;;;15127:30:0;;;-1:-1:-1;;;;;;15127:30:0;;;;;;;15168:18;:27;;;;;;;;;;;14958:245::o;3519:384::-;-1:-1:-1;;;;;3622:15:0;;;3589:12;3622:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;3589:12;;3622:23;:37;3614:70;;;;;-1:-1:-1;;;3614:70:0;;;;;;;;;;;;-1:-1:-1;;;3614:70:0;;;;;;;;;;;;;;;3725:25;;:::i;:::-;3775:6;3761:20;;3806:3;3761:11;3792;;:17;3833:62;;;;;;;;;;;;3845:6;;3853;;3770:1;;3833:62;;3770:1;;3833:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3867:5;3882:1;3886:8;3833:11;:62::i;:::-;3826:69;;;3519:384;;;;;:::o;2131:28::-;;;-1:-1:-1;;;;;2131:28:0;;:::o;2421:29::-;;;;:::o;2568:37::-;;;;:::o;2831:62::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2831:62:0;;:::o;925:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3911:686::-;-1:-1:-1;;;;;4408:15:0;;;4369:12;4408:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;4369:12;;4408:23;:37;4400:70;;;;;-1:-1:-1;;;4400:70:0;;;;;;;;;;;;-1:-1:-1;;;4400:70:0;;;;;;;;;;;;;;;4518:71;4530:6;4538;4546:5;4518:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4553:9:0;;-1:-1:-1;4564:14:0;;-1:-1:-1;4580:8:0;4518:11;:71::i;:::-;4511:78;3911:686;-1:-1:-1;;;;;;;3911:686:0:o;8046:143::-;8122:11;;-1:-1:-1;;;;;8122:11:0;8108:10;:25;8100:56;;;;;-1:-1:-1;;;8100:56:0;;;;;;;;;;;;-1:-1:-1;;;8100:56:0;;;;;;;;;;;;;;;8167:5;:14;;-1:-1:-1;;;;;;8167:14:0;-1:-1:-1;;;;;8167:14:0;;;;;;;;;;8046:143::o;10688:1903::-;10771:14;10812:5;-1:-1:-1;;;;;10802:15:0;:6;-1:-1:-1;;;;;10802:15:0;;10798:144;;;10834:64;10852:6;10860:10;10880:4;10887:10;10834:17;:64::i;:::-;-1:-1:-1;10920:10:0;10913:17;;10798:144;-1:-1:-1;;;;;10993:15:0;;;10952:14;10993:15;;;:7;:15;;;;;;;;:22;;;;;;;;;;;10952:14;;10993:22;11030:19;11026:332;;11102:11;;11085:39;;;-1:-1:-1;;;11085:39:0;;;;11066:16;;-1:-1:-1;;;;;11102:11:0;;11085:37;;:39;;;;;;;;;;;;;;11102:11;11085:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11085:39:0;11147:48;;;-1:-1:-1;;;11147:48:0;;-1:-1:-1;;;;;11147:48:0;;;;;;;;;;;;;;;;11085:39;;-1:-1:-1;11147:33:0;;;;;;:48;;;;;11085:39;;11147:48;;;;;;;;:33;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11147:48:0;;-1:-1:-1;;;;;;11214:19:0;;11210:33;;11242:1;11235:8;;;;;;;11210:33;11026:332;;-1:-1:-1;;;;;11372:19:0;;11381:10;11372:19;11368:33;;;11400:1;11393:8;;;;;;11368:33;11444:56;11462:6;11470:10;11482:5;11489:10;11444:17;:56::i;:::-;11512:17;11531;11566:5;-1:-1:-1;;;;;11553:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11553:33:0;;;;;;;;;-1:-1:-1;11553:33:0;-1:-1:-1;;;;;;11601:14:0;;;;;;;11597:41;;;11629:9;11617:21;;11597:41;11743:16;11769:6;-1:-1:-1;;;;;11762:24:0;;11795:5;11762:40;;;;;;;;;;;;;-1:-1:-1;;;;;11762:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11762:40:0;;-1:-1:-1;;;;;;11817:23:0;;;;11813:96;;;-1:-1:-1;;;;;11870:15:0;;11856:29;;11813:96;;;11908:1;11901:8;;;;;;;;;11813:96;11924:9;11920:399;;;11975:5;-1:-1:-1;;;;;11962:32:0;;11995:11;12008:6;12016:5;11962:60;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11962:60:0;;;;;;-1:-1:-1;;;;;11962:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11962:60:0;;-1:-1:-1;11920:399:0;;;12080:16;;;12094:1;12080:16;;;12055:22;12080:16;;;;;12055:22;12080:16;;;;;;;;;;-1:-1:-1;12080:16:0;12055:41;;12122:6;12111:5;12117:1;12111:8;;;;;;;;;;;;;:17;-1:-1:-1;;;;;12111:17:0;;;-1:-1:-1;;;;;12111:17:0;;;;;12154:5;12143;12149:1;12143:8;;;;;;;;-1:-1:-1;;;;;12143:16:0;;;:8;;;;;;;;;;:16;;;;12221:11;;12204:63;;;-1:-1:-1;;;12204:63:0;;;;;;;;;;;;;;;;;;;;;;12174:27;;12221:11;;;;;12204:43;;12248:11;;12261:5;;12204:63;;;;;;;;;;;;;;;12221:11;12204:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12204:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12204:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12174:93;;12294:10;12305:1;12294:13;;;;;;;;;;;;;;12282:25;;11920:399;;;12333:14;12329:28;;12356:1;12349:8;;;;;;;;;12329:28;12383:5;-1:-1:-1;;;;;12374:14:0;:6;-1:-1:-1;;;;;12374:14:0;;12370:214;;;12459:12;;;12430:1;12459:12;;;;;;;;;;-1:-1:-1;;;12405:67:0;;;;;;;;;;;;;;12452:4;12405:67;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12405:24:0;;;;;12433:9;;12459:12;;12405:67;;;;;;;;;;12459:12;12430:1;12405:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:214;;;12559:12;;;12541:1;12559:12;;;;;;;;;;-1:-1:-1;;;12505:67:0;;;;;;;;;;;;;;12552:4;12505:67;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12505:24:0;;;;;12530:9;;12541:1;12559:12;;12505:67;;;;;;;;;;12559:12;12541:1;12505:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:214;10688:1903;;;;;;;;;;;:::o;6552:1486::-;7009:12;7058:6;-1:-1:-1;;;;;7048:16:0;:6;-1:-1:-1;;;;;7048:16:0;;;7040:57;;;;;-1:-1:-1;;;7040:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7109:14;7125;7152:6;-1:-1:-1;;;;;7143:15:0;:6;-1:-1:-1;;;;;7143:15:0;;:53;;7181:6;7189;7143:53;;;7162:6;7170;7143:53;7108:88;;-1:-1:-1;7108:88:0;-1:-1:-1;;;;;;7215:20:0;;7207:54;;;;;-1:-1:-1;;;7207:54:0;;;;;;;;;;;;-1:-1:-1;;;7207:54:0;;;;;;;;;;;;;;;7298:1;-1:-1:-1;;;;;7314:24:0;;;;;;;7310:198;;;-1:-1:-1;7361:1:0;7310:198;;;7400:6;-1:-1:-1;;;;;7382:24:0;:14;-1:-1:-1;;;;;7382:24:0;;7378:130;;;-1:-1:-1;7429:1:0;7378:130;;;-1:-1:-1;;;;;7454:28:0;;;7446:62;;;;;-1:-1:-1;;;7446:62:0;;;;;;;;;;;;-1:-1:-1;;;7446:62:0;;;;;;;;;;;;;;;7521:5;:7;;;;;;;;7564:39;;;;;;;-1:-1:-1;;7564:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7554:50;;;;;7648:18;;7622:51;;-1:-1:-1;;;;;7648:18:0;7554:50;7622:25;:51::i;:::-;7615:58;;7697:4;-1:-1:-1;;;;;7684:29:0;;7714:6;7722;7730:5;7737:9;7748:18;7768:8;7684:93;;;;;;;;;;;;;-1:-1:-1;;;;;7684:93:0;;;;;;-1:-1:-1;;;;;7684:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;7788:15:0;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;-1:-1:-1;;;;;;7788:30:0;;;;;;;;7829:15;;;;;;:23;;;;;;;;:30;;;;;;;;7915:8;:19;;-1:-1:-1;7915:19:0;;;;;;;;;;;;;;;;;;;7945:12;;;:6;:12;;;;;;:19;;-1:-1:-1;;7945:19:0;;;;;;;8014:15;;7980:50;;;;;;;;;;;;;;;;;;;;;;6552:1486;;;;;;;;;;;;:::o;12969:403::-;13195:51;;;-1:-1:-1;;;;;13195:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13195:51:0;-1:-1:-1;;;13195:51:0;;;13184:63;;;;13149:12;;13163:17;;13184:10;;;;13195:51;13184:63;;;13195:51;13184:63;;13195:51;13184:63;;;;;;;;;;-1:-1:-1;;13184:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13148:99;;;;13266:7;:57;;;;-1:-1:-1;13278:11:0;;:16;;:44;;;13309:4;13298:24;;;;;;;;;;;;;;;-1:-1:-1;13298:24:0;13278:44;13258:106;;;;-1:-1:-1;;;13258:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12969:403;;;;;;:::o;1835:559:7:-;1919:16;1989:4;1983:11;-1:-1:-1;;;2015:3:7;2008:79;2134:14;2128:4;2124:25;2117:4;2112:3;2108:14;2101:49;-1:-1:-1;;;2180:4:7;2175:3;2171:14;2164:90;2302:4;2296;2291:3;2288:1;2280:27;2268:39;-1:-1:-1;;;;;;;2336:22:7;;2328:58;;;;;-1:-1:-1;;;2328:58:7;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://14b66875652521105fcea11da2250abf8b86e694fe0110f91ed81be047260dc0
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.