Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 233 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 18815663 | 395 days ago | IN | 0 ETH | 0.01425807 | ||||
Swap | 18815661 | 395 days ago | IN | 0 ETH | 0.00373189 | ||||
Execute | 18815660 | 395 days ago | IN | 0.1 ETH | 0.01025493 | ||||
Execute | 18815656 | 395 days ago | IN | 0 ETH | 0.01618484 | ||||
Withdraw | 18815642 | 395 days ago | IN | 0 ETH | 0.01645131 | ||||
Swap | 18815641 | 395 days ago | IN | 0 ETH | 0.00381968 | ||||
Execute | 18815639 | 395 days ago | IN | 0.1 ETH | 0.01152198 | ||||
Execute | 18815634 | 395 days ago | IN | 0 ETH | 0.01766047 | ||||
Execute | 18541587 | 433 days ago | IN | 0.005 ETH | 0.00519787 | ||||
Withdraw | 18541331 | 433 days ago | IN | 0 ETH | 0.00256462 | ||||
Execute | 18541232 | 433 days ago | IN | 0.05 ETH | 0.00490561 | ||||
Withdraw | 18420087 | 450 days ago | IN | 0 ETH | 0.00381359 | ||||
Swap | 18420085 | 450 days ago | IN | 0 ETH | 0.00119231 | ||||
Execute | 18420080 | 450 days ago | IN | 0.001 ETH | 0.0032535 | ||||
Execute | 18420071 | 450 days ago | IN | 0 ETH | 0.00532334 | ||||
Withdraw | 18419955 | 450 days ago | IN | 0 ETH | 0.00152443 | ||||
Withdraw | 18419940 | 450 days ago | IN | 0 ETH | 0.00334088 | ||||
Swap | 18419937 | 450 days ago | IN | 0 ETH | 0.00116316 | ||||
Execute | 18419933 | 450 days ago | IN | 0.01 ETH | 0.00351045 | ||||
Execute | 18419923 | 450 days ago | IN | 0 ETH | 0.0049108 | ||||
Withdraw | 18419909 | 450 days ago | IN | 0 ETH | 0.00250039 | ||||
Withdraw | 18419895 | 450 days ago | IN | 0 ETH | 0.00375611 | ||||
Swap | 18419892 | 450 days ago | IN | 0 ETH | 0.00119924 | ||||
Execute | 18419889 | 450 days ago | IN | 0.001 ETH | 0.00346612 | ||||
Execute | 18419869 | 450 days ago | IN | 0 ETH | 0.00445482 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18815660 | 395 days ago | 0.1 ETH | ||||
18815639 | 395 days ago | 0.1 ETH | ||||
18541587 | 433 days ago | 0.005 ETH | ||||
18541232 | 433 days ago | 0.05 ETH | ||||
18420080 | 450 days ago | 0.001 ETH | ||||
18419933 | 450 days ago | 0.01 ETH | ||||
18419889 | 450 days ago | 0.001 ETH | ||||
18406984 | 452 days ago | 0.01 ETH | ||||
18406973 | 452 days ago | 0.01 ETH | ||||
18406893 | 452 days ago | 0.01 ETH | ||||
18402783 | 453 days ago | 0.01 ETH | ||||
18402475 | 453 days ago | 0.01 ETH | ||||
18401815 | 453 days ago | 0.01 ETH | ||||
18335814 | 462 days ago | 0.0999 ETH | ||||
18335105 | 462 days ago | 0.1111 ETH | ||||
18334915 | 462 days ago | 0.123 ETH | ||||
18323494 | 464 days ago | 0.12 ETH | ||||
18322798 | 464 days ago | 0.05 ETH | ||||
18322756 | 464 days ago | 0.05 ETH | ||||
18322105 | 464 days ago | 1.3 ETH | ||||
18006921 | 508 days ago | 0.0061 ETH | ||||
17687519 | 553 days ago | 0.279596 ETH | ||||
17349937 | 600 days ago | 0.192 ETH | ||||
17322356 | 604 days ago | 5.45 ETH | ||||
17179296 | 624 days ago | 0.01 ETH |
Loading...
Loading
Contract Name:
GigaSwap
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import '../swapper/DealsController.sol'; import '../fee/FeeSettingsDecorator.sol'; contract GigaSwap is DealsController, FeeSettingsDecorator { constructor(address feeSettingsAddress) FeeSettingsDecorator(feeSettingsAddress) {} }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import '../lib/factories/HasFactories.sol'; import './IDealsController.sol'; import './IDealPointsController.sol'; import './Deal.sol'; import './DealPointRef.sol'; import './DealPointData.sol'; abstract contract DealsController is IDealsController, HasFactories { mapping(uint256 => Deal) internal _deals; // deal headers by id mapping(uint256 => mapping(uint256 => DealPointRef)) internal _dealPoints; // controllers for each deal point uint256 internal _dealsCount; uint256 internal _totalDealPointsCount; uint256 constant dealPointsLimit = 20; modifier onlyEditDealState(uint256 dealId) { require(_deals[dealId].state == 1, 'deal is not in edit state'); _; } modifier onlyExecutionDealState(uint256 dealId) { require(_deals[dealId].state == 2, 'deal is not in execution state'); _; } function getTotalDealPointsCount() external view returns (uint256) { return _totalDealPointsCount; } function createDeal(address owner1, address owner2) external onlyFactory returns (uint256) { // create a deal Deal memory dealHeader = Deal( 1, // editing owner1, // 1 owner owner2, // 2 owner 0 ); ++_dealsCount; _deals[_dealsCount] = dealHeader; emit NewDeal(_dealsCount, owner1); return _dealsCount; } function addDealPoint( uint256 dealId, address dealPointsController, uint256 newPointId ) external onlyFactory onlyEditDealState(dealId) { Deal storage deal = _deals[dealId]; require(deal.state == 1, 'only for editing deal state'); _dealPoints[dealId][deal.pointsCount] = DealPointRef( dealPointsController, newPointId ); ++deal.pointsCount; require( deal.pointsCount <= dealPointsLimit, 'deal points count exceeds of limit' ); ++_totalDealPointsCount; } function getDealHeader(uint256 dealId) external view returns (Deal memory) { Deal memory header = _deals[dealId]; require(header.state > 0, 'deal is not exists'); return header; } /// @dev returns a deal, if there is no such deal, it gives an error function getDeal(uint256 dealId) external view override returns (Deal memory, DealPointData[] memory) { Deal memory deal = _deals[dealId]; DealPointData[] memory points = new DealPointData[](deal.pointsCount); for (uint256 i = 0; i < deal.pointsCount; ++i) { points[i] = this.getDealPoint(dealId, i); } return (deal, points); } /// @dev if true, then the transaction is completed and it can be swapped function isExecuted(uint256 dealId) external view returns (bool) { // get the count of deal points Deal memory deal = _deals[dealId]; if (deal.pointsCount == 0) return false; // take the deal points mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; // checking all deal points for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; if ( !IDealPointsController(payable(pointRef.controller)).isExecuted( pointRef.id ) ) return false; } return true; } function swap(uint256 dealId) external onlyExecutionDealState(dealId) { // take the amount of points Deal storage deal = _deals[dealId]; require(deal.pointsCount > 0, 'deal has no points'); // check all points to be executed mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; require( IDealPointsController(payable(pointRef.controller)).isExecuted( pointRef.id ), 'there are not executed deal points' ); } // set header as swapped deal.state = 3; // deal is now swapped // emit event emit Swap(dealId); } function isSwapped(uint256 dealId) external view returns (bool) { return _deals[dealId].state == 3; } function withdraw(uint256 dealId) external payable { // take a deal Deal storage deal = _deals[dealId]; require(deal.state > 0, 'deal id is not exists'); require(deal.pointsCount > 0, 'deal has no points'); // user restriction require( msg.sender == deal.owner1 || msg.sender == deal.owner2, 'only for deal member' ); // withdraw all the details uint256 dif = msg.value; mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; IDealPointsController controller = IDealPointsController( payable(pointRef.controller) ); if (controller.owner(pointRef.id) == msg.sender) { if (deal.state == 3 && controller.feeIsEthOnWithdraw()) { uint256 v = controller.fee(pointRef.id); controller.withdraw{ value: v }(pointRef.id); dif -= v; } else { controller.withdraw(pointRef.id); } } } if (dif > 0) { (bool sent, ) = payable(msg.sender).call{ value: dif }(''); require(sent, 'sent ether error: ether is not sent'); } // emit deal not executed (if not swapped) if (deal.state != 3) emit Execute(dealId, msg.sender, false); // emit event emit OnWithdraw(dealId, msg.sender); } function feeEthOnWithdraw(uint256 dealId, uint256 ownerNumber) external view returns (uint256) { uint256 fee; Deal storage deal = _deals[dealId]; mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; IDealPointsController controller = IDealPointsController( payable(pointRef.controller) ); if (ownerNumber == 1) { if (controller.owner(pointRef.id) == deal.owner1) { if (controller.feeIsEthOnWithdraw()) fee += controller.fee(pointRef.id); } } else if (ownerNumber == 2) { if (controller.owner(pointRef.id) == deal.owner2) { if (controller.feeIsEthOnWithdraw()) fee += controller.fee(pointRef.id); } } } return fee; } function getDealPoint(uint256 dealId, uint256 pointIndex) external view returns (DealPointData memory) { DealPointRef storage ref = _dealPoints[dealId][pointIndex]; IDealPointsController controller = IDealPointsController( payable(ref.controller) ); return DealPointData( ref.controller, ref.id, controller.dealPointTypeId(), dealId, controller.from(ref.id), controller.to(ref.id), controller.owner(ref.id), controller.value(ref.id), controller.balance(ref.id), controller.fee(ref.id), controller.tokenAddress(ref.id), controller.isSwapped(ref.id), controller.isExecuted(ref.id) ); } function getDealPointsCount(uint256 dealId) external view returns (uint256) { return _deals[dealId].pointsCount; } /// @dev returns all deal points /// @param dealId deal id function getDealPoints(uint256 dealId) external view returns (DealPointRef[] memory) { Deal memory deal = _deals[dealId]; DealPointRef[] memory res = new DealPointRef[](deal.pointsCount); for (uint256 i = 0; i < deal.pointsCount; ++i) res[i] = _dealPoints[dealId][i]; return res; } function stopDealEditing(uint256 dealId) external onlyFactory onlyEditDealState(dealId) { _deals[dealId].state = 2; } function execute(uint256 dealId) external payable { // if it is openswap - set owner Deal storage deal = _deals[dealId]; require(deal.state == 2, 'only executing state'); bool isOpenSwapNotOwner; if (deal.owner2 == address(0) && msg.sender != deal.owner1) { deal.owner2 = msg.sender; isOpenSwapNotOwner = true; } // take the amount of points require(deal.pointsCount > 0, 'deal has no points'); // check all points to be executed uint256 dif = msg.value; mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; IDealPointsController controller = IDealPointsController( payable(pointRef.controller) ); address from = controller.from(pointRef.id); if ( controller.to(pointRef.id) == address(0) && isOpenSwapNotOwner ) { controller.setTo(pointRef.id, msg.sender); continue; } if ( from == msg.sender || (from == address(0) && isOpenSwapNotOwner) ) { uint256 v = controller.executeEtherValue(pointRef.id); controller.execute{ value: v }(pointRef.id, msg.sender); dif -= v; } } if (dif > 0) { (bool sent, ) = payable(msg.sender).call{ value: dif }(''); require(sent, 'sent ether error: ether is not sent'); } // emit event emit Execute(dealId, msg.sender, true); } function executeEtherValue(uint256 dealId, uint256 ownerNumber) external view returns (uint256) { uint256 value; Deal storage deal = _deals[dealId]; mapping(uint256 => DealPointRef) storage points = _dealPoints[dealId]; for (uint256 i = 0; i < deal.pointsCount; ++i) { DealPointRef memory pointRef = points[i]; IDealPointsController controller = IDealPointsController( payable(pointRef.controller) ); if (ownerNumber == 1) { if (controller.owner(pointRef.id) == deal.owner1) { value += controller.executeEtherValue(pointRef.id); } } else if (ownerNumber == 2) { if (controller.owner(pointRef.id) == deal.owner2) { value += controller.executeEtherValue(pointRef.id); } } } return value; } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import './IFeeSettings.sol'; contract FeeSettingsDecorator is IFeeSettings { IFeeSettings public immutable feeSettings; constructor(address feeSettingsAddress) { feeSettings = IFeeSettings(feeSettingsAddress); } function feeAddress() external virtual returns (address) { return feeSettings.feeAddress(); } function feePercent() external virtual returns (uint256) { return feeSettings.feePercent(); } function feeDecimals() external view returns(uint256){ return feeSettings.feeDecimals(); } function feeEth() external virtual returns (uint256) { return feeSettings.feeEth(); } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import '../ownable/Ownable.sol'; import './IHasFactories.sol'; contract HasFactories is Ownable, IHasFactories { mapping(address => bool) internal _factories; // factories modifier onlyFactory() { require(_isFactory(msg.sender), 'only for factories'); _; } function isFactory(address addr) external view returns (bool) { return _isFactory(addr); } function _isFactory(address addr) internal view returns (bool) { if (addr == address(this)) return true; return _factories[addr]; } function addFactory(address factory) external onlyOwner { _factories[factory] = true; } function removeFactory(address factory) external onlyOwner { _factories[factory] = false; } function setFactories(address[] calldata addresses, bool isFactory_) external onlyOwner { uint256 len = addresses.length; for (uint256 i = 0; i < len; ++i) { _factories[addresses[i]] = isFactory_; } } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import '../fee/IFeeSettings.sol'; import '../lib/factories/IHasFactories.sol'; import './Deal.sol'; import './DealPointData.sol'; interface IDealsController is IFeeSettings, IHasFactories { /// @dev new deal created /// deals are creates by factories by one transaction, therefore another events, such as deal point adding is no need event NewDeal(uint256 indexed dealId, address indexed creator); /// @dev the deal is swapped event Swap(uint256 indexed dealId); /// @dev the deal is executed by account event Execute(uint256 indexed dealId, address account, bool executed); /// @dev the deal withdraw event OnWithdraw(uint256 indexed dealId, address indexed account); /// @dev swap the deal function swap(uint256 dealId) external; /// @dev if true, than deal is swapped function isSwapped(uint256 dealId) external view returns (bool); /// @dev total deal points count function getTotalDealPointsCount() external view returns (uint256); /// @dev creates the deal. /// Only for factories. /// @param owner1 - first owner (creator) /// @param owner2 - second owner of deal. If zero than deal is open for any account /// @return id of new deal function createDeal(address owner1, address owner2) external returns (uint256); /// @dev returns all deal information function getDeal(uint256 dealId) external view returns (Deal memory, DealPointData[] memory); /// @dev returns the deals header information (without points) function getDealHeader(uint256 dealId) external view returns (Deal memory); /// @dev adds the deal point to deal. /// only for factories /// @param dealId deal id function addDealPoint( uint256 dealId, address dealPointsController, uint256 newPointId ) external; /// @dev returns deal point by its index in deal function getDealPoint(uint256 dealId, uint256 pointIndex) external view returns (DealPointData memory); /// @dev returns deal points count for the deal function getDealPointsCount(uint256 dealId) external view returns (uint256); /// @dev returns true, if all deal points is executed, and can be made swap, if not swapped already function isExecuted(uint256 dealId) external view returns (bool); /// @dev makes withdraw from all deal points of deal, where caller is owner function withdraw(uint256 dealId) external payable; /// @dev stops all editing for deal /// only for factories function stopDealEditing(uint256 dealId) external; /// @dev executes all points of the deal function execute(uint256 dealId) external payable; /// @dev the execute ether value for owner with number function executeEtherValue(uint256 dealId, uint256 ownerNumber) external view returns(uint256); /// @dev returns fee in ether on withdraw for owner number function feeEthOnWithdraw(uint256 dealId, uint256 ownerNumber) external view returns (uint256); }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; interface IDealPointsController { receive() external payable; /// @dev returns type id of dealpoints /// 1 - eth /// 2 - erc20 /// 3 erc721 item /// 4 erc721 count function dealPointTypeId() external pure returns (uint256); /// @dev returns deal id for deal point or 0 if point is not exists in this controller function dealId(uint256 pointId) external view returns (uint256); /// @dev token contract address, that need to be transferred or zero function tokenAddress(uint256 pointId) external view returns (address); /// @dev from /// zero address - for open swap function from(uint256 pointId) external view returns (address); /// @dev to function to(uint256 pointId) external view returns (address); /// @dev sets to account for point /// only DealsController and only once function setTo(uint256 pointId, address account) external; /// @dev asset value (count or nft id), needs to execute deal point function value(uint256 pointId) external view returns (uint256); /// @dev balance of the deal point function balance(uint256 pointId) external view returns (uint256); /// @dev deal point fee. In ether or token. Only if withdraw after deal is swapped function fee(uint256 pointId) external view returns (uint256); /// @dev if true, than fee is ether, that sends on withdraw after swapped function feeIsEthOnWithdraw() external pure returns (bool); /// @dev current owner of deal point /// zero address - for open deals, before execution function owner(uint256 pointId) external view returns (address); /// @dev deals controller function dealsController() external view returns (address); /// @dev if true, than deal is swapped function isSwapped(uint256 pointId) external view returns (bool); /// @dev if true, than point is executed and can be swaped function isExecuted(uint256 pointId) external view returns (bool); /// @dev executes the point, by using address /// if already executed than nothing happens function execute(uint256 pointId, address addr) external payable; /// @dev the execute ether value for owner with number function executeEtherValue(uint256 pointId) external view returns(uint256); /// @dev withdraw the asset from deal point /// only deals controller function withdraw(uint256 pointId) external payable; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import './DealPointRef.sol'; struct Deal { uint256 state; // 0 - not exists, 1-editing 2-execution 3-swaped address owner1; // owner 1 - creator address owner2; // owner 2 - second part if zero than it is open deal uint256 pointsCount; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; struct DealPointRef { /// @dev controller of deal point address controller; /// @dev id of the deal point uint256 id; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; struct DealPointData { address controller; uint256 id; /// @dev deal point id /// 1 - eth /// 2 - erc20 /// 3 erc721 item /// 4 erc721 count uint256 dealPointTypeId; uint256 dealId; address from; address to; address owner; uint256 value; uint256 balance; uint256 fee; address tokenAddress; bool isSwapped; bool isExecuted; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import './IOwnable.sol'; contract Ownable is IOwnable { address _owner; constructor() { _owner = msg.sender; } modifier onlyOwner() { require(_owner == msg.sender, 'caller is not the owner'); _; } function owner() external virtual view returns (address) { return _owner; } function transferOwnership(address newOwner) external override onlyOwner { _owner = newOwner; } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; import '../ownable/IOwnable.sol'; interface IHasFactories is IOwnable { /// @dev returns true, if addres is factory function isFactory(address addr) external view returns (bool); /// @dev mark address as factory (only owner) function addFactory(address factory) external; /// @dev mark address as not factory (only owner) function removeFactory(address factory) external; /// @dev mark addresses as factory or not (only owner) function setFactories(address[] calldata addresses, bool isFactory_) external; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; interface IOwnable { function owner() external view returns (address); function transferOwnership(address newOwner) external; }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.17; interface IFeeSettings { function feeAddress() external returns (address); // address to pay fee function feePercent() external returns (uint256); // fee in 1/decimals for deviding values function feeDecimals() external view returns(uint256); // fee decimals function feeEth() external returns (uint256); // fee value for not dividing deal points }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"feeSettingsAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"dealId","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"executed","type":"bool"}],"name":"Execute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"dealId","type":"uint256"},{"indexed":true,"internalType":"address","name":"creator","type":"address"}],"name":"NewDeal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"dealId","type":"uint256"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"OnWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"Swap","type":"event"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"dealPointsController","type":"address"},{"internalType":"uint256","name":"newPointId","type":"uint256"}],"name":"addDealPoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"addFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner1","type":"address"},{"internalType":"address","name":"owner2","type":"address"}],"name":"createDeal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"ownerNumber","type":"uint256"}],"name":"executeEtherValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"ownerNumber","type":"uint256"}],"name":"feeEthOnWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSettings","outputs":[{"internalType":"contract IFeeSettings","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDeal","outputs":[{"components":[{"internalType":"uint256","name":"state","type":"uint256"},{"internalType":"address","name":"owner1","type":"address"},{"internalType":"address","name":"owner2","type":"address"},{"internalType":"uint256","name":"pointsCount","type":"uint256"}],"internalType":"struct Deal","name":"","type":"tuple"},{"components":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"dealPointTypeId","type":"uint256"},{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"isSwapped","type":"bool"},{"internalType":"bool","name":"isExecuted","type":"bool"}],"internalType":"struct DealPointData[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealHeader","outputs":[{"components":[{"internalType":"uint256","name":"state","type":"uint256"},{"internalType":"address","name":"owner1","type":"address"},{"internalType":"address","name":"owner2","type":"address"},{"internalType":"uint256","name":"pointsCount","type":"uint256"}],"internalType":"struct Deal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"pointIndex","type":"uint256"}],"name":"getDealPoint","outputs":[{"components":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"dealPointTypeId","type":"uint256"},{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"isSwapped","type":"bool"},{"internalType":"bool","name":"isExecuted","type":"bool"}],"internalType":"struct DealPointData","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealPoints","outputs":[{"components":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"internalType":"struct DealPointRef[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealPointsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDealPointsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"isExecuted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"isSwapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"removeFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isFactory_","type":"bool"}],"name":"setFactories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"stopDealEditing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002e1438038062002e14833981016040819052620000349162000058565b600080546001600160a01b031916331790556001600160a01b03166080526200008a565b6000602082840312156200006b57600080fd5b81516001600160a01b03811681146200008357600080fd5b9392505050565b608051612d52620000c26000396000818161020a01528181610ac701528181610b9d01528181610e7f01526117ae0152612d526000f3fe60806040526004361061019c5760003560e01c80638fd32a29116100ec578063cc0f17861161008a578063d85df95011610064578063d85df950146104e1578063f2fde38b14610501578063fbac196714610521578063fe0d94c11461054157600080fd5b8063cc0f17861461046f578063d55290d214610484578063d6f05b54146104b157600080fd5b8063b91d9e23116100c6578063b91d9e23146103ea578063c0bffb621461040a578063c755998d1461043a578063c7b0f9541461045a57600080fd5b80638fd32a291461037d57806394b918de146103aa57806396685699146103ca57600080fd5b80634b37c73f1161015957806376a6bf521161013357806376a6bf52146102fc5780637fd6f15c1461031c57806382fd5bac146103315780638da5cb5b1461035f57600080fd5b80634b37c73f1461028c5780635e9dc44c146102ac5780636642c0c7146102cf57600080fd5b806308a8ce1f146101a15780630f04ba67146101c35780631c6603ba146101f857806329ce1ec5146102445780632e1a7d4d146102645780634127535814610277575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612700565b610554565b005b3480156101cf57600080fd5b506101e36101de36600461279b565b6105fe565b60405190151581526020015b60405180910390f35b34801561020457600080fd5b5061022c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ef565b34801561025057600080fd5b506101c161025f36600461279b565b61060f565b6101c16102723660046127bf565b610660565b34801561028357600080fd5b5061022c610ac3565b34801561029857600080fd5b506101c16102a736600461279b565b610b4e565b3480156102b857600080fd5b506102c1610b99565b6040519081526020016101ef565b3480156102db57600080fd5b506102ef6102ea3660046127bf565b610c1f565b6040516101ef91906127d8565b34801561030857600080fd5b506101e36103173660046127bf565b610d4a565b34801561032857600080fd5b506102c1610e7b565b34801561033d57600080fd5b5061035161034c3660046127bf565b610edd565b6040516101ef9291906128fb565b34801561036b57600080fd5b506000546001600160a01b031661022c565b34801561038957600080fd5b5061039d6103983660046127bf565b611036565b6040516101ef9190612971565b3480156103b657600080fd5b506101c16103c53660046127bf565b6110ce565b3480156103d657600080fd5b506101c16103e53660046127bf565b6112a8565b3480156103f657600080fd5b506102c16104053660046129ad565b61133e565b34801561041657600080fd5b506101e36104253660046127bf565b60009081526002602052604090205460031490565b34801561044657600080fd5b506102c16104553660046129e6565b61144a565b34801561046657600080fd5b506005546102c1565b34801561047b57600080fd5b506102c16117aa565b34801561049057600080fd5b506104a461049f3660046129e6565b61180a565b6040516101ef9190612a08565b3480156104bd57600080fd5b506102c16104cc3660046127bf565b60009081526002602052604090206003015490565b3480156104ed57600080fd5b506101c16104fc366004612a17565b611d24565b34801561050d57600080fd5b506101c161051c36600461279b565b611ee8565b34801561052d57600080fd5b506102c161053c3660046129e6565b611f34565b6101c161054f3660046127bf565b6121bb565b6000546001600160a01b031633146105875760405162461bcd60e51b815260040161057e90612a4f565b60405180910390fd5b8160005b818110156105f75782600160008787858181106105aa576105aa612a86565b90506020020160208101906105bf919061279b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105f081612ab2565b905061058b565b5050505050565b600061060982612610565b92915050565b6000546001600160a01b031633146106395760405162461bcd60e51b815260040161057e90612a4f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600081815260026020526040902080546106b45760405162461bcd60e51b81526020600482015260156024820152746465616c206964206973206e6f742065786973747360581b604482015260640161057e565b60008160030154116106d85760405162461bcd60e51b815260040161057e90612acb565b60018101546001600160a01b03163314806106ff575060028101546001600160a01b031633145b6107425760405162461bcd60e51b815260206004820152601460248201527337b7363c903337b9103232b0b61036b2b6b132b960611b604482015260640161057e565b600082815260036020526040812034915b83600301548110156109da57600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251635091e19f60e11b81526004810192909252903390829063a123c33e90602401602060405180830381865afa1580156107cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f39190612b07565b6001600160a01b0316036109c7578554600314801561086f5750806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190612b2f565b1561096657602082015160405163039b37ab60e41b81526000916001600160a01b038416916339b37ab0916108aa9160040190815260200190565b602060405180830381865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190612b4c565b9050816001600160a01b0316632e1a7d4d8285602001516040518363ffffffff1660e01b815260040161092091815260200190565b6000604051808303818588803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b5050505050808661095e9190612b65565b9550506109c7565b6020820151604051632e1a7d4d60e01b815260048101919091526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b505050505b5050806109d390612ab2565b9050610753565b508115610a4b57604051600090339084908381818185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5050905080610a495760405162461bcd60e51b815260040161057e90612b78565b505b8254600314610a9057604080513381526000602082015285917fe1bebd63dac2b6a13df786d357c7ea99338d29e95b8103e4313ec33430f199ee910160405180910390a25b604051339085907f3427e9fc4a0bff3bb4138bd96dc004b9aa0abb6f87ca8f93363c510da6c7392390600090a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663412753586040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612b07565b905090565b6000546001600160a01b03163314610b785760405162461bcd60e51b815260040161057e90612a4f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635e9dc44c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612b4c565b600081815260026020818152604080842081516080810183528154815260018201546001600160a01b03908116948201949094529381015490921690830152600301546060828101829052929067ffffffffffffffff811115610c8457610c84612bbb565b604051908082528060200260200182016040528015610cc957816020015b6040805180820190915260008082526020820152815260200190600190039081610ca25790505b50905060005b8260600151811015610d42576000858152600360209081526040808320848452825291829020825180840190935280546001600160a01b0316835260010154908201528251839083908110610d2657610d26612a86565b602002602001018190525080610d3b90612ab2565b9050610ccf565b509392505050565b600081815260026020818152604080842081516080810183528154815260018201546001600160a01b0390811694820194909452938101549092169083015260030154606082018190528203610da35750600092915050565b6000838152600360205260408120905b8260600151811015610e7057600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251633b535fa960e11b81526004810192909252906376a6bf5290602401602060405180830381865afa158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190612b2f565b610e5f5750600095945050505050565b50610e6981612ab2565b9050610db3565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637fd6f15c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b610ee5612649565b600082815260026020818152604080842081516080810183528154815260018201546001600160a01b03908116948201949094529381015490921690830152600301546060828101829052929067ffffffffffffffff811115610f4a57610f4a612bbb565b604051908082528060200260200182016040528015610f8357816020015b610f70612683565b815260200190600190039081610f685790505b50905060005b826060015181101561102b57604051636aa9486960e11b81526004810187905260248101829052309063d55290d2906044016101a060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd9190612c09565b82828151811061100f5761100f612a86565b60200260200101819052508061102490612ab2565b9050610f89565b509094909350915050565b61103e612649565b6000828152600260208181526040928390208351608081018552815480825260018301546001600160a01b0390811694830194909452938201549092169382019390935260039092015460608301526106095760405162461bcd60e51b81526020600482015260126024820152716465616c206973206e6f742065786973747360701b604482015260640161057e565b60008181526002602081905260409091205482911461112f5760405162461bcd60e51b815260206004820152601e60248201527f6465616c206973206e6f7420696e20657865637574696f6e2073746174650000604482015260640161057e565b6000828152600260205260409020600381015461115e5760405162461bcd60e51b815260040161057e90612acb565b6000838152600360205260408120905b826003015481101561127257600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251633b535fa960e11b81526004810192909252906376a6bf5290602401602060405180830381865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a9190612b2f565b6112615760405162461bcd60e51b815260206004820152602260248201527f746865726520617265206e6f74206578656375746564206465616c20706f696e604482015261747360f01b606482015260840161057e565b5061126b81612ab2565b905061116e565b506003825560405184907f89f1d38d98c13362767fbcc2b0e375c1c3c4429b4648ea2a99839d962779b5d190600090a250505050565b6112b133612610565b6112cd5760405162461bcd60e51b815260040161057e90612cdd565b60008181526002602052604090205481906001146113295760405162461bcd60e51b81526020600482015260196024820152786465616c206973206e6f7420696e206564697420737461746560381b604482015260640161057e565b50600090815260026020819052604090912055565b600061134933612610565b6113655760405162461bcd60e51b815260040161057e90612cdd565b6000604051806080016040528060018152602001856001600160a01b03168152602001846001600160a01b03168152602001600081525090506004600081546113ad90612ab2565b9091555060048054600090815260026020818152604080842086518155918601516001830180546001600160a01b03199081166001600160a01b03938416179091558783015194840180549091169482169490941790935560608601516003909201919091559254925190871692917f4d4e9c36309efab2af26919cf8142564da8c0478e860e295568d100d8c301ce091a3505060045492915050565b600082815260026020908152604080832060039092528220829190825b826003015481101561179f5760008181526020838152604091829020825180840190935280546001600160a01b03168084526001918201549284019290925288900361161b5760018501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115259190612b07565b6001600160a01b03160361161657806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115959190612b2f565b1561161657602082015160405163039b37ab60e41b815260048101919091526001600160a01b038216906339b37ab090602401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612b4c565b6116139087612d09565b95505b61178c565b8760020361178c5760028501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b9190612b07565b6001600160a01b03160361178c57806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b9190612b2f565b1561178c57602082015160405163039b37ab60e41b815260048101919091526001600160a01b038216906339b37ab090602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190612b4c565b6117899087612d09565b95505b50508061179890612ab2565b9050611467565b509195945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cc0f17866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfb573d6000803e3d6000fd5b611812612683565b6000838152600360209081526040808320858452825291829020805483516101a0810185526001600160a01b039091168082526001830154828501528451632e71b65360e21b8152855193959194929391840192859263b9c6d94c9260048082019392918290030181865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190612b4c565b8152602001868152602001826001600160a01b0316631335791485600101546040518263ffffffff1660e01b81526004016118f091815260200190565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119319190612b07565b6001600160a01b03168152602001826001600160a01b031663e887841e85600101546040518263ffffffff1660e01b815260040161197191815260200190565b602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190612b07565b6001600160a01b03168152602001826001600160a01b031663a123c33e85600101546040518263ffffffff1660e01b81526004016119f291815260200190565b602060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190612b07565b6001600160a01b03168152602001826001600160a01b031663c5a46ee685600101546040518263ffffffff1660e01b8152600401611a7391815260200190565b602060405180830381865afa158015611a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab49190612b4c565b8152602001826001600160a01b03166347bb89f085600101546040518263ffffffff1660e01b8152600401611aeb91815260200190565b602060405180830381865afa158015611b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2c9190612b4c565b8152602001826001600160a01b03166339b37ab085600101546040518263ffffffff1660e01b8152600401611b6391815260200190565b602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba49190612b4c565b8152602001826001600160a01b0316639e6b26ba85600101546040518263ffffffff1660e01b8152600401611bdb91815260200190565b602060405180830381865afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190612b07565b6001600160a01b03168152602001826001600160a01b031663c0bffb6285600101546040518263ffffffff1660e01b8152600401611c5c91815260200190565b602060405180830381865afa158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190612b2f565b15158152602001826001600160a01b03166376a6bf5285600101546040518263ffffffff1660e01b8152600401611cd691815260200190565b602060405180830381865afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190612b2f565b1515905295945050505050565b611d2d33612610565b611d495760405162461bcd60e51b815260040161057e90612cdd565b6000838152600260205260409020548390600114611da55760405162461bcd60e51b81526020600482015260196024820152786465616c206973206e6f7420696e206564697420737461746560381b604482015260640161057e565b60008481526002602052604090208054600114611e045760405162461bcd60e51b815260206004820152601b60248201527f6f6e6c7920666f722065646974696e67206465616c2073746174650000000000604482015260640161057e565b6040805180820182526001600160a01b038681168252602080830187815260008a81526003808452868220908801805483529352948520935184546001600160a01b031916931692909217835590516001909201919091558054909190611e6a90612ab2565b90915550600381015460141015611ece5760405162461bcd60e51b815260206004820152602260248201527f6465616c20706f696e747320636f756e742065786365656473206f66206c696d6044820152611a5d60f21b606482015260840161057e565b600560008154611edd90612ab2565b909155505050505050565b6000546001600160a01b03163314611f125760405162461bcd60e51b815260040161057e90612a4f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260026020908152604080832060039092528220829190825b826003015481101561179f5760008181526020838152604091829020825180840190935280546001600160a01b03168084526001918201549284019290925288900361209e5760018501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200f9190612b07565b6001600160a01b0316036120995760208201516040516338329a4160e01b815260048101919091526001600160a01b038216906338329a4190602401602060405180830381865afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190612b4c565b6120969087612d09565b95505b6121a8565b876002036121a85760028501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612b07565b6001600160a01b0316036121a85760208201516040516338329a4160e01b815260048101919091526001600160a01b038216906338329a4190602401602060405180830381865afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190612b4c565b6121a59087612d09565b95505b5050806121b490612ab2565b9050611f51565b600081815260026020819052604090912080549091146122145760405162461bcd60e51b81526020600482015260146024820152736f6e6c7920657865637574696e6720737461746560601b604482015260640161057e565b60028101546000906001600160a01b031615801561223f575060018201546001600160a01b03163314155b1561225c57506002810180546001600160a01b0319163317905560015b60008260030154116122805760405162461bcd60e51b815260040161057e90612acb565b600083815260036020526040812034915b846003015481101561255d576000818152602083815260408083208151808301835281546001600160a01b031680825260019092015493810184905291516304cd5e4560e21b81526004810193909352909290918290631335791490602401602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190612b07565b6020840151604051637443c20f60e11b815260048101919091529091506000906001600160a01b0384169063e887841e90602401602060405180830381865afa158015612382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a69190612b07565b6001600160a01b03161480156123b95750865b1561242c57602083015160405163e3ab470d60e01b815260048101919091523360248201526001600160a01b0383169063e3ab470d90604401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b5050505050505061254d565b6001600160a01b03811633148061245257506001600160a01b0381161580156124525750865b156125495760208301516040516338329a4160e01b81526000916001600160a01b038516916338329a419161248d9160040190815260200190565b602060405180830381865afa1580156124aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ce9190612b4c565b6020850151604051630c032dc360e41b815260048101919091523360248201529091506001600160a01b0384169063c032dc309083906044016000604051808303818588803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050505080876125459190612b65565b9650505b5050505b61255681612ab2565b9050612291565b5081156125ce57604051600090339084908381818185875af1925050503d80600081146125a6576040519150601f19603f3d011682016040523d82523d6000602084013e6125ab565b606091505b50509050806125cc5760405162461bcd60e51b815260040161057e90612b78565b505b604080513381526001602082015286917fe1bebd63dac2b6a13df786d357c7ea99338d29e95b8103e4313ec33430f199ee910160405180910390a25050505050565b6000306001600160a01b0383160361262a57506001919050565b506001600160a01b031660009081526001602052604090205460ff1690565b60405180608001604052806000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915290565b80151581146126fd57600080fd5b50565b60008060006040848603121561271557600080fd5b833567ffffffffffffffff8082111561272d57600080fd5b818601915086601f83011261274157600080fd5b81358181111561275057600080fd5b8760208260051b850101111561276557600080fd5b6020928301955093505084013561277b816126ef565b809150509250925092565b6001600160a01b03811681146126fd57600080fd5b6000602082840312156127ad57600080fd5b81356127b881612786565b9392505050565b6000602082840312156127d157600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561282357815180516001600160a01b031685528601518685015292840192908501906001016127f5565b5091979650505050505050565b80516001600160a01b03168252602081015160208301526040810151604083015260608101516060830152608081015161287560808401826001600160a01b03169052565b5060a081015161289060a08401826001600160a01b03169052565b5060c08101516128ab60c08401826001600160a01b03169052565b5060e0818101519083015261010080820151908301526101208082015190830152610140808201516001600160a01b03169083015261016080820151151590830152610180908101511515910152565b825181526020808401516001600160a01b0390811682840152604080860151909116908301526060808501519083015260a06080830181905283519083018190526000919060c0840190858301845b828110156128235761295d848351612830565b6101a093909301929084019060010161294a565b815181526020808301516001600160a01b0390811691830191909152604080840151909116908201526060808301519082015260808101610609565b600080604083850312156129c057600080fd5b82356129cb81612786565b915060208301356129db81612786565b809150509250929050565b600080604083850312156129f957600080fd5b50508035926020909101359150565b6101a081016106098284612830565b600080600060608486031215612a2c57600080fd5b833592506020840135612a3e81612786565b929592945050506040919091013590565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ac457612ac4612a9c565b5060010190565b6020808252601290820152716465616c20686173206e6f20706f696e747360701b604082015260600190565b8051612b0281612786565b919050565b600060208284031215612b1957600080fd5b81516127b881612786565b8051612b02816126ef565b600060208284031215612b4157600080fd5b81516127b8816126ef565b600060208284031215612b5e57600080fd5b5051919050565b8181038181111561060957610609612a9c565b60208082526023908201527f73656e74206574686572206572726f723a206574686572206973206e6f742073604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715612c0357634e487b7160e01b600052604160045260246000fd5b60405290565b60006101a08284031215612c1c57600080fd5b612c24612bd1565b612c2d83612af7565b8152602083015160208201526040830151604082015260608301516060820152612c5960808401612af7565b6080820152612c6a60a08401612af7565b60a0820152612c7b60c08401612af7565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140612cae818501612af7565b90820152610160612cc0848201612b24565b90820152610180612cd2848201612b24565b908201529392505050565b6020808252601290820152716f6e6c7920666f7220666163746f7269657360701b604082015260600190565b8082018082111561060957610609612a9c56fea26469706673582212200cf7a0df330382332bc8f596c6e4fdeedb4a40d0f62df5eff4e4983148852b4a64736f6c6343000811003300000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d
Deployed Bytecode
0x60806040526004361061019c5760003560e01c80638fd32a29116100ec578063cc0f17861161008a578063d85df95011610064578063d85df950146104e1578063f2fde38b14610501578063fbac196714610521578063fe0d94c11461054157600080fd5b8063cc0f17861461046f578063d55290d214610484578063d6f05b54146104b157600080fd5b8063b91d9e23116100c6578063b91d9e23146103ea578063c0bffb621461040a578063c755998d1461043a578063c7b0f9541461045a57600080fd5b80638fd32a291461037d57806394b918de146103aa57806396685699146103ca57600080fd5b80634b37c73f1161015957806376a6bf521161013357806376a6bf52146102fc5780637fd6f15c1461031c57806382fd5bac146103315780638da5cb5b1461035f57600080fd5b80634b37c73f1461028c5780635e9dc44c146102ac5780636642c0c7146102cf57600080fd5b806308a8ce1f146101a15780630f04ba67146101c35780631c6603ba146101f857806329ce1ec5146102445780632e1a7d4d146102645780634127535814610277575b600080fd5b3480156101ad57600080fd5b506101c16101bc366004612700565b610554565b005b3480156101cf57600080fd5b506101e36101de36600461279b565b6105fe565b60405190151581526020015b60405180910390f35b34801561020457600080fd5b5061022c7f00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d81565b6040516001600160a01b0390911681526020016101ef565b34801561025057600080fd5b506101c161025f36600461279b565b61060f565b6101c16102723660046127bf565b610660565b34801561028357600080fd5b5061022c610ac3565b34801561029857600080fd5b506101c16102a736600461279b565b610b4e565b3480156102b857600080fd5b506102c1610b99565b6040519081526020016101ef565b3480156102db57600080fd5b506102ef6102ea3660046127bf565b610c1f565b6040516101ef91906127d8565b34801561030857600080fd5b506101e36103173660046127bf565b610d4a565b34801561032857600080fd5b506102c1610e7b565b34801561033d57600080fd5b5061035161034c3660046127bf565b610edd565b6040516101ef9291906128fb565b34801561036b57600080fd5b506000546001600160a01b031661022c565b34801561038957600080fd5b5061039d6103983660046127bf565b611036565b6040516101ef9190612971565b3480156103b657600080fd5b506101c16103c53660046127bf565b6110ce565b3480156103d657600080fd5b506101c16103e53660046127bf565b6112a8565b3480156103f657600080fd5b506102c16104053660046129ad565b61133e565b34801561041657600080fd5b506101e36104253660046127bf565b60009081526002602052604090205460031490565b34801561044657600080fd5b506102c16104553660046129e6565b61144a565b34801561046657600080fd5b506005546102c1565b34801561047b57600080fd5b506102c16117aa565b34801561049057600080fd5b506104a461049f3660046129e6565b61180a565b6040516101ef9190612a08565b3480156104bd57600080fd5b506102c16104cc3660046127bf565b60009081526002602052604090206003015490565b3480156104ed57600080fd5b506101c16104fc366004612a17565b611d24565b34801561050d57600080fd5b506101c161051c36600461279b565b611ee8565b34801561052d57600080fd5b506102c161053c3660046129e6565b611f34565b6101c161054f3660046127bf565b6121bb565b6000546001600160a01b031633146105875760405162461bcd60e51b815260040161057e90612a4f565b60405180910390fd5b8160005b818110156105f75782600160008787858181106105aa576105aa612a86565b90506020020160208101906105bf919061279b565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556105f081612ab2565b905061058b565b5050505050565b600061060982612610565b92915050565b6000546001600160a01b031633146106395760405162461bcd60e51b815260040161057e90612a4f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b600081815260026020526040902080546106b45760405162461bcd60e51b81526020600482015260156024820152746465616c206964206973206e6f742065786973747360581b604482015260640161057e565b60008160030154116106d85760405162461bcd60e51b815260040161057e90612acb565b60018101546001600160a01b03163314806106ff575060028101546001600160a01b031633145b6107425760405162461bcd60e51b815260206004820152601460248201527337b7363c903337b9103232b0b61036b2b6b132b960611b604482015260640161057e565b600082815260036020526040812034915b83600301548110156109da57600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251635091e19f60e11b81526004810192909252903390829063a123c33e90602401602060405180830381865afa1580156107cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f39190612b07565b6001600160a01b0316036109c7578554600314801561086f5750806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190612b2f565b1561096657602082015160405163039b37ab60e41b81526000916001600160a01b038416916339b37ab0916108aa9160040190815260200190565b602060405180830381865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190612b4c565b9050816001600160a01b0316632e1a7d4d8285602001516040518363ffffffff1660e01b815260040161092091815260200190565b6000604051808303818588803b15801561093957600080fd5b505af115801561094d573d6000803e3d6000fd5b5050505050808661095e9190612b65565b9550506109c7565b6020820151604051632e1a7d4d60e01b815260048101919091526001600160a01b03821690632e1a7d4d90602401600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b505050505b5050806109d390612ab2565b9050610753565b508115610a4b57604051600090339084908381818185875af1925050503d8060008114610a23576040519150601f19603f3d011682016040523d82523d6000602084013e610a28565b606091505b5050905080610a495760405162461bcd60e51b815260040161057e90612b78565b505b8254600314610a9057604080513381526000602082015285917fe1bebd63dac2b6a13df786d357c7ea99338d29e95b8103e4313ec33430f199ee910160405180910390a25b604051339085907f3427e9fc4a0bff3bb4138bd96dc004b9aa0abb6f87ca8f93363c510da6c7392390600090a350505050565b60007f00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d6001600160a01b031663412753586040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612b07565b905090565b6000546001600160a01b03163314610b785760405162461bcd60e51b815260040161057e90612a4f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60007f00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d6001600160a01b0316635e9dc44c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b499190612b4c565b600081815260026020818152604080842081516080810183528154815260018201546001600160a01b03908116948201949094529381015490921690830152600301546060828101829052929067ffffffffffffffff811115610c8457610c84612bbb565b604051908082528060200260200182016040528015610cc957816020015b6040805180820190915260008082526020820152815260200190600190039081610ca25790505b50905060005b8260600151811015610d42576000858152600360209081526040808320848452825291829020825180840190935280546001600160a01b0316835260010154908201528251839083908110610d2657610d26612a86565b602002602001018190525080610d3b90612ab2565b9050610ccf565b509392505050565b600081815260026020818152604080842081516080810183528154815260018201546001600160a01b0390811694820194909452938101549092169083015260030154606082018190528203610da35750600092915050565b6000838152600360205260408120905b8260600151811015610e7057600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251633b535fa960e11b81526004810192909252906376a6bf5290602401602060405180830381865afa158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190612b2f565b610e5f5750600095945050505050565b50610e6981612ab2565b9050610db3565b506001949350505050565b60007f00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d6001600160a01b0316637fd6f15c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b610ee5612649565b600082815260026020818152604080842081516080810183528154815260018201546001600160a01b03908116948201949094529381015490921690830152600301546060828101829052929067ffffffffffffffff811115610f4a57610f4a612bbb565b604051908082528060200260200182016040528015610f8357816020015b610f70612683565b815260200190600190039081610f685790505b50905060005b826060015181101561102b57604051636aa9486960e11b81526004810187905260248101829052309063d55290d2906044016101a060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd9190612c09565b82828151811061100f5761100f612a86565b60200260200101819052508061102490612ab2565b9050610f89565b509094909350915050565b61103e612649565b6000828152600260208181526040928390208351608081018552815480825260018301546001600160a01b0390811694830194909452938201549092169382019390935260039092015460608301526106095760405162461bcd60e51b81526020600482015260126024820152716465616c206973206e6f742065786973747360701b604482015260640161057e565b60008181526002602081905260409091205482911461112f5760405162461bcd60e51b815260206004820152601e60248201527f6465616c206973206e6f7420696e20657865637574696f6e2073746174650000604482015260640161057e565b6000828152600260205260409020600381015461115e5760405162461bcd60e51b815260040161057e90612acb565b6000838152600360205260408120905b826003015481101561127257600081815260208381526040918290208251808401845281546001600160a01b03168082526001909201549281018390529251633b535fa960e11b81526004810192909252906376a6bf5290602401602060405180830381865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a9190612b2f565b6112615760405162461bcd60e51b815260206004820152602260248201527f746865726520617265206e6f74206578656375746564206465616c20706f696e604482015261747360f01b606482015260840161057e565b5061126b81612ab2565b905061116e565b506003825560405184907f89f1d38d98c13362767fbcc2b0e375c1c3c4429b4648ea2a99839d962779b5d190600090a250505050565b6112b133612610565b6112cd5760405162461bcd60e51b815260040161057e90612cdd565b60008181526002602052604090205481906001146113295760405162461bcd60e51b81526020600482015260196024820152786465616c206973206e6f7420696e206564697420737461746560381b604482015260640161057e565b50600090815260026020819052604090912055565b600061134933612610565b6113655760405162461bcd60e51b815260040161057e90612cdd565b6000604051806080016040528060018152602001856001600160a01b03168152602001846001600160a01b03168152602001600081525090506004600081546113ad90612ab2565b9091555060048054600090815260026020818152604080842086518155918601516001830180546001600160a01b03199081166001600160a01b03938416179091558783015194840180549091169482169490941790935560608601516003909201919091559254925190871692917f4d4e9c36309efab2af26919cf8142564da8c0478e860e295568d100d8c301ce091a3505060045492915050565b600082815260026020908152604080832060039092528220829190825b826003015481101561179f5760008181526020838152604091829020825180840190935280546001600160a01b03168084526001918201549284019290925288900361161b5760018501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115259190612b07565b6001600160a01b03160361161657806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa158015611571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115959190612b2f565b1561161657602082015160405163039b37ab60e41b815260048101919091526001600160a01b038216906339b37ab090602401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612b4c565b6116139087612d09565b95505b61178c565b8760020361178c5760028501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169b9190612b07565b6001600160a01b03160361178c57806001600160a01b0316630f10dd696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b9190612b2f565b1561178c57602082015160405163039b37ab60e41b815260048101919091526001600160a01b038216906339b37ab090602401602060405180830381865afa15801561175b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177f9190612b4c565b6117899087612d09565b95505b50508061179890612ab2565b9050611467565b509195945050505050565b60007f00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d6001600160a01b031663cc0f17866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfb573d6000803e3d6000fd5b611812612683565b6000838152600360209081526040808320858452825291829020805483516101a0810185526001600160a01b039091168082526001830154828501528451632e71b65360e21b8152855193959194929391840192859263b9c6d94c9260048082019392918290030181865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190612b4c565b8152602001868152602001826001600160a01b0316631335791485600101546040518263ffffffff1660e01b81526004016118f091815260200190565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119319190612b07565b6001600160a01b03168152602001826001600160a01b031663e887841e85600101546040518263ffffffff1660e01b815260040161197191815260200190565b602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190612b07565b6001600160a01b03168152602001826001600160a01b031663a123c33e85600101546040518263ffffffff1660e01b81526004016119f291815260200190565b602060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a339190612b07565b6001600160a01b03168152602001826001600160a01b031663c5a46ee685600101546040518263ffffffff1660e01b8152600401611a7391815260200190565b602060405180830381865afa158015611a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab49190612b4c565b8152602001826001600160a01b03166347bb89f085600101546040518263ffffffff1660e01b8152600401611aeb91815260200190565b602060405180830381865afa158015611b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2c9190612b4c565b8152602001826001600160a01b03166339b37ab085600101546040518263ffffffff1660e01b8152600401611b6391815260200190565b602060405180830381865afa158015611b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba49190612b4c565b8152602001826001600160a01b0316639e6b26ba85600101546040518263ffffffff1660e01b8152600401611bdb91815260200190565b602060405180830381865afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c9190612b07565b6001600160a01b03168152602001826001600160a01b031663c0bffb6285600101546040518263ffffffff1660e01b8152600401611c5c91815260200190565b602060405180830381865afa158015611c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9d9190612b2f565b15158152602001826001600160a01b03166376a6bf5285600101546040518263ffffffff1660e01b8152600401611cd691815260200190565b602060405180830381865afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d179190612b2f565b1515905295945050505050565b611d2d33612610565b611d495760405162461bcd60e51b815260040161057e90612cdd565b6000838152600260205260409020548390600114611da55760405162461bcd60e51b81526020600482015260196024820152786465616c206973206e6f7420696e206564697420737461746560381b604482015260640161057e565b60008481526002602052604090208054600114611e045760405162461bcd60e51b815260206004820152601b60248201527f6f6e6c7920666f722065646974696e67206465616c2073746174650000000000604482015260640161057e565b6040805180820182526001600160a01b038681168252602080830187815260008a81526003808452868220908801805483529352948520935184546001600160a01b031916931692909217835590516001909201919091558054909190611e6a90612ab2565b90915550600381015460141015611ece5760405162461bcd60e51b815260206004820152602260248201527f6465616c20706f696e747320636f756e742065786365656473206f66206c696d6044820152611a5d60f21b606482015260840161057e565b600560008154611edd90612ab2565b909155505050505050565b6000546001600160a01b03163314611f125760405162461bcd60e51b815260040161057e90612a4f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260026020908152604080832060039092528220829190825b826003015481101561179f5760008181526020838152604091829020825180840190935280546001600160a01b03168084526001918201549284019290925288900361209e5760018501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa158015611feb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200f9190612b07565b6001600160a01b0316036120995760208201516040516338329a4160e01b815260048101919091526001600160a01b038216906338329a4190602401602060405180830381865afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190612b4c565b6120969087612d09565b95505b6121a8565b876002036121a85760028501546020830151604051635091e19f60e11b815260048101919091526001600160a01b039182169183169063a123c33e90602401602060405180830381865afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612b07565b6001600160a01b0316036121a85760208201516040516338329a4160e01b815260048101919091526001600160a01b038216906338329a4190602401602060405180830381865afa158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190612b4c565b6121a59087612d09565b95505b5050806121b490612ab2565b9050611f51565b600081815260026020819052604090912080549091146122145760405162461bcd60e51b81526020600482015260146024820152736f6e6c7920657865637574696e6720737461746560601b604482015260640161057e565b60028101546000906001600160a01b031615801561223f575060018201546001600160a01b03163314155b1561225c57506002810180546001600160a01b0319163317905560015b60008260030154116122805760405162461bcd60e51b815260040161057e90612acb565b600083815260036020526040812034915b846003015481101561255d576000818152602083815260408083208151808301835281546001600160a01b031680825260019092015493810184905291516304cd5e4560e21b81526004810193909352909290918290631335791490602401602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190612b07565b6020840151604051637443c20f60e11b815260048101919091529091506000906001600160a01b0384169063e887841e90602401602060405180830381865afa158015612382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a69190612b07565b6001600160a01b03161480156123b95750865b1561242c57602083015160405163e3ab470d60e01b815260048101919091523360248201526001600160a01b0383169063e3ab470d90604401600060405180830381600087803b15801561240c57600080fd5b505af1158015612420573d6000803e3d6000fd5b5050505050505061254d565b6001600160a01b03811633148061245257506001600160a01b0381161580156124525750865b156125495760208301516040516338329a4160e01b81526000916001600160a01b038516916338329a419161248d9160040190815260200190565b602060405180830381865afa1580156124aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ce9190612b4c565b6020850151604051630c032dc360e41b815260048101919091523360248201529091506001600160a01b0384169063c032dc309083906044016000604051808303818588803b15801561252057600080fd5b505af1158015612534573d6000803e3d6000fd5b505050505080876125459190612b65565b9650505b5050505b61255681612ab2565b9050612291565b5081156125ce57604051600090339084908381818185875af1925050503d80600081146125a6576040519150601f19603f3d011682016040523d82523d6000602084013e6125ab565b606091505b50509050806125cc5760405162461bcd60e51b815260040161057e90612b78565b505b604080513381526001602082015286917fe1bebd63dac2b6a13df786d357c7ea99338d29e95b8103e4313ec33430f199ee910160405180910390a25050505050565b6000306001600160a01b0383160361262a57506001919050565b506001600160a01b031660009081526001602052604090205460ff1690565b60405180608001604052806000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081525090565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915290565b80151581146126fd57600080fd5b50565b60008060006040848603121561271557600080fd5b833567ffffffffffffffff8082111561272d57600080fd5b818601915086601f83011261274157600080fd5b81358181111561275057600080fd5b8760208260051b850101111561276557600080fd5b6020928301955093505084013561277b816126ef565b809150509250925092565b6001600160a01b03811681146126fd57600080fd5b6000602082840312156127ad57600080fd5b81356127b881612786565b9392505050565b6000602082840312156127d157600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561282357815180516001600160a01b031685528601518685015292840192908501906001016127f5565b5091979650505050505050565b80516001600160a01b03168252602081015160208301526040810151604083015260608101516060830152608081015161287560808401826001600160a01b03169052565b5060a081015161289060a08401826001600160a01b03169052565b5060c08101516128ab60c08401826001600160a01b03169052565b5060e0818101519083015261010080820151908301526101208082015190830152610140808201516001600160a01b03169083015261016080820151151590830152610180908101511515910152565b825181526020808401516001600160a01b0390811682840152604080860151909116908301526060808501519083015260a06080830181905283519083018190526000919060c0840190858301845b828110156128235761295d848351612830565b6101a093909301929084019060010161294a565b815181526020808301516001600160a01b0390811691830191909152604080840151909116908201526060808301519082015260808101610609565b600080604083850312156129c057600080fd5b82356129cb81612786565b915060208301356129db81612786565b809150509250929050565b600080604083850312156129f957600080fd5b50508035926020909101359150565b6101a081016106098284612830565b600080600060608486031215612a2c57600080fd5b833592506020840135612a3e81612786565b929592945050506040919091013590565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612ac457612ac4612a9c565b5060010190565b6020808252601290820152716465616c20686173206e6f20706f696e747360701b604082015260600190565b8051612b0281612786565b919050565b600060208284031215612b1957600080fd5b81516127b881612786565b8051612b02816126ef565b600060208284031215612b4157600080fd5b81516127b8816126ef565b600060208284031215612b5e57600080fd5b5051919050565b8181038181111561060957610609612a9c565b60208082526023908201527f73656e74206574686572206572726f723a206574686572206973206e6f742073604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b6040516101a0810167ffffffffffffffff81118282101715612c0357634e487b7160e01b600052604160045260246000fd5b60405290565b60006101a08284031215612c1c57600080fd5b612c24612bd1565b612c2d83612af7565b8152602083015160208201526040830151604082015260608301516060820152612c5960808401612af7565b6080820152612c6a60a08401612af7565b60a0820152612c7b60c08401612af7565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140612cae818501612af7565b90820152610160612cc0848201612b24565b90820152610180612cd2848201612b24565b908201529392505050565b6020808252601290820152716f6e6c7920666f7220666163746f7269657360701b604082015260600190565b8082018082111561060957610609612a9c56fea26469706673582212200cf7a0df330382332bc8f596c6e4fdeedb4a40d0f62df5eff4e4983148852b4a64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d
-----Decoded View---------------
Arg [0] : feeSettingsAddress (address): 0x37510211032c82E6fFe134768AAad360e8B9C71D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000037510211032c82e6ffe134768aaad360e8b9c71d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.