Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Contract Name:
presaleStorage
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; //pragma experimental ABIEncoderV2; //import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol"; //import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/UniswapFactory.sol"; //import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/UniswapPair.sol"; //import "https://github.com/pancakeswap/pancake-swap-periphery/blob/master/contracts/interfaces/UniswapRouter02.sol"; interface ERC20 { function name() external view returns(string memory); function symbol() external view returns(string memory); function transfer(address to, uint256 value) external returns(bool); function approve(address spender, uint256 value) external returns(bool); function transferFrom(address from, address to, uint256 value) external returns(bool); function totalSupply() external view returns(uint256); function balanceOf(address who) external view returns(uint256); function allowance(address owner, address spender) external view returns(uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; address public voter; mapping(address => bool) public Deployer; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } modifier onlyVoter() { require(msg.sender == voter); _; } modifier onlyDeployer() { require(Deployer[msg.sender]); _; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } contract Consts { uint constant TOKEN_DECIMALS = 18; uint8 constant TOKEN_DECIMALS_UINT8 = 18; uint constant TOKEN_DECIMAL_MULTIPLIER = 10 ** TOKEN_DECIMALS; address public feeContract; uint256 airdrop_fees_Percentage = 2; uint256 constant minLockTime = 600; // 10 mins for degen } /* contract infoStorage is Ownable { struct info { bool exists; string name; string symbol; string logo; string website; string github; string twitter; string reddit; string telegram; string description; string update; } mapping(address => info) public infoManager; constructor(string[10] memory _tokenInfoInput, address _presaleCreator) { if (!infoManager[_presaleCreator].exists) { info memory presaleInfo = info({ exists: true, name: _tokenInfoInput[0], symbol: _tokenInfoInput[1], logo: _tokenInfoInput[2], website: _tokenInfoInput[3], github: _tokenInfoInput[4], twitter: _tokenInfoInput[5], reddit: _tokenInfoInput[6], telegram: _tokenInfoInput[7], description: _tokenInfoInput[8], update: _tokenInfoInput[9] }); infoManager[_presaleCreator] = presaleInfo; } } function ChangeInfoDG(string[10] memory ChangeData) public onlyOwner { infoManager[msg.sender].logo = ChangeData[0]; infoManager[msg.sender].website = ChangeData[1]; infoManager[msg.sender].github = ChangeData[2]; infoManager[msg.sender].twitter = ChangeData[3]; infoManager[msg.sender].reddit = ChangeData[4]; infoManager[msg.sender].telegram = ChangeData[5]; infoManager[msg.sender].update = ChangeData[6]; infoManager[msg.sender].description = ChangeData[7]; info memory presaleInfo = info({ exists: true, name: ChangeData[0], symbol: ChangeData[1], logo: ChangeData[2], website: ChangeData[3], github: ChangeData[4], twitter: ChangeData[5], reddit: ChangeData[6], telegram: ChangeData[7], description: ChangeData[8], update: ChangeData[9] }); infoManager[msg.sender] = presaleInfo; } function changeLogo(string memory newLogo) public onlyOwner { infoManager[msg.sender].logo = newLogo; } function changeWebsite(string memory newWebsite) public onlyOwner { infoManager[msg.sender].website = newWebsite; } function changeGit(string memory newGit) public onlyOwner { infoManager[msg.sender].github = newGit; } function changeTwitter(string memory newTwitter) public onlyOwner { infoManager[msg.sender].twitter = newTwitter; } function changeReddit(string memory newReddit) public onlyOwner { infoManager[msg.sender].reddit = newReddit; } function changeTelegram(string memory newTelegram) public onlyOwner { infoManager[msg.sender].telegram = newTelegram; } function changeDescription(string memory newDescription) public onlyOwner { infoManager[msg.sender].description = newDescription; } function changeUpdate(string memory newUpdate) public onlyOwner { infoManager[msg.sender].update = newUpdate; } } */ interface PresaleContractInterface { function CheckTotalEthRaised() external view returns(uint256); function CheckSoftCap() external view returns(uint256); function getPresaleData() external view returns(uint256[10] memory,bool[4] memory, string memory); } interface auditKycContractInterface { function getAuditKycBool(address _auditInput, address _kycInput) external view returns(bool[2] memory); } contract presaleStorage is Consts, Ownable { uint256 public presaleFees = 1 * (10**18); // 1 ETH uint256 public whitelistFees = 0.9 * (10**18); // 0.9 ETH uint public minUniPercentage = 50; //minimum 50% has to go for uniswap lock //address public presaleDappAddr; //address public routerDappAddr; // address public FilterAddress; address public auditKycContract; uint256 public totalRaisedOnPlatform; uint256 public totalRefundedFromPlatform; //uint256 public deltaStartEndTime = 604800; // address public uniswapDappAddr; // address[3] public finalizeInput; uint256 public tokenFee; // address public UNISWAP_ADDRESS = 0xc0fFee0000C824D24E0F280f1e4D21152625742b; //Koffeeswap Address // address public factoryAddress = 0xC0fFeE00000e1439651C6aD025ea2A71ED7F3Eab; //Koffeeswap factory Address constructor(address _auditKycContract) { // FilterAddress = _filterAddress; auditKycContract = _auditKycContract; } // using SafeMath for uint256; struct Presale { //address presaleInfoAddr; address _owner; address tokenAddress; address presaleAddress; address nftPresaleAddress; address uniswapDep; uint256 _preNum; uint256 createdOn; uint256 lp_locked; //bool exists; bool active; bool presale; bool nft; bool fair; } struct info { //bool exists; string data1; string data2; string logo; string website; string github; string twitter; string reddit; string telegram; string description; string update; } struct perPadStruct { //bool exists; //uint256 createdOn; address creator; uint256 presaleNum; uint256 presaleIndex; } mapping(address => mapping(uint256 => info)) public infoManager; mapping(address => mapping(uint256 => Presale)) public presales; mapping(address => mapping(uint256 => perPadStruct)) public presalePerPad; mapping(address => mapping(uint256 => uint256)) public saleIDPerPad; mapping(uint256 => uint256) public successSaleID; mapping(uint256 => uint256) public failSaleID; mapping(address => mapping(uint256 => uint256)) public successSaleIDPerPad; mapping(address => mapping(uint256 => uint256)) public failSaleIDPerPad; mapping(uint256 => perPadStruct) public allPresales; mapping(uint256 => address) public allPresalesIndexToDappCaller; // mapping(address => bool) public tokenDropRequired; //address[] public presaleOwners; mapping(uint256 => address) public presaleOwners; //governor internal GoverningContract; // mapping(address => mapping (uint256 => uint256)) public createdOn; mapping(address => address) public tokenAddrToOwnerAddr; mapping(address => address) public presaleAddrToOwnerAddr; mapping(address => address) public presaleAddrToDeployerAddr; mapping(address => mapping(uint256 => uint256)) public presaleOwnerToIndex; mapping(uint256 => uint256) public presaleOwnersPresaleNum; mapping(address => uint256) public tokenAddrToIndex; //mapping(address => bool) public RouterValid; //mapping(uint256 => address) public routerRecord; //mapping(address => uint256) public routerNumber; mapping(address => uint256) public ownerPresaleNumber; uint256 public presaleSuccessNumber; uint256 public presaleFailNumber; mapping(address => uint256) public presalePerPadNumber; mapping(address => uint256) public presaleSuccessPerPadNumber; mapping(address => uint256) public presaleFailPerPadNumber; mapping(address => uint256) public presaleToPresaleNum; mapping(address => mapping(uint256 => uint256)) public presaleNumToIndex; //uint256 public totalRouters; uint256 public OwnerIndex; uint256 public liveSaleIndex; //uint256 public extraAmountPer = 2; //uint256 public extraAmountPerVal; //uint256 public hundred = 100; // function CreatePresaleDep(string[3] memory _tokenInfo, uint256[2] memory start_end_time, uint256 rate, uint256[3] memory soft_hard_cap_rate, uint256[2] memory min_max_eth, address[] memory _teamAddresses, uint256[] memory _teamAmounts, uint64[] memory _freezeTime) public{ function CreatePresaleStorage(address tokenAddr,uint256 _lp_locked, address _creator, bool[3] memory _nftIdoFair) public onlyDeployer returns(bool) { //infoStorage PresaleInfo = new infoStorage(_tokenInfo, _creator); //PresaleInfo.transferOwnership(_creator); Presale memory presale = Presale({ //presaleInfoAddr: address(PresaleInfo), _owner: _creator, tokenAddress: tokenAddr, presaleAddress: address(0), nftPresaleAddress: address(0), uniswapDep: address(0), lp_locked: _lp_locked, _preNum: ownerPresaleNumber[_creator], createdOn: block.timestamp, //exists: true, active: true, presale: _nftIdoFair[0], nft: _nftIdoFair[1], fair: _nftIdoFair[2] }); perPadStruct memory perPadData = perPadStruct({ creator: _creator, presaleNum:ownerPresaleNumber[_creator], presaleIndex: OwnerIndex // this is the sale ID that is used in UI }); presales[_creator][ownerPresaleNumber[_creator]] = presale; presalePerPad[msg.sender][presalePerPadNumber[msg.sender]] = perPadData; saleIDPerPad[msg.sender][presalePerPadNumber[msg.sender]] = OwnerIndex; allPresales[OwnerIndex] = perPadData; allPresalesIndexToDappCaller[OwnerIndex] = msg.sender; //createdOn[_creator][ownerPresaleNumber[_creator]] = block.timestamp; presaleOwners[OwnerIndex] = _creator; presaleOwnersPresaleNum[OwnerIndex] = ownerPresaleNumber[_creator]; presaleOwnerToIndex[_creator][ownerPresaleNumber[_creator]] = OwnerIndex; tokenAddrToIndex[tokenAddr] = OwnerIndex; //presaleNumToIndex[_creator][ownerPresaleNumber[_creator]] = OwnerIndex; OwnerIndex++; liveSaleIndex++; tokenAddrToOwnerAddr[tokenAddr] = _creator; //used for search bar on dapp via token address ownerPresaleNumber[_creator]++; presalePerPadNumber[msg.sender]++; /* (bool addLiveFilter, bytes memory addLiveFilterReturn) = FilterAddress.call(abi.encodeWithSignature("addLive(address,address,address)", _creator, presales[_creator][ownerPresaleNumber[_creator]].presaleAddress, presales[_creator][ownerPresaleNumber[_creator]].tokenAddress)); require(addLiveFilter, "adding to Live Filter failed"); // address presaleReturn = abi.decode (presaleFetch, (address)); ownerPresaleNumber[_creator]++; presalePerPadNumber[msg.sender]++; */ return true; } function addPresaleAddr(string[10] memory _tokenInfo,address _presale, address _creator, uint256 _presaleNum) public onlyDeployer returns(bool) { presales[_creator][_presaleNum].presaleAddress = _presale; presaleToPresaleNum[_presale] = _presaleNum; presaleAddrToOwnerAddr[_presale] = _creator; // used for search bar via presale address presaleAddrToDeployerAddr[_presale] = msg.sender; //(bool _addLiveFilter, bytes memory addLiveFilterReturn) = FilterAddress.call(abi.encodeWithSignature("addLive(address,address,address)", _creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress)); //require(_addLiveFilter, "adding to Live Filter failed"); //FilterContract(FilterAddress).addLive(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); info memory presaleInfo = info({ //exists: true, data1: _tokenInfo[0], data2: _tokenInfo[1], logo: _tokenInfo[2], website: _tokenInfo[3], github: _tokenInfo[4], twitter: _tokenInfo[5], reddit: _tokenInfo[6], telegram: _tokenInfo[7], description: _tokenInfo[8], update: " " }); infoManager[_creator][_presaleNum] = presaleInfo; return true; } function addPresaleAndNftSaleAddr(string[10] memory _tokenInfo,address _presale,address _nftSale, address _creator, uint256 _presaleNum) public onlyDeployer returns(bool){ presales[_creator][_presaleNum].presaleAddress = _presale; presales[_creator][_presaleNum].nftPresaleAddress = _nftSale; presaleToPresaleNum[_presale] = _presaleNum; presaleAddrToOwnerAddr[_presale] = _creator; // used for search bar via presale address presaleAddrToDeployerAddr[_presale] = msg.sender; //(bool _addLiveFilter, bytes memory addLiveFilterReturn) = FilterAddress.call(abi.encodeWithSignature("addLive(address,address,address)", _creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress)); //require(_addLiveFilter, "adding to Live Filter failed"); //FilterContract(FilterAddress).addLive(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); info memory presaleInfo = info({ //exists: true, data1: _tokenInfo[0], data2: _tokenInfo[1], logo: _tokenInfo[2], website: _tokenInfo[3], github: _tokenInfo[4], twitter: _tokenInfo[5], reddit: _tokenInfo[6], telegram: _tokenInfo[7], description: _tokenInfo[8], update: " " }); infoManager[_creator][_presaleNum] = presaleInfo; return true; } function addNFTPresaleAddr(address _NFTpresale, address _creator, uint256 _presaleNum) public onlyDeployer { presales[_creator][_presaleNum].nftPresaleAddress = _NFTpresale; } function addRouterAddr(address _router, address _creator, uint256 _presaleNum) public onlyDeployer returns(bool) { presales[_creator][_presaleNum].uniswapDep = _router; return true; } function fetchPresaleNumByOwner(address _creator) public view returns(uint256){ return ownerPresaleNumber[_creator]; } function fetchTokenAddrLiqLockTime(address _creator, uint256 _presaleNum) public view returns(address,uint256){ return (presales[_creator][_presaleNum].tokenAddress,presales[_creator][_presaleNum].lp_locked); } function fetchPresaleStruct(address _creator, uint256 _presaleNum) public view onlyDeployer returns(address,address,address) { return(presales[_creator][_presaleNum].tokenAddress,presales[_creator][_presaleNum].presaleAddress,presales[_creator][_presaleNum].uniswapDep); } function fetchNFTPresaleStruct(address _creator, uint256 _presaleNum) public view onlyDeployer returns(address,address,address,address) { return(presales[_creator][_presaleNum].tokenAddress,presales[_creator][_presaleNum].presaleAddress,presales[_creator][_presaleNum].uniswapDep,presales[_creator][_presaleNum].nftPresaleAddress); } function fetchPresaleTypeStatus(address _creator, uint256 _presaleNum) public view onlyDeployer returns(bool,bool,bool) { return(presales[_creator][_presaleNum].presale,presales[_creator][_presaleNum].nft,presales[_creator][_presaleNum].active); } function fetchNftPresaleStatAddr(address _creator, uint256 _presaleNum) public view onlyDeployer returns(bool,bool,address) { return(presales[_creator][_presaleNum].active,presales[_creator][_presaleNum].nft,presales[_creator][_presaleNum].nftPresaleAddress); } function fetchVoterCallData(address _creator, uint256 _presaleNum) public view onlyDeployer returns(address,address) { return(presales[_creator][_presaleNum].presaleAddress,presales[_creator][_presaleNum].uniswapDep); } function fetchPresaleAddress(address _creator, uint256 _presaleNum) public view onlyDeployer returns(address){ return(presales[_creator][_presaleNum].presaleAddress); } function fetchNFTSaleAddress(address _creator, uint256 _presaleNum) public view onlyDeployer returns(address){ return(presales[_creator][_presaleNum].nftPresaleAddress); } function setPresaleActiveFalse(address _creator, uint256 _presaleNum) public onlyDeployer returns(bool) { require(presales[_creator][_presaleNum].active,"not active"); presales[_creator][_presaleNum].active = false; return true; } function setPresaleFilter(address _creator, uint256 _presaleNum) public onlyDeployer returns(bool) { require(presales[_creator][_presaleNum].active,"not active"); address _presaleAddr = presales[_creator][_presaleNum].presaleAddress; uint256 totalEthRaised = PresaleContractInterface(_presaleAddr).CheckTotalEthRaised(); uint256 SoftCap = PresaleContractInterface(_presaleAddr).CheckSoftCap(); if (!(totalEthRaised < SoftCap) && !(totalEthRaised == 0)) { successSaleIDPerPad[msg.sender][presaleSuccessPerPadNumber[msg.sender]] = presaleOwnerToIndex[_creator][_presaleNum]; successSaleID[presaleSuccessNumber] = presaleOwnerToIndex[_creator][_presaleNum]; presaleSuccessPerPadNumber[msg.sender]++; presaleSuccessNumber++; } else if ((totalEthRaised < SoftCap) || (totalEthRaised == 0)) { failSaleIDPerPad[msg.sender][presaleFailPerPadNumber[msg.sender]] = presaleOwnerToIndex[_creator][_presaleNum]; failSaleID[presaleFailNumber] = presaleOwnerToIndex[_creator][_presaleNum]; presaleFailPerPadNumber[msg.sender]++; presaleFailNumber++; } liveSaleIndex--; return true; } /* function addSuccessFilter(address _creator, uint256 _presaleNum) public onlyDeployer{ //(bool _addSuccessFilter, bytes memory addSuccessFilterReturn) = FilterAddress.call(abi.encodeWithSignature("addSuccess(address,address,address)", _creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress)); //require(_addSuccessFilter, "adding to Success Filter failed"); successSaleIDPerPad[msg.sender][presaleSuccessPerPadNumber[msg.sender]] = presaleOwnerToIndex[_creator][_presaleNum]; successSaleID[presaleSuccessNumber] = presaleOwnerToIndex[_creator][_presaleNum]; presaleSuccessPerPadNumber[msg.sender]++; presaleSuccessNumber++; //FilterContract(FilterAddress).addSuccess(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); } function addSuccessFilterInternal(address _creator, uint256 _presaleNum) internal{ FilterContract(FilterAddress).addSuccess(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); } */ function addFailFilter(address _creator, uint256 _presaleNum) public onlyDeployer{ // this function is needed when presale is cancelled via voting contract //(bool _addFailFilter, bytes memory addFailFilterReturn) = FilterAddress.call(abi.encodeWithSignature("addFailure(address,address,address)", _creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress)); //require(_addFailFilter, "adding to Fail Filter failed"); failSaleIDPerPad[msg.sender][presaleFailPerPadNumber[msg.sender]] = presaleOwnerToIndex[_creator][_presaleNum]; failSaleID[presaleFailNumber] = presaleOwnerToIndex[_creator][_presaleNum]; presaleFailPerPadNumber[msg.sender]++; presaleFailNumber++; liveSaleIndex--; //FilterContract(FilterAddress).addFailure(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); } /* function addFailFilterInternal(address _creator, uint256 _presaleNum) internal{ FilterContract(FilterAddress).addFailure(_creator, presales[_creator][_presaleNum].presaleAddress, presales[_creator][_presaleNum].tokenAddress); } */ function CheckBlockTimestamp() public view returns (uint256){ return block.timestamp; } function changeUniPercentage(uint uniPer) public onlyOwner { require((uniPer >= 0) && (uniPer <= 100), "uniPer value outside range"); minUniPercentage = uniPer; } function ChangeVoterAddr(address _newVoterAddress) public onlyOwner { // require(_newVoterAddress != voter, "New addr is same as Old Addr"); require(_newVoterAddress != address(0), "New Addr cant be zero addr"); voter = _newVoterAddress; } /* function ChangeFilterAddr(address _newFilterAddress) public onlyOwner { // require(_newFilterAddress != FilterAddress, "New addr is same as Old Addr"); require(_newFilterAddress != address(0), "New Addr cant be zero addr"); FilterAddress = _newFilterAddress; } */ function ChangeAuditKycAddr(address _newAuditKycContract) public onlyOwner { // require(_newFilterAddress != FilterAddress, "New addr is same as Old Addr"); require(_newAuditKycContract != address(0), "New Addr cant be zero addr"); auditKycContract = _newAuditKycContract; } function ChangeAirdropFee(uint _newAirdropFee) public onlyOwner { require(_newAirdropFee >= 0 && _newAirdropFee <= 100, "out of range fee value"); require(_newAirdropFee != airdrop_fees_Percentage, "New fee is same as Old fee"); airdrop_fees_Percentage = _newAirdropFee; } function changePresaleFees(uint256 _newFee) public onlyOwner { require((_newFee >= 0), "_newFee value must be >= 0"); presaleFees = _newFee; } function changeWhitelistFees(uint256 _newFee) public onlyOwner { require((_newFee >= 0), "_newFee value must be >= 0"); whitelistFees = _newFee; } function checkTotalEthraisedOfPresale(address presaleToRefundFromOwnerAddress, uint256 _presaleNum) public returns(uint256) { (bool checkEthRaised, bytes memory _totalEthRaised) = presales[presaleToRefundFromOwnerAddress][_presaleNum].presaleAddress.call(abi.encodeWithSignature("CheckTotalEthRaised()")); require(checkEthRaised, "failed to check eth raised"); uint256 totalEthRaised = abi.decode(_totalEthRaised, (uint256)); return totalEthRaised; } function getPresaleDeployerViaOwner(address _creator, uint256 _presaleNum) public view returns(address) { return presaleAddrToDeployerAddr[presales[_creator][_presaleNum].presaleAddress]; } function getPresaleDeployer(address _presaleAddr) public view returns(address) { return presaleAddrToDeployerAddr[_presaleAddr]; } function getNumberOfPresaleOwners() public view returns(uint256) { return OwnerIndex; } /* function addRouter(address _newRouter) onlyOwner public { require(!RouterValid[_newRouter], "already added!"); RouterValid[_newRouter] = true; routerNumber[_newRouter] = totalRouters; routerRecord[totalRouters] = _newRouter; totalRouters++; } function removeRouter(address _newRouter) onlyOwner public { require(RouterValid[_newRouter], "not in added list"); RouterValid[_newRouter] = false; } */ /* function changeExtraTokenPer(uint256 _newPer) onlyOwner public { require(_newPer > 0, "Invalid percentage value"); extraAmountPer = _newPer; } */ function changeFeeContract(address _newContract) onlyOwner public { require(_newContract != address(0x0),"addr cannot be zero"); feeContract = _newContract; } function addDeployer(address _deployer) onlyOwner public { Deployer[_deployer] = true; } function removeDeployer(address _deployer) onlyOwner public { Deployer[_deployer] = false; } /* function getPresaleInfoNumbers(address _presaleOwner, uint256 _presaleNum) public view returns(uint256[3] memory){ return [presales[_presaleOwner][_presaleNum].startTime, presales[_presaleOwner][_presaleNum].endTime, presales[_presaleOwner][_presaleNum].lp_locked]; } */ function getPresaleInfoAddresses(address _presaleOwner, uint256 _presaleNum) public view returns(address[3] memory){ return [presales[_presaleOwner][_presaleNum].tokenAddress, presales[_presaleOwner][_presaleNum].presaleAddress, presales[_presaleOwner][_presaleNum].uniswapDep]; } function ChangeInfoDG(string[10] memory ChangeData, uint256 _presaleNum) public { /* infoManager[msg.sender].logo = ChangeData[0]; infoManager[msg.sender].website = ChangeData[1]; infoManager[msg.sender].github = ChangeData[2]; infoManager[msg.sender].twitter = ChangeData[3]; infoManager[msg.sender].reddit = ChangeData[4]; infoManager[msg.sender].telegram = ChangeData[5]; infoManager[msg.sender].update = ChangeData[6]; infoManager[msg.sender].description = ChangeData[7]; */ require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); info memory presaleInfo = info({ //exists: true, data1: ChangeData[0], data2: ChangeData[1], logo: ChangeData[2], website: ChangeData[3], github: ChangeData[4], twitter: ChangeData[5], reddit: ChangeData[6], telegram: ChangeData[7], description: ChangeData[8], update: infoManager[msg.sender][_presaleNum].update }); infoManager[msg.sender][_presaleNum] = presaleInfo; } function changeLogo(string memory newLogo, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].logo = newLogo; } function changeLogoPlatform(string memory newLogo, address _presaleOwner, uint256 _presaleNum) public onlyOwner{ require(presales[_presaleOwner][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].logo = newLogo; } function changeWebsite(string memory newWebsite, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].website = newWebsite; } function changeWebsitePlatform(string memory newWebsite, address _presaleOwner, uint256 _presaleNum) public onlyOwner{ //require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].website = newWebsite; } function changeData1Platform(string memory newData1, address _presaleOwner, uint256 _presaleNum) public onlyOwner{ //require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].data1 = newData1; } function changeData2Platform(string memory newData2, address _presaleOwner, uint256 _presaleNum) public onlyOwner{ //require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].data2 = newData2; } function changeUpdatePlatform(string memory newUpdate, address _presaleOwner, uint256 _presaleNum) public onlyOwner{ //require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].update = newUpdate; } function changeGit(string memory newGit, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].github = newGit; } function changeTwitter(string memory newTwitter, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].twitter = newTwitter; } function changeReddit(string memory newReddit, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].reddit = newReddit; } function changeTelegram(string memory newTelegram, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].telegram = newTelegram; } function changeTelegramPlatform(string memory newTelegram, address _presaleOwner, uint256 _presaleNum) public onlyOwner { //require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[_presaleOwner][_presaleNum].telegram = newTelegram; } function changeDescription(string memory newDescription, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].description = newDescription; } function changeUpdate(string memory newUpdate, uint256 _presaleNum) public { require(presales[msg.sender][_presaleNum].active,"presale doesnt exist"); infoManager[msg.sender][_presaleNum].update = newUpdate; } function getLiveSaleId(uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ uint256 i = _iterRangeStart; uint256 j = 0; require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GLSI"); uint256 iterationNum; // if((_iterRangeEnd - _iterRangeStart) >= OwnerIndex){ iterationNum = OwnerIndex; // } // else{ // iterationNum = _iterRangeEnd - _iterRangeStart + 1; //} uint256[] memory liveSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); // for(uint256 i = _iterRangeStart; i < iterationNum; i++){ while(i < _iterRangeEnd && j < iterationNum){ if(presales[allPresales[i].creator][allPresales[i].presaleNum].active){ liveSaleIDs[i - _iterRangeStart] = allPresales[OwnerIndex - i - 1].presaleIndex; i++; } j++; } //} return liveSaleIDs; } function getSuccessSaleId(uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GSSI"); uint256 iterationNum; if((_iterRangeEnd - _iterRangeStart) >= presaleSuccessNumber){ iterationNum = presaleSuccessNumber; } else{ iterationNum = _iterRangeEnd + 1; } uint256[] memory successSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); for(uint256 i = _iterRangeStart; i < iterationNum; i++){ successSaleIDs[i - _iterRangeStart] = successSaleID[presaleSuccessNumber - 1 - i]; } return successSaleIDs; } function getFailSaleId(uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GFSI"); uint256 iterationNum; if((_iterRangeEnd - _iterRangeStart) >= presaleFailNumber){ iterationNum = presaleFailNumber; } else{ iterationNum = _iterRangeEnd + 1; } //uint256 TotalPresales = presalePerPadNumber[_maindappAddress]; uint256[] memory failSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); for(uint256 i = _iterRangeStart; i < iterationNum; i++){ failSaleIDs[i - _iterRangeStart] = failSaleID[presaleFailNumber - 1 - i]; } return failSaleIDs; } function getSaleIdPerPad(address _maindappAddress, uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GSIPP"); uint256 iterationNum; if((_iterRangeEnd - _iterRangeStart) > presalePerPadNumber[_maindappAddress]){ iterationNum = presalePerPadNumber[_maindappAddress]; } else{ iterationNum = _iterRangeEnd; } //uint256 padTotalPresales = presalePerPadNumber[_maindappAddress]; uint256[] memory perPadSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); for(uint256 i = _iterRangeStart; i < iterationNum; i++){ perPadSaleIDs[i - _iterRangeStart] = saleIDPerPad[_maindappAddress][presalePerPadNumber[_maindappAddress] -1 - i]; } return perPadSaleIDs; } function getLiveSaleIdPerPad(address _maindappAddress,uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ uint256 i = _iterRangeStart; uint256 j = 0; require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GLSIPP"); uint256 iterationNum; // if((_iterRangeEnd - _iterRangeStart) >= presalePerPadNumber[_maindappAddress]){ iterationNum = presalePerPadNumber[_maindappAddress]; // } // else{ // iterationNum = _iterRangeEnd - _iterRangeStart + 1; //} uint256[] memory liveSaleIDsPerPad = new uint256[](_iterRangeEnd - _iterRangeStart + 1); // for(uint256 i = _iterRangeStart; i < iterationNum; i++){ while(i < _iterRangeEnd && j < iterationNum){ if(presales[presalePerPad[_maindappAddress][i].creator][presalePerPad[_maindappAddress][i].presaleNum].active){ liveSaleIDsPerPad[i - _iterRangeStart] = presalePerPad[_maindappAddress][presalePerPadNumber[_maindappAddress] -1 - i].presaleIndex; i++; } j++; } //} return liveSaleIDsPerPad; } function getSuccessSaleIdPerPad(address _maindappAddress, uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GSSIPP"); uint256 iterationNum; if((_iterRangeEnd - _iterRangeStart) > presaleSuccessPerPadNumber[_maindappAddress]){ iterationNum = presaleSuccessPerPadNumber[_maindappAddress]; } else{ iterationNum = _iterRangeEnd; } uint256[] memory perPadSuccessSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); for(uint256 i = _iterRangeStart; i < iterationNum; i++){ perPadSuccessSaleIDs[i - _iterRangeStart] = successSaleIDPerPad[_maindappAddress][presaleSuccessPerPadNumber[_maindappAddress] -1 - i]; } return perPadSuccessSaleIDs; } function getFailSaleIdPerPad(address _maindappAddress, uint256 _iterRangeStart, uint256 _iterRangeEnd) public view returns (uint256[] memory){ require(_iterRangeEnd >= _iterRangeStart,"invaid iteration range GFSIPP"); uint256 iterationNum; if((_iterRangeEnd - _iterRangeStart) > presaleFailPerPadNumber[_maindappAddress]){ iterationNum = presaleFailPerPadNumber[_maindappAddress]; } else{ iterationNum = _iterRangeEnd; } uint256[] memory perPadFailSaleIDs = new uint256[](_iterRangeEnd - _iterRangeStart + 1); for(uint256 i = _iterRangeStart; i < iterationNum; i++){ perPadFailSaleIDs[i - _iterRangeStart] = failSaleIDPerPad[_maindappAddress][presaleFailPerPadNumber[_maindappAddress] -1 - i]; } return perPadFailSaleIDs; } function getPresaleStorageData(uint256 _index) public view returns(address[4] memory,uint256[3] memory, bool[2] memory, string[12] memory, uint256[10] memory, bool[4] memory, string memory) { address preOwner = allPresales[_index].creator; uint256 presaleNumber = allPresales[_index].presaleNum; //bool[4] memory presaleType; address[4] memory Addresses; uint256[3] memory structUintData; string[12] memory socialInfo; (uint256[10] memory presaleDataUint, bool[4] memory presaleDataBool, string memory presaleTypeString) = PresaleContractInterface(presales[preOwner][presaleNumber].presaleAddress).getPresaleData(); bool[2] memory auditKycBools = auditKycContractInterface(auditKycContract).getAuditKycBool(presales[preOwner][presaleNumber].tokenAddress,presales[preOwner][presaleNumber]._owner); Addresses = [presales[preOwner][presaleNumber]._owner,presales[preOwner][presaleNumber].tokenAddress,presales[preOwner][presaleNumber].presaleAddress,presales[preOwner][presaleNumber].nftPresaleAddress]; structUintData = [presales[preOwner][presaleNumber].lp_locked,presales[preOwner][presaleNumber]._preNum,presales[preOwner][presaleNumber].createdOn]; //presaleType = [presales[preOwner][presaleNumber].active,presales[preOwner][presaleNumber].presale,presales[preOwner][presaleNumber].nft,presales[preOwner][presaleNumber].fair]; socialInfo = [ERC20(presales[preOwner][presaleNumber].tokenAddress).name(),ERC20(presales[preOwner][presaleNumber].tokenAddress).symbol(),infoManager[preOwner][presaleNumber].data1,infoManager[preOwner][presaleNumber].data2,infoManager[preOwner][presaleNumber].logo,infoManager[preOwner][presaleNumber].website,infoManager[preOwner][presaleNumber].github,infoManager[preOwner][presaleNumber].twitter,infoManager[preOwner][presaleNumber].reddit,infoManager[preOwner][presaleNumber].telegram,infoManager[preOwner][presaleNumber].description,infoManager[preOwner][presaleNumber].update]; return (Addresses,structUintData,auditKycBools,socialInfo,presaleDataUint,presaleDataBool,presaleTypeString); } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_auditKycContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"_newAirdropFee","type":"uint256"}],"name":"ChangeAirdropFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAuditKycContract","type":"address"}],"name":"ChangeAuditKycAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[10]","name":"ChangeData","type":"string[10]"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"ChangeInfoDG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVoterAddress","type":"address"}],"name":"ChangeVoterAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"CheckBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"uint256","name":"_lp_locked","type":"uint256"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bool[3]","name":"_nftIdoFair","type":"bool[3]"}],"name":"CreatePresaleStorage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Deployer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OwnerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_deployer","type":"address"}],"name":"addDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"addFailFilter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NFTpresale","type":"address"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"addNFTPresaleAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[10]","name":"_tokenInfo","type":"string[10]"},{"internalType":"address","name":"_presale","type":"address"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"addPresaleAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[10]","name":"_tokenInfo","type":"string[10]"},{"internalType":"address","name":"_presale","type":"address"},{"internalType":"address","name":"_nftSale","type":"address"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"addPresaleAndNftSaleAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"addRouterAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPresales","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"presaleNum","type":"uint256"},{"internalType":"uint256","name":"presaleIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPresalesIndexToDappCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auditKycContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"newData1","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeData1Platform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newData2","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeData2Platform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newDescription","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newContract","type":"address"}],"name":"changeFeeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newGit","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeGit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newLogo","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeLogo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newLogo","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeLogoPlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"changePresaleFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newReddit","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeReddit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTelegram","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeTelegram","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTelegram","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeTelegramPlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newTwitter","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeTwitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uniPer","type":"uint256"}],"name":"changeUniPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUpdate","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUpdate","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeUpdatePlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newWebsite","type":"string"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newWebsite","type":"string"},{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"changeWebsitePlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"changeWhitelistFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presaleToRefundFromOwnerAddress","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"checkTotalEthraisedOfPresale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"failSaleID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"failSaleIDPerPad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchNFTPresaleStruct","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchNFTSaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchNftPresaleStatAddr","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchPresaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"}],"name":"fetchPresaleNumByOwner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchPresaleStruct","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchPresaleTypeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchTokenAddrLiqLockTime","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"fetchVoterCallData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getFailSaleId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_maindappAddress","type":"address"},{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getFailSaleIdPerPad","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getLiveSaleId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_maindappAddress","type":"address"},{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getLiveSaleIdPerPad","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfPresaleOwners","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_presaleAddr","type":"address"}],"name":"getPresaleDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"getPresaleDeployerViaOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_presaleOwner","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"getPresaleInfoAddresses","outputs":[{"internalType":"address[3]","name":"","type":"address[3]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getPresaleStorageData","outputs":[{"internalType":"address[4]","name":"","type":"address[4]"},{"internalType":"uint256[3]","name":"","type":"uint256[3]"},{"internalType":"bool[2]","name":"","type":"bool[2]"},{"internalType":"string[12]","name":"","type":"string[12]"},{"internalType":"uint256[10]","name":"","type":"uint256[10]"},{"internalType":"bool[4]","name":"","type":"bool[4]"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_maindappAddress","type":"address"},{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getSaleIdPerPad","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getSuccessSaleId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_maindappAddress","type":"address"},{"internalType":"uint256","name":"_iterRangeStart","type":"uint256"},{"internalType":"uint256","name":"_iterRangeEnd","type":"uint256"}],"name":"getSuccessSaleIdPerPad","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"infoManager","outputs":[{"internalType":"string","name":"data1","type":"string"},{"internalType":"string","name":"data2","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"github","type":"string"},{"internalType":"string","name":"twitter","type":"string"},{"internalType":"string","name":"reddit","type":"string"},{"internalType":"string","name":"telegram","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"update","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liveSaleIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minUniPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownerPresaleNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleAddrToDeployerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleAddrToOwnerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleFailNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleFailPerPadNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleNumToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleOwnerToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"presaleOwnersPresaleNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"presalePerPad","outputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint256","name":"presaleNum","type":"uint256"},{"internalType":"uint256","name":"presaleIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presalePerPadNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleSuccessNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleSuccessPerPadNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleToPresaleNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"presales","outputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"presaleAddress","type":"address"},{"internalType":"address","name":"nftPresaleAddress","type":"address"},{"internalType":"address","name":"uniswapDep","type":"address"},{"internalType":"uint256","name":"_preNum","type":"uint256"},{"internalType":"uint256","name":"createdOn","type":"uint256"},{"internalType":"uint256","name":"lp_locked","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"presale","type":"bool"},{"internalType":"bool","name":"nft","type":"bool"},{"internalType":"bool","name":"fair","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_deployer","type":"address"}],"name":"removeDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"saleIDPerPad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"setPresaleActiveFalse","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"setPresaleFilter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"successSaleID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"successSaleIDPerPad","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenAddrToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenAddrToOwnerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRaisedOnPlatform","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRefundedFromPlatform","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"voter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526002600155670de0b6b3a7640000600555670c7d713b49da000060065560326007553480156200003357600080fd5b5060405162005adf38038062005adf83398101604081905262000056916200008a565b60028054336001600160a01b031991821617909155600880549091166001600160a01b0392909216919091179055620000bc565b6000602082840312156200009d57600080fd5b81516001600160a01b0381168114620000b557600080fd5b9392505050565b615a1380620000cc6000396000f3fe608060405234801561001057600080fd5b50600436106104355760003560e01c806303c5b30b1461043a578063044029791461045157806306e29712146104665780630778ec0a14610491578063086ae2dd146104bc5780630a095134146104e55780630b3ac4c5146105085780630bf915c51461051b5780630c94d397146105c85780631089fb68146105db57806312f2dd43146105ee57806313dd18c614610601578063150322c2146106145780631ada79a4146106345780631bd65cd21461065f57806325649eb514610698578063284def15146106b8578063332deab2146106c1578063338ce78f146106ea57806335a45c0e146106fd5780633ec7ab911461071d578063401e05a11461073057806341ef58ca146107435780634253fb1814610756578063455991361461079c57806346c96aac146107a557806347ce71ab146107b85780634cb8a6ae146107d8578063548c531c146107e1578063567e2d921461080157806356c833a61461080a5780635787b1421461081d57806358528aa51461083057806360b2aff3146108435780636188135c1461086c57806365553ccc1461087f578063715018a6146108a85780637a48fd78146108b05780637add991d146108c35780638027b4a2146108d6578063806d47d2146108df578063825240171461090a578063841046551461091d57806385b3ab2114610948578063880f40391461096e5780638cda91b5146109815780638d80b9e7146109ac5780638da5cb5b146109bf57806396fc379a146109d2578063979aecd3146109e557806397e95dd414610a4557806398140b5514610a585780639c8e8ef014610a9d5780639cca1eb914610ab05780639cebb8cf14610ad95780639dd7870a14610b0b5780639ec8f43614610b1e578063a42b45bf14610b31578063a46cbe8914610b3a578063a9e1a14a14610b63578063accef1fa14610bc1578063b40c2ad914610bc7578063b56a038a14610bf0578063b752809414610bf9578063b8547c2914610c0c578063b8956cd414610c1f578063ba806e7f14610c32578063bc59977514610c52578063c391010a14610c65578063cf25127314610c85578063d016696f14610c98578063d146244314610cb8578063d394925414610cd7578063d6b4441114610cea578063d98702c714610d0b578063dec379ff14610d1e578063e0141aa114610d31578063e087c44314610d44578063e11f2d1314610d67578063e591029914610d7a578063e8e35a1214610dbe578063ef8c687014610dd1578063efc7ba3b14610dda578063efcf1c9114610dfa578063f230297614610e0d578063f2d206dd14610e16578063f2fde38b14610e42578063f315df8614610e55578063f321015f14610e68578063f3d7443b14610e7b578063f42d985514610e8e578063f4b2865414610eae578063fb3e651614610ec1578063fc48736614610eca578063fd23df1914610f07575b600080fd5b6025545b6040519081526020015b60405180910390f35b61046461045f366004614df8565b610f1a565b005b600054610479906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b61043e61049f366004614e4e565b600f60209081526000928352604080842090915290825290205481565b6104796104ca366004614e78565b6015602052600090815260409020546001600160a01b031681565b6104f86104f3366004614e9f565b610fb6565b6040519015158152602001610448565b6104f8610516366004614f51565b6115ce565b6105b0610529366004614e4e565b600d6020908152600092835260408084209091529082529020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b039788169896881697958616969486169590931693919290919060ff80821691610100810482169162010000820481169163010000009004168c565b6040516104489c9b9a99989796959493929190614f7d565b6104646105d6366004614ff9565b61162c565b600854610479906001600160a01b031681565b6104646105fc366004614ff9565b611695565b61046461060f366004614ff9565b6116f9565b61043e61062236600461503d565b60216020526000908152604090205481565b61043e610642366004614e4e565b602460209081526000928352604080842090915290825290205481565b61067261066d366004614e4e565b61175d565b60408051931515845291151560208401526001600160a01b031690820152606001610448565b6106ab6106a636600461505f565b6117c1565b6040516104489190615081565b61043e60075481565b61043e6106cf36600461503d565b6001600160a01b03166000908152601d602052604090205490565b6104f86106f8366004615138565b611913565b61043e61070b36600461503d565b601c6020526000908152604090205481565b61046461072b366004614e78565b611bb7565b6106ab61073e36600461505f565b611bd3565b6106ab6107513660046151ae565b611d1a565b610769610764366004614e4e565b611ea7565b604080516001600160a01b0395861681529385166020850152918416918301919091529091166060820152608001610448565b61043e600b5481565b600354610479906001600160a01b031681565b61043e6107c6366004614e78565b601b6020526000908152604090205481565b61043e60055481565b61043e6107ef366004614e78565b60106020526000908152604090205481565b61043e60065481565b610479610818366004614e4e565b611f18565b61046461082b36600461503d565b611f60565b61046461083e366004614ff9565b611fe5565b610479610851366004614e78565b6016602052600090815260409020546001600160a01b031681565b61046461087a366004614df8565b612049565b61089261088d366004614e4e565b612090565b6040516104489a99989796959493929190615231565b610464612637565b6104646108be366004614df8565b612698565b6106ab6108d13660046151ae565b6126df565b61043e60265481565b61043e6108ed366004614e4e565b601360209081526000928352604080842090915290825290205481565b6104f86109183660046152fb565b6128a4565b61043e61092b366004614e4e565b601260209081526000928352604080842090915290825290205481565b61095b610956366004614e78565b612b31565b6040516104489796959493929190615408565b61046461097c36600461503d565b61385f565b61043e61098f366004614e4e565b601a60209081526000928352604080842090915290825290205481565b6104646109ba366004614df8565b61389a565b600254610479906001600160a01b031681565b6106ab6109e03660046151ae565b6138e1565b610a266109f3366004614e4e565b6001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600790910154911691565b604080516001600160a01b039093168352602083019190915201610448565b610464610a53366004614e78565b613a69565b610479610a66366004614e4e565b6001600160a01b039182166000908152600d6020908152604080832093835292815282822060020154841682526019905220541690565b610464610aab366004614df8565b613a85565b610479610abe36600461503d565b6018602052600090815260409020546001600160a01b031681565b610aec610ae7366004614e4e565b613acc565b6040805193151584529115156020840152151590820152606001610448565b6106ab610b1936600461505f565b613b31565b610464610b2c366004614e4e565b613cb5565b61043e60095481565b610479610b4836600461503d565b6017602052600090815260409020546001600160a01b031681565b610b9c610b71366004614e78565b6014602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610448565b4261043e565b610479610bd536600461503d565b6019602052600090815260409020546001600160a01b031681565b61043e600a5481565b610464610c07366004614ff9565b613d68565b610464610c1a366004614f51565b613dcc565b610464610c2d366004614ff9565b613e25565b610c45610c40366004614e4e565b613e89565b60405161044891906154c5565b610464610c60366004614e78565b613eeb565b61043e610c7336600461503d565b60226020526000908152604090205481565b6104f8610c93366004614e4e565b613f9f565b61043e610ca636600461503d565b601d6020526000908152604090205481565b61043e610cc636600461503d565b602080526000908152604090205481565b61043e610ce5366004614e4e565b614236565b610cfd610cf8366004614e4e565b614340565b6040516104489291906154ff565b610464610d19366004614ff9565b614397565b610464610d2c36600461503d565b6143fb565b610464610d3f366004615519565b61445a565b6104f8610d5236600461503d565b60046020526000908152604090205460ff1681565b610464610d75366004614e78565b61474b565b610b9c610d88366004614e4e565b600e6020908152600092835260408084209091529082529020805460018201546002909201546001600160a01b03909116919083565b6106ab610dcc3660046151ae565b6147b5565b61043e601f5481565b61043e610de8366004614e78565b60116020526000908152604090205481565b610464610e08366004614ff9565b61493d565b61043e60255481565b610479610e2436600461503d565b6001600160a01b039081166000908152601960205260409020541690565b610464610e5036600461503d565b6149a1565b610464610e6336600461503d565b6149c4565b610479610e76366004614e4e565b6149fc565b6104f8610e89366004614e4e565b614a44565b61043e610e9c36600461503d565b60236020526000908152604090205481565b610464610ebc366004614df8565b614adb565b61043e601e5481565b610edd610ed8366004614e4e565b614b1f565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610448565b610464610f1536600461503d565b614b81565b6002546001600160a01b03163314610f3157600080fd5b6001600160a01b0382166000908152600d6020908152604080832084845290915290206008015460ff16610f805760405162461bcd60e51b8152600401610f779061554e565b60405180910390fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600201610fb084826155fc565b50505050565b3360009081526004602052604081205460ff16610fd257600080fd5b60408051610180810182526001600160a01b0385811680835290881660208084019190915260008385018190526060840181905260808401819052918252601d81529281205460a08301524260c083015260e08201879052600161010083015284511515610120830152918401511515610140820152610160810184600260200201511515815250905060006040518060600160405280866001600160a01b03168152602001601d6000886001600160a01b03166001600160a01b03168152602001908152602001600020548152602001602554815250905081600d6000876001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000896001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff0219169083151502179055506101408201518160080160026101000a81548160ff0219169083151502179055506101608201518160080160036101000a81548160ff02191690831515021790555090505080600e6000336001600160a01b03166001600160a01b03168152602001908152602001600020600060206000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015560408201518160020155905050602554600f6000336001600160a01b03166001600160a01b03168152602001908152602001600020600060206000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020819055508060146000602554815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010155604082015181600201559050503360156000602554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460166000602554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601d6000866001600160a01b03166001600160a01b0316815260200190815260200160002054601b6000602554815260200190815260200160002081905550602554601a6000876001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000896001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002081905550602554601c6000896001600160a01b03166001600160a01b03168152602001908152602001600020819055506025600081548092919061153d906156e7565b909155505060268054906000611552836156e7565b90915550506001600160a01b03878116600090815260176020908152604080832080546001600160a01b031916948a169485179055928252601d905290812080549161159d836156e7565b909155505033600090815260208052604081208054916115bc836156e7565b90915550600198975050505050505050565b3360009081526004602052604081205460ff166115ea57600080fd5b506001600160a01b039182166000908152600d602090815260408083209383529290522060040180546001600160a01b03191692909116919091179055600190565b336000908152600d6020908152604080832084845290915290206008015460ff166116695760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060050161169083826155fc565b505050565b336000908152600d6020908152604080832084845290915290206008015460ff166116d25760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060040161169083826155fc565b336000908152600d6020908152604080832084845290915290206008015460ff166117365760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060030161169083826155fc565b336000908152600460205260408120548190819060ff1661177d57600080fd5b5050506001600160a01b039182166000908152600d6020908152604080832093835292905220600881015460039091015460ff808316946201000090930416921690565b6060828210156118115760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e6765204753534960281b6044820152606401610f77565b601e546000906118218585615700565b1061182f5750601e5461183d565b61183a836001615713565b90505b60006118498585615700565b611854906001615713565b6001600160401b0381111561186b5761186b614cf0565b604051908082528060200260200182016040528015611894578160200160208202803683370190505b509050845b828110156119085760106000826001601e546118b59190615700565b6118bf9190615700565b8152602001908152602001600020548287836118db9190615700565b815181106118eb576118eb6156bb565b602090810291909101015280611900816156e7565b915050611899565b509150505b92915050565b3360009081526004602052604081205460ff1661192f57600080fd5b6001600160a01b038381166000818152600d6020908152604080832087845282528083206002810180548c88166001600160a01b0319918216811790925560039092018054978c16978316979097179096559483526023825280832087905560188252808320805486169094179093556019815282822080549094163317909355815161014081019092528851825291810188600160200201518152602001886002600a81106119e1576119e16156bb565b60200201518152602001886003600a81106119fe576119fe6156bb565b60200201518152602001886004600a8110611a1b57611a1b6156bb565b60200201518152602001886005600a8110611a3857611a386156bb565b60200201518152602001886006600a8110611a5557611a556156bb565b60200201518152602001886007600a8110611a7257611a726156bb565b60200201518152602001886008600a8110611a8f57611a8f6156bb565b60209081029190910151825260408051808201825260018152600160fd1b81840152928201929092526001600160a01b0387166000908152600c825282812087825290915220815191925082918190611ae890826155fc565b5060208201516001820190611afd90826155fc565b5060408201516002820190611b1290826155fc565b5060608201516003820190611b2790826155fc565b5060808201516004820190611b3c90826155fc565b5060a08201516005820190611b5190826155fc565b5060c08201516006820190611b6690826155fc565b5060e08201516007820190611b7b90826155fc565b506101008201516008820190611b9190826155fc565b506101208201516009820190611ba790826155fc565b5060019998505050505050505050565b6002546001600160a01b03163314611bce57600080fd5b600655565b606082821015611c235760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e6765204746534960281b6044820152606401610f77565b601f54600090611c338585615700565b10611c415750601f54611c4f565b611c4c836001615713565b90505b6000611c5b8585615700565b611c66906001615713565b6001600160401b03811115611c7d57611c7d614cf0565b604051908082528060200260200182016040528015611ca6578160200160208202803683370190505b509050845b828110156119085760116000826001601f54611cc79190615700565b611cd19190615700565b815260200190815260200160002054828783611ced9190615700565b81518110611cfd57611cfd6156bb565b602090810291909101015280611d12816156e7565b915050611cab565b606082821015611d6b5760405162461bcd60e51b815260206004820152601c60248201527b0696e7661696420697465726174696f6e2072616e67652047534950560241b6044820152606401610f77565b6001600160a01b0384166000908152602080526040812054611d8d8585615700565b1115611db157506001600160a01b0384166000908152602080526040902054611db4565b50815b6000611dc08585615700565b611dcb906001615713565b6001600160401b03811115611de257611de2614cf0565b604051908082528060200260200182016040528015611e0b578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b0387166000908152600f602090815260408083209180528220549091908390611e4a90600190615700565b611e549190615700565b815260200190815260200160002054828783611e709190615700565b81518110611e8057611e806156bb565b602090810291909101015280611e95816156e7565b915050611e10565b5095945050505050565b3360009081526004602052604081205481908190819060ff16611ec957600080fd5b505050506001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600282015460048301546003909301549184169490841693928316929190911690565b3360009081526004602052604081205460ff16611f3457600080fd5b506001600160a01b039182166000908152600d6020908152604080832093835292905220600201541690565b6002546001600160a01b03163314611f7757600080fd5b6001600160a01b038116611fc35760405162461bcd60e51b8152602060048201526013602482015272616464722063616e6e6f74206265207a65726f60681b6044820152606401610f77565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d6020908152604080832084845290915290206008015460ff166120225760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060020161169083826155fc565b6002546001600160a01b0316331461206057600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600101610fb084826155fc565b600c6020908152600092835260408084209091529082529020805481906120b69061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546120e29061557c565b801561212f5780601f106121045761010080835404028352916020019161212f565b820191906000526020600020905b81548152906001019060200180831161211257829003601f168201915b5050505050908060010180546121449061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546121709061557c565b80156121bd5780601f10612192576101008083540402835291602001916121bd565b820191906000526020600020905b8154815290600101906020018083116121a057829003601f168201915b5050505050908060020180546121d29061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546121fe9061557c565b801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b5050505050908060030180546122609061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461228c9061557c565b80156122d95780601f106122ae576101008083540402835291602001916122d9565b820191906000526020600020905b8154815290600101906020018083116122bc57829003601f168201915b5050505050908060040180546122ee9061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461231a9061557c565b80156123675780601f1061233c57610100808354040283529160200191612367565b820191906000526020600020905b81548152906001019060200180831161234a57829003601f168201915b50505050509080600501805461237c9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546123a89061557c565b80156123f55780601f106123ca576101008083540402835291602001916123f5565b820191906000526020600020905b8154815290600101906020018083116123d857829003601f168201915b50505050509080600601805461240a9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546124369061557c565b80156124835780601f1061245857610100808354040283529160200191612483565b820191906000526020600020905b81548152906001019060200180831161246657829003601f168201915b5050505050908060070180546124989061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546124c49061557c565b80156125115780601f106124e657610100808354040283529160200191612511565b820191906000526020600020905b8154815290600101906020018083116124f457829003601f168201915b5050505050908060080180546125269061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546125529061557c565b801561259f5780601f106125745761010080835404028352916020019161259f565b820191906000526020600020905b81548152906001019060200180831161258257829003601f168201915b5050505050908060090180546125b49061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546125e09061557c565b801561262d5780601f106126025761010080835404028352916020019161262d565b820191906000526020600020905b81548152906001019060200180831161261057829003601f168201915b505050505090508a565b6002546001600160a01b0316331461264e57600080fd5b6002546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600280546001600160a01b0319169055565b6002546001600160a01b031633146126af57600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600301610fb084826155fc565b6060826000818410156127345760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e676520474c534950500000006044820152606401610f77565b6001600160a01b0386166000908152602080526040812054906127578787615700565b612762906001615713565b6001600160401b0381111561277957612779614cf0565b6040519080825280602002602001820160405280156127a2578160200160208202803683370190505b5090505b85841080156127b457508183105b15612899576001600160a01b038089166000908152600e60209081526040808320888452825280832080549094168352600d82528083206001909401548352929052206008015460ff1615612887576001600160a01b0388166000908152600e60209081526040808320918052822054909190869061283590600190615700565b61283f9190615700565b81526020019081526020016000206002015481888661285e9190615700565b8151811061286e5761286e6156bb565b602090810291909101015283612883816156e7565b9450505b82612891816156e7565b9350506127a6565b979650505050505050565b3360009081526004602052604081205460ff166128c057600080fd5b6001600160a01b038381166000818152600d6020908152604080832087845282528083206002018054958a166001600160a01b0319968716811790915583526023825280832087905560188252808320805486169094179093556019815282822080549094163317909355815161014081019092528751825291810187600160200201518152602001876002600a811061295c5761295c6156bb565b60200201518152602001876003600a8110612979576129796156bb565b60200201518152602001876004600a8110612996576129966156bb565b60200201518152602001876005600a81106129b3576129b36156bb565b60200201518152602001876006600a81106129d0576129d06156bb565b60200201518152602001876007600a81106129ed576129ed6156bb565b60200201518152602001876008600a8110612a0a57612a0a6156bb565b60209081029190910151825260408051808201825260018152600160fd1b81840152928201929092526001600160a01b0387166000908152600c825282812087825290915220815191925082918190612a6390826155fc565b5060208201516001820190612a7890826155fc565b5060408201516002820190612a8d90826155fc565b5060608201516003820190612aa290826155fc565b5060808201516004820190612ab790826155fc565b5060a08201516005820190612acc90826155fc565b5060c08201516006820190612ae190826155fc565b5060e08201516007820190612af690826155fc565b506101008201516008820190612b0c90826155fc565b506101208201516009820190612b2290826155fc565b50600198975050505050505050565b612b39614c4f565b612b41614c6d565b612b49614c8b565b612b51614ca9565b612b59614cd1565b612b61614c4f565b600087815260146020526040902080546001909101546060916001600160a01b031690612b8c614c4f565b612b94614c6d565b612b9c614ca9565b6001600160a01b038086166000908152600d60209081526040808320888452909152808220600201548151630c2c899560e31b8152915192938493849392909116916361644ca891600480830192869291908290030181865afa158015612c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c2f91908101906157e9565b9250925092506000600860009054906101000a90046001600160a01b03166001600160a01b031663678db83c600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b0316600d60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060000160009054906101000a90046001600160a01b03166040518363ffffffff1660e01b8152600401612d129291906154ff565b6040805180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d529190615888565b90506040518060800160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060020160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060030160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681525096506040518060600160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600701548152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600501548152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600601548152509550604051806101800160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561304d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130759190810190615905565b81526001600160a01b03808c166000908152600d602090815260408083208e845282528083206001015481516395d89b4160e01b815291519290950194909316926395d89b419260048083019391928290030181865afa1580156130dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131059190810190615905565b81526001600160a01b038b166000908152600c602090815260408083208d84528252909120805491909201919061313b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546131679061557c565b80156131b45780601f10613189576101008083540402835291602001916131b4565b820191906000526020600020905b81548152906001019060200180831161319757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060010180549190920191906131f39061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461321f9061557c565b801561326c5780601f106132415761010080835404028352916020019161326c565b820191906000526020600020905b81548152906001019060200180831161324f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060020180549190920191906132ab9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546132d79061557c565b80156133245780601f106132f957610100808354040283529160200191613324565b820191906000526020600020905b81548152906001019060200180831161330757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060030180549190920191906133639061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461338f9061557c565b80156133dc5780601f106133b1576101008083540402835291602001916133dc565b820191906000526020600020905b8154815290600101906020018083116133bf57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d84528252909120600401805491909201919061341b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546134479061557c565b80156134945780601f1061346957610100808354040283529160200191613494565b820191906000526020600020905b81548152906001019060200180831161347757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060050180549190920191906134d39061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546134ff9061557c565b801561354c5780601f106135215761010080835404028352916020019161354c565b820191906000526020600020905b81548152906001019060200180831161352f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d84528252909120600601805491909201919061358b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546135b79061557c565b80156136045780601f106135d957610100808354040283529160200191613604565b820191906000526020600020905b8154815290600101906020018083116135e757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060070180549190920191906136439061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461366f9061557c565b80156136bc5780601f10613691576101008083540402835291602001916136bc565b820191906000526020600020905b81548152906001019060200180831161369f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060080180549190920191906136fb9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546137279061557c565b80156137745780601f1061374957610100808354040283529160200191613774565b820191906000526020600020905b81548152906001019060200180831161375757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060090180549190920191906137b39061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546137df9061557c565b801561382c5780601f106138015761010080835404028352916020019161382c565b820191906000526020600020905b81548152906001019060200180831161380f57829003601f168201915b50505050508152509450868682878787879f509f509f509f509f509f509f50505050505050505050919395979092949650565b6002546001600160a01b0316331461387657600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6002546001600160a01b031633146138b157600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600901610fb084826155fc565b6060828210156139335760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e6765204753534950500000006044820152606401610f77565b6001600160a01b0384166000908152602160205260408120546139568585615700565b111561397b57506001600160a01b03841660009081526021602052604090205461397e565b50815b600061398a8585615700565b613995906001615713565b6001600160401b038111156139ac576139ac614cf0565b6040519080825280602002602001820160405280156139d5578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b038716600090815260126020908152604080832060219092528220549091908390613a1690600190615700565b613a209190615700565b815260200190815260200160002054828783613a3c9190615700565b81518110613a4c57613a4c6156bb565b602090810291909101015280613a61816156e7565b9150506139da565b6002546001600160a01b03163314613a8057600080fd5b600555565b6002546001600160a01b03163314613a9c57600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600701610fb084826155fc565b336000908152600460205260408120548190819060ff16613aec57600080fd5b5050506001600160a01b03919091166000908152600d60209081526040808320938352929052206008015460ff61010082048116926201000083048216929190911690565b606082600081841015613b845760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e676520474c534960281b6044820152606401610f77565b6025546000613b938787615700565b613b9e906001615713565b6001600160401b03811115613bb557613bb5614cf0565b604051908082528060200260200182016040528015613bde578160200160208202803683370190505b5090505b8584108015613bf057508183105b15613cab57600084815260146020908152604080832080546001600160a01b03168452600d8352818420600190910154845290915290206008015460ff1615613c995760146000600186602554613c479190615700565b613c519190615700565b815260200190815260200160002060020154818886613c709190615700565b81518110613c8057613c806156bb565b602090810291909101015283613c95816156e7565b9450505b82613ca3816156e7565b935050613be2565b9695505050505050565b3360009081526004602052604090205460ff16613cd157600080fd5b6001600160a01b0382166000908152601a602090815260408083208484528252808320543380855260138452828520602280865284872080548852918652848720849055601f548752601186529386209290925584529152805491613d35836156e7565b9091555050601f8054906000613d4a836156e7565b909155505060268054906000613d5f83615939565b91905055505050565b336000908152600d6020908152604080832084845290915290206008015460ff16613da55760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060060161169083826155fc565b3360009081526004602052604090205460ff16613de857600080fd5b6001600160a01b039182166000908152600d60209081526040808320938352929052206003018054919092166001600160a01b0319909116179055565b336000908152600d6020908152604080832084845290915290206008015460ff16613e625760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060080161169083826155fc565b613e91614c6d565b50604080516060810182526001600160a01b038085166000908152600d6020908152848220868352808252858320600181015485168652600281015485168387015292879052905260040154169181019190915292915050565b6002546001600160a01b03163314613f0257600080fd5b6064811115613f4c5760405162461bcd60e51b81526020600482015260166024820152756f7574206f662072616e6765206665652076616c756560501b6044820152606401610f77565b6001548103613f9a5760405162461bcd60e51b815260206004820152601a6024820152794e6577206665652069732073616d65206173204f6c642066656560301b6044820152606401610f77565b600155565b3360009081526004602052604081205460ff16613fbb57600080fd5b6001600160a01b0383166000908152600d6020908152604080832085845290915290206008015460ff166140015760405162461bcd60e51b8152600401610f7790615950565b6001600160a01b038084166000908152600d602090815260408083208684528252808320600201548151632698d70760e01b815291519416938492632698d70792600480820193918290030181865afa158015614062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140869190615974565b90506000826001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ec9190615974565b90508082101580156140fd57508115155b15614185576001600160a01b0386166000908152601a602090815260408083208884528252808320543380855260128452828520602180865284872080548852918652848720849055601e548752601086529386209290925584529152805491614166836156e7565b9091555050601e805490600061417b836156e7565b9190505550614215565b80821080614191575081155b15614215576001600160a01b0386166000908152601a602090815260408083208884528252808320543380855260138452828520602280865284872080548852918652848720849055601f5487526011865293862092909255845291528054916141fa836156e7565b9091555050601f805490600061420f836156e7565b91905055505b6026805490600061422583615939565b909155506001979650505050505050565b6001600160a01b038083166000908152600d6020908152604080832085845282528083206002015481516004815260248101835292830180516001600160e01b0316632698d70760e01b179052905192938493849392909116916142999161598d565b6000604051808303816000865af19150503d80600081146142d6576040519150601f19603f3d011682016040523d82523d6000602084013e6142db565b606091505b50915091508161432a5760405162461bcd60e51b815260206004820152601a60248201527919985a5b1959081d1bc818da1958dac8195d1a081c985a5cd95960321b6044820152606401610f77565b600081806020019051810190613cab9190615974565b33600090815260046020526040812054819060ff1661435e57600080fd5b50506001600160a01b039182166000908152600d6020908152604080832093835292905220600281015460049091015490821692911690565b336000908152600d6020908152604080832084845290915290206008015460ff166143d45760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060070161169083826155fc565b6002546001600160a01b0316331461441257600080fd5b6001600160a01b0381166144385760405162461bcd60e51b8152600401610f77906159a9565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d6020908152604080832084845290915290206008015460ff166144975760405162461bcd60e51b8152600401610f779061554e565b6000604051806101400160405280846000600a81106144b8576144b86156bb565b60200201518152602001846001600a81106144d5576144d56156bb565b60200201518152602001846002600a81106144f2576144f26156bb565b60200201518152602001846003600a811061450f5761450f6156bb565b60200201518152602001846004600a811061452c5761452c6156bb565b60200201518152602001846005600a8110614549576145496156bb565b60200201518152602001846006600a8110614566576145666156bb565b60200201518152602001846007600a8110614583576145836156bb565b60200201518152602001846008600a81106145a0576145a06156bb565b602090810291909101518252336000908152600c8252604080822087835283529020600901805492909101916145d59061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546146019061557c565b801561464e5780601f106146235761010080835404028352916020019161464e565b820191906000526020600020905b81548152906001019060200180831161463157829003601f168201915b505050919092525050336000908152600c60209081526040808320868452909152902081519192508291819061468490826155fc565b506020820151600182019061469990826155fc565b50604082015160028201906146ae90826155fc565b50606082015160038201906146c390826155fc565b50608082015160048201906146d890826155fc565b5060a082015160058201906146ed90826155fc565b5060c0820151600682019061470290826155fc565b5060e0820151600782019061471790826155fc565b50610100820151600882019061472d90826155fc565b50610120820151600982019061474390826155fc565b505050505050565b6002546001600160a01b0316331461476257600080fd5b60648111156147b05760405162461bcd60e51b815260206004820152601a602482015279756e695065722076616c7565206f7574736964652072616e676560301b6044820152606401610f77565b600755565b6060828210156148075760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e6765204746534950500000006044820152606401610f77565b6001600160a01b03841660009081526022602052604081205461482a8585615700565b111561484f57506001600160a01b038416600090815260226020526040902054614852565b50815b600061485e8585615700565b614869906001615713565b6001600160401b0381111561488057614880614cf0565b6040519080825280602002602001820160405280156148a9578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b0387166000908152601360209081526040808320602290925282205490919083906148ea90600190615700565b6148f49190615700565b8152602001908152602001600020548287836149109190615700565b81518110614920576149206156bb565b602090810291909101015280614935816156e7565b9150506148ae565b336000908152600d6020908152604080832084845290915290206008015460ff1661497a5760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060090161169083826155fc565b6002546001600160a01b031633146149b857600080fd5b6149c181614be0565b50565b6002546001600160a01b031633146149db57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b3360009081526004602052604081205460ff16614a1857600080fd5b506001600160a01b039182166000908152600d6020908152604080832093835292905220600301541690565b3360009081526004602052604081205460ff16614a6057600080fd5b6001600160a01b0383166000908152600d6020908152604080832085845290915290206008015460ff16614aa65760405162461bcd60e51b8152600401610f7790615950565b506001600160a01b03919091166000908152600d6020908152604080832093835292905220600801805460ff19169055600190565b6002546001600160a01b03163314614af257600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020610fb084826155fc565b336000908152600460205260408120548190819060ff16614b3f57600080fd5b5050506001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600282015460049092015490831693918316921690565b6002546001600160a01b03163314614b9857600080fd5b6001600160a01b038116614bbe5760405162461bcd60e51b8152600401610f77906159a9565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116614bf357600080fd5b6002546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b604051806101800160405280600c905b6060815260200190600190039081614cb95790505090565b604051806101400160405280600a906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715614d2957614d29614cf0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d5757614d57614cf0565b604052919050565b60006001600160401b03821115614d7857614d78614cf0565b50601f01601f191660200190565b600082601f830112614d9757600080fd5b8135614daa614da582614d5f565b614d2f565b818152846020838601011115614dbf57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b0381168114614df357600080fd5b919050565b600080600060608486031215614e0d57600080fd5b83356001600160401b03811115614e2357600080fd5b614e2f86828701614d86565b935050614e3e60208501614ddc565b9150604084013590509250925092565b60008060408385031215614e6157600080fd5b614e6a83614ddc565b946020939093013593505050565b600060208284031215614e8a57600080fd5b5035919050565b80151581146149c157600080fd5b60008060008060c08587031215614eb557600080fd5b614ebe85614ddc565b93506020808601359350614ed460408701614ddc565b925086607f870112614ee557600080fd5b604051606081016001600160401b0381118282101715614f0757614f07614cf0565b6040528060c0880189811115614f1c57600080fd5b606089015b81811015614f41578035614f3481614e91565b8352918401918401614f21565b5096999598509396509450505050565b600080600060608486031215614f6657600080fd5b614f6f84614ddc565b9250614e3e60208501614ddc565b6001600160a01b038d811682528c811660208301528b811660408301528a811660608301528916608082015260a0810188905260c0810187905260e0810186905284151561010082015283151561012082015282151561014082015261018081018215156101608301525b9d9c50505050505050505050505050565b6000806040838503121561500c57600080fd5b82356001600160401b0381111561502257600080fd5b61502e85828601614d86565b95602094909401359450505050565b60006020828403121561504f57600080fd5b61505882614ddc565b9392505050565b6000806040838503121561507257600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156150b95783518352928401929184019160010161509d565b50909695505050505050565b600082601f8301126150d657600080fd5b6150de614d06565b806101408401858111156150f157600080fd5b845b8181101561512d5780356001600160401b038111156151125760008081fd5b61511e88828901614d86565b855250602093840193016150f3565b509095945050505050565b600080600080600060a0868803121561515057600080fd5b85356001600160401b0381111561516657600080fd5b615172888289016150c5565b95505061518160208701614ddc565b935061518f60408701614ddc565b925061519d60608701614ddc565b949793965091946080013592915050565b6000806000606084860312156151c357600080fd5b6151cc84614ddc565b95602085013595506040909401359392505050565b60005b838110156151fc5781810151838201526020016151e4565b50506000910152565b6000815180845261521d8160208601602086016151e1565b601f01601f19169290920160200192915050565b60006101408083526152458184018e615205565b90508281036020840152615259818d615205565b9050828103604084015261526d818c615205565b90508281036060840152615281818b615205565b90508281036080840152615295818a615205565b905082810360a08401526152a98189615205565b905082810360c08401526152bd8188615205565b905082810360e08401526152d18187615205565b90508281036101008401526152e68186615205565b9050828103610120840152614fe88185615205565b6000806000806080858703121561531157600080fd5b84356001600160401b0381111561532757600080fd5b615333878288016150c5565b94505061534260208601614ddc565b925061535060408601614ddc565b9396929550929360600135925050565b8060005b6002811015610fb05781511515845260209384019390910190600101615364565b60008261018081018360005b600c81101561512d5783830387526153aa838351615205565b6020978801979093509190910190600101615391565b8060005b600a811015610fb05781518452602093840193909101906001016153c4565b8060005b6004811015610fb057815115158452602093840193909101906001016153e7565b6000610320828a835b60048110156154395781516001600160a01b0316835260209283019290910190600101615411565b505050608083018960005b6003811015615463578151835260209283019290910190600101615444565b50505061547360e0840189615360565b8061012084015261548681840188615385565b90506154966101408401876153c0565b6154a46102808401866153e3565b8281036103008401526154b78185615205565b9a9950505050505050505050565b60608101818360005b60038110156154f65781516001600160a01b03168352602092830192909101906001016154ce565b50505092915050565b6001600160a01b0392831681529116602082015260400190565b6000806040838503121561552c57600080fd5b82356001600160401b0381111561554257600080fd5b61502e858286016150c5565b6020808252601490820152731c1c995cd85b1948191bd95cdb9d08195e1a5cdd60621b604082015260600190565b600181811c9082168061559057607f821691505b6020821081036155b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561169057600081815260208120601f850160051c810160208610156155dd5750805b601f850160051c820191505b81811015614743578281556001016155e9565b81516001600160401b0381111561561557615615614cf0565b61562981615623845461557c565b846155b6565b602080601f83116001811461565e57600084156156465750858301515b600019600386901b1c1916600185901b178555614743565b600085815260208120601f198616915b8281101561568d5788860151825594840194600190910190840161566e565b50858210156156ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016156f9576156f96156d1565b5060010190565b8181038181111561190d5761190d6156d1565b8082018082111561190d5761190d6156d1565b600082601f83011261573757600080fd5b604051608081016001600160401b038111828210171561575957615759614cf0565b60405280608084018581111561576e57600080fd5b845b8181101561579157805161578381614e91565b835260209283019201615770565b509195945050505050565b600082601f8301126157ad57600080fd5b81516157bb614da582614d5f565b8181528460208386010111156157d057600080fd5b6157e18260208301602087016151e1565b949350505050565b60008060006101e084860312156157ff57600080fd5b84601f85011261580e57600080fd5b615816614d06565b8061014086018781111561582957600080fd5b865b8181101561584357805184526020938401930161582b565b508195506158518882615726565b6101c0880151909550925050506001600160401b0381111561587257600080fd5b61587e8682870161579c565b9150509250925092565b60006040828403121561589a57600080fd5b82601f8301126158a957600080fd5b604080519081016001600160401b03811182821017156158cb576158cb614cf0565b80604052508060408401858111156158e257600080fd5b845b818110156157915780516158f781614e91565b8352602092830192016158e4565b60006020828403121561591757600080fd5b81516001600160401b0381111561592d57600080fd5b6157e18482850161579c565b600081615948576159486156d1565b506000190190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b60006020828403121561598657600080fd5b5051919050565b6000825161599f8184602087016151e1565b9190910192915050565b6020808252601a90820152792732bb9020b232391031b0b73a103132903d32b9379030b2323960311b60408201526060019056fea2646970667358221220970f44635f1cf15f2a7323d0be0019f265acbd796af1afc79bbf2bd41f596ecc64736f6c63430008110033000000000000000000000000aec02f6d0b722274b6916db224c4ba3418284697
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106104355760003560e01c806303c5b30b1461043a578063044029791461045157806306e29712146104665780630778ec0a14610491578063086ae2dd146104bc5780630a095134146104e55780630b3ac4c5146105085780630bf915c51461051b5780630c94d397146105c85780631089fb68146105db57806312f2dd43146105ee57806313dd18c614610601578063150322c2146106145780631ada79a4146106345780631bd65cd21461065f57806325649eb514610698578063284def15146106b8578063332deab2146106c1578063338ce78f146106ea57806335a45c0e146106fd5780633ec7ab911461071d578063401e05a11461073057806341ef58ca146107435780634253fb1814610756578063455991361461079c57806346c96aac146107a557806347ce71ab146107b85780634cb8a6ae146107d8578063548c531c146107e1578063567e2d921461080157806356c833a61461080a5780635787b1421461081d57806358528aa51461083057806360b2aff3146108435780636188135c1461086c57806365553ccc1461087f578063715018a6146108a85780637a48fd78146108b05780637add991d146108c35780638027b4a2146108d6578063806d47d2146108df578063825240171461090a578063841046551461091d57806385b3ab2114610948578063880f40391461096e5780638cda91b5146109815780638d80b9e7146109ac5780638da5cb5b146109bf57806396fc379a146109d2578063979aecd3146109e557806397e95dd414610a4557806398140b5514610a585780639c8e8ef014610a9d5780639cca1eb914610ab05780639cebb8cf14610ad95780639dd7870a14610b0b5780639ec8f43614610b1e578063a42b45bf14610b31578063a46cbe8914610b3a578063a9e1a14a14610b63578063accef1fa14610bc1578063b40c2ad914610bc7578063b56a038a14610bf0578063b752809414610bf9578063b8547c2914610c0c578063b8956cd414610c1f578063ba806e7f14610c32578063bc59977514610c52578063c391010a14610c65578063cf25127314610c85578063d016696f14610c98578063d146244314610cb8578063d394925414610cd7578063d6b4441114610cea578063d98702c714610d0b578063dec379ff14610d1e578063e0141aa114610d31578063e087c44314610d44578063e11f2d1314610d67578063e591029914610d7a578063e8e35a1214610dbe578063ef8c687014610dd1578063efc7ba3b14610dda578063efcf1c9114610dfa578063f230297614610e0d578063f2d206dd14610e16578063f2fde38b14610e42578063f315df8614610e55578063f321015f14610e68578063f3d7443b14610e7b578063f42d985514610e8e578063f4b2865414610eae578063fb3e651614610ec1578063fc48736614610eca578063fd23df1914610f07575b600080fd5b6025545b6040519081526020015b60405180910390f35b61046461045f366004614df8565b610f1a565b005b600054610479906001600160a01b031681565b6040516001600160a01b039091168152602001610448565b61043e61049f366004614e4e565b600f60209081526000928352604080842090915290825290205481565b6104796104ca366004614e78565b6015602052600090815260409020546001600160a01b031681565b6104f86104f3366004614e9f565b610fb6565b6040519015158152602001610448565b6104f8610516366004614f51565b6115ce565b6105b0610529366004614e4e565b600d6020908152600092835260408084209091529082529020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b039788169896881697958616969486169590931693919290919060ff80821691610100810482169162010000820481169163010000009004168c565b6040516104489c9b9a99989796959493929190614f7d565b6104646105d6366004614ff9565b61162c565b600854610479906001600160a01b031681565b6104646105fc366004614ff9565b611695565b61046461060f366004614ff9565b6116f9565b61043e61062236600461503d565b60216020526000908152604090205481565b61043e610642366004614e4e565b602460209081526000928352604080842090915290825290205481565b61067261066d366004614e4e565b61175d565b60408051931515845291151560208401526001600160a01b031690820152606001610448565b6106ab6106a636600461505f565b6117c1565b6040516104489190615081565b61043e60075481565b61043e6106cf36600461503d565b6001600160a01b03166000908152601d602052604090205490565b6104f86106f8366004615138565b611913565b61043e61070b36600461503d565b601c6020526000908152604090205481565b61046461072b366004614e78565b611bb7565b6106ab61073e36600461505f565b611bd3565b6106ab6107513660046151ae565b611d1a565b610769610764366004614e4e565b611ea7565b604080516001600160a01b0395861681529385166020850152918416918301919091529091166060820152608001610448565b61043e600b5481565b600354610479906001600160a01b031681565b61043e6107c6366004614e78565b601b6020526000908152604090205481565b61043e60055481565b61043e6107ef366004614e78565b60106020526000908152604090205481565b61043e60065481565b610479610818366004614e4e565b611f18565b61046461082b36600461503d565b611f60565b61046461083e366004614ff9565b611fe5565b610479610851366004614e78565b6016602052600090815260409020546001600160a01b031681565b61046461087a366004614df8565b612049565b61089261088d366004614e4e565b612090565b6040516104489a99989796959493929190615231565b610464612637565b6104646108be366004614df8565b612698565b6106ab6108d13660046151ae565b6126df565b61043e60265481565b61043e6108ed366004614e4e565b601360209081526000928352604080842090915290825290205481565b6104f86109183660046152fb565b6128a4565b61043e61092b366004614e4e565b601260209081526000928352604080842090915290825290205481565b61095b610956366004614e78565b612b31565b6040516104489796959493929190615408565b61046461097c36600461503d565b61385f565b61043e61098f366004614e4e565b601a60209081526000928352604080842090915290825290205481565b6104646109ba366004614df8565b61389a565b600254610479906001600160a01b031681565b6106ab6109e03660046151ae565b6138e1565b610a266109f3366004614e4e565b6001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600790910154911691565b604080516001600160a01b039093168352602083019190915201610448565b610464610a53366004614e78565b613a69565b610479610a66366004614e4e565b6001600160a01b039182166000908152600d6020908152604080832093835292815282822060020154841682526019905220541690565b610464610aab366004614df8565b613a85565b610479610abe36600461503d565b6018602052600090815260409020546001600160a01b031681565b610aec610ae7366004614e4e565b613acc565b6040805193151584529115156020840152151590820152606001610448565b6106ab610b1936600461505f565b613b31565b610464610b2c366004614e4e565b613cb5565b61043e60095481565b610479610b4836600461503d565b6017602052600090815260409020546001600160a01b031681565b610b9c610b71366004614e78565b6014602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610448565b4261043e565b610479610bd536600461503d565b6019602052600090815260409020546001600160a01b031681565b61043e600a5481565b610464610c07366004614ff9565b613d68565b610464610c1a366004614f51565b613dcc565b610464610c2d366004614ff9565b613e25565b610c45610c40366004614e4e565b613e89565b60405161044891906154c5565b610464610c60366004614e78565b613eeb565b61043e610c7336600461503d565b60226020526000908152604090205481565b6104f8610c93366004614e4e565b613f9f565b61043e610ca636600461503d565b601d6020526000908152604090205481565b61043e610cc636600461503d565b602080526000908152604090205481565b61043e610ce5366004614e4e565b614236565b610cfd610cf8366004614e4e565b614340565b6040516104489291906154ff565b610464610d19366004614ff9565b614397565b610464610d2c36600461503d565b6143fb565b610464610d3f366004615519565b61445a565b6104f8610d5236600461503d565b60046020526000908152604090205460ff1681565b610464610d75366004614e78565b61474b565b610b9c610d88366004614e4e565b600e6020908152600092835260408084209091529082529020805460018201546002909201546001600160a01b03909116919083565b6106ab610dcc3660046151ae565b6147b5565b61043e601f5481565b61043e610de8366004614e78565b60116020526000908152604090205481565b610464610e08366004614ff9565b61493d565b61043e60255481565b610479610e2436600461503d565b6001600160a01b039081166000908152601960205260409020541690565b610464610e5036600461503d565b6149a1565b610464610e6336600461503d565b6149c4565b610479610e76366004614e4e565b6149fc565b6104f8610e89366004614e4e565b614a44565b61043e610e9c36600461503d565b60236020526000908152604090205481565b610464610ebc366004614df8565b614adb565b61043e601e5481565b610edd610ed8366004614e4e565b614b1f565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610448565b610464610f1536600461503d565b614b81565b6002546001600160a01b03163314610f3157600080fd5b6001600160a01b0382166000908152600d6020908152604080832084845290915290206008015460ff16610f805760405162461bcd60e51b8152600401610f779061554e565b60405180910390fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600201610fb084826155fc565b50505050565b3360009081526004602052604081205460ff16610fd257600080fd5b60408051610180810182526001600160a01b0385811680835290881660208084019190915260008385018190526060840181905260808401819052918252601d81529281205460a08301524260c083015260e08201879052600161010083015284511515610120830152918401511515610140820152610160810184600260200201511515815250905060006040518060600160405280866001600160a01b03168152602001601d6000886001600160a01b03166001600160a01b03168152602001908152602001600020548152602001602554815250905081600d6000876001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000896001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c0820151816006015560e082015181600701556101008201518160080160006101000a81548160ff0219169083151502179055506101208201518160080160016101000a81548160ff0219169083151502179055506101408201518160080160026101000a81548160ff0219169083151502179055506101608201518160080160036101000a81548160ff02191690831515021790555090505080600e6000336001600160a01b03166001600160a01b03168152602001908152602001600020600060206000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151816001015560408201518160020155905050602554600f6000336001600160a01b03166001600160a01b03168152602001908152602001600020600060206000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020819055508060146000602554815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010155604082015181600201559050503360156000602554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460166000602554815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601d6000866001600160a01b03166001600160a01b0316815260200190815260200160002054601b6000602554815260200190815260200160002081905550602554601a6000876001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000896001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002081905550602554601c6000896001600160a01b03166001600160a01b03168152602001908152602001600020819055506025600081548092919061153d906156e7565b909155505060268054906000611552836156e7565b90915550506001600160a01b03878116600090815260176020908152604080832080546001600160a01b031916948a169485179055928252601d905290812080549161159d836156e7565b909155505033600090815260208052604081208054916115bc836156e7565b90915550600198975050505050505050565b3360009081526004602052604081205460ff166115ea57600080fd5b506001600160a01b039182166000908152600d602090815260408083209383529290522060040180546001600160a01b03191692909116919091179055600190565b336000908152600d6020908152604080832084845290915290206008015460ff166116695760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060050161169083826155fc565b505050565b336000908152600d6020908152604080832084845290915290206008015460ff166116d25760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060040161169083826155fc565b336000908152600d6020908152604080832084845290915290206008015460ff166117365760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060030161169083826155fc565b336000908152600460205260408120548190819060ff1661177d57600080fd5b5050506001600160a01b039182166000908152600d6020908152604080832093835292905220600881015460039091015460ff808316946201000090930416921690565b6060828210156118115760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e6765204753534960281b6044820152606401610f77565b601e546000906118218585615700565b1061182f5750601e5461183d565b61183a836001615713565b90505b60006118498585615700565b611854906001615713565b6001600160401b0381111561186b5761186b614cf0565b604051908082528060200260200182016040528015611894578160200160208202803683370190505b509050845b828110156119085760106000826001601e546118b59190615700565b6118bf9190615700565b8152602001908152602001600020548287836118db9190615700565b815181106118eb576118eb6156bb565b602090810291909101015280611900816156e7565b915050611899565b509150505b92915050565b3360009081526004602052604081205460ff1661192f57600080fd5b6001600160a01b038381166000818152600d6020908152604080832087845282528083206002810180548c88166001600160a01b0319918216811790925560039092018054978c16978316979097179096559483526023825280832087905560188252808320805486169094179093556019815282822080549094163317909355815161014081019092528851825291810188600160200201518152602001886002600a81106119e1576119e16156bb565b60200201518152602001886003600a81106119fe576119fe6156bb565b60200201518152602001886004600a8110611a1b57611a1b6156bb565b60200201518152602001886005600a8110611a3857611a386156bb565b60200201518152602001886006600a8110611a5557611a556156bb565b60200201518152602001886007600a8110611a7257611a726156bb565b60200201518152602001886008600a8110611a8f57611a8f6156bb565b60209081029190910151825260408051808201825260018152600160fd1b81840152928201929092526001600160a01b0387166000908152600c825282812087825290915220815191925082918190611ae890826155fc565b5060208201516001820190611afd90826155fc565b5060408201516002820190611b1290826155fc565b5060608201516003820190611b2790826155fc565b5060808201516004820190611b3c90826155fc565b5060a08201516005820190611b5190826155fc565b5060c08201516006820190611b6690826155fc565b5060e08201516007820190611b7b90826155fc565b506101008201516008820190611b9190826155fc565b506101208201516009820190611ba790826155fc565b5060019998505050505050505050565b6002546001600160a01b03163314611bce57600080fd5b600655565b606082821015611c235760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e6765204746534960281b6044820152606401610f77565b601f54600090611c338585615700565b10611c415750601f54611c4f565b611c4c836001615713565b90505b6000611c5b8585615700565b611c66906001615713565b6001600160401b03811115611c7d57611c7d614cf0565b604051908082528060200260200182016040528015611ca6578160200160208202803683370190505b509050845b828110156119085760116000826001601f54611cc79190615700565b611cd19190615700565b815260200190815260200160002054828783611ced9190615700565b81518110611cfd57611cfd6156bb565b602090810291909101015280611d12816156e7565b915050611cab565b606082821015611d6b5760405162461bcd60e51b815260206004820152601c60248201527b0696e7661696420697465726174696f6e2072616e67652047534950560241b6044820152606401610f77565b6001600160a01b0384166000908152602080526040812054611d8d8585615700565b1115611db157506001600160a01b0384166000908152602080526040902054611db4565b50815b6000611dc08585615700565b611dcb906001615713565b6001600160401b03811115611de257611de2614cf0565b604051908082528060200260200182016040528015611e0b578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b0387166000908152600f602090815260408083209180528220549091908390611e4a90600190615700565b611e549190615700565b815260200190815260200160002054828783611e709190615700565b81518110611e8057611e806156bb565b602090810291909101015280611e95816156e7565b915050611e10565b5095945050505050565b3360009081526004602052604081205481908190819060ff16611ec957600080fd5b505050506001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600282015460048301546003909301549184169490841693928316929190911690565b3360009081526004602052604081205460ff16611f3457600080fd5b506001600160a01b039182166000908152600d6020908152604080832093835292905220600201541690565b6002546001600160a01b03163314611f7757600080fd5b6001600160a01b038116611fc35760405162461bcd60e51b8152602060048201526013602482015272616464722063616e6e6f74206265207a65726f60681b6044820152606401610f77565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d6020908152604080832084845290915290206008015460ff166120225760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060020161169083826155fc565b6002546001600160a01b0316331461206057600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600101610fb084826155fc565b600c6020908152600092835260408084209091529082529020805481906120b69061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546120e29061557c565b801561212f5780601f106121045761010080835404028352916020019161212f565b820191906000526020600020905b81548152906001019060200180831161211257829003601f168201915b5050505050908060010180546121449061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546121709061557c565b80156121bd5780601f10612192576101008083540402835291602001916121bd565b820191906000526020600020905b8154815290600101906020018083116121a057829003601f168201915b5050505050908060020180546121d29061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546121fe9061557c565b801561224b5780601f106122205761010080835404028352916020019161224b565b820191906000526020600020905b81548152906001019060200180831161222e57829003601f168201915b5050505050908060030180546122609061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461228c9061557c565b80156122d95780601f106122ae576101008083540402835291602001916122d9565b820191906000526020600020905b8154815290600101906020018083116122bc57829003601f168201915b5050505050908060040180546122ee9061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461231a9061557c565b80156123675780601f1061233c57610100808354040283529160200191612367565b820191906000526020600020905b81548152906001019060200180831161234a57829003601f168201915b50505050509080600501805461237c9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546123a89061557c565b80156123f55780601f106123ca576101008083540402835291602001916123f5565b820191906000526020600020905b8154815290600101906020018083116123d857829003601f168201915b50505050509080600601805461240a9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546124369061557c565b80156124835780601f1061245857610100808354040283529160200191612483565b820191906000526020600020905b81548152906001019060200180831161246657829003601f168201915b5050505050908060070180546124989061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546124c49061557c565b80156125115780601f106124e657610100808354040283529160200191612511565b820191906000526020600020905b8154815290600101906020018083116124f457829003601f168201915b5050505050908060080180546125269061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546125529061557c565b801561259f5780601f106125745761010080835404028352916020019161259f565b820191906000526020600020905b81548152906001019060200180831161258257829003601f168201915b5050505050908060090180546125b49061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546125e09061557c565b801561262d5780601f106126025761010080835404028352916020019161262d565b820191906000526020600020905b81548152906001019060200180831161261057829003601f168201915b505050505090508a565b6002546001600160a01b0316331461264e57600080fd5b6002546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600280546001600160a01b0319169055565b6002546001600160a01b031633146126af57600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600301610fb084826155fc565b6060826000818410156127345760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e676520474c534950500000006044820152606401610f77565b6001600160a01b0386166000908152602080526040812054906127578787615700565b612762906001615713565b6001600160401b0381111561277957612779614cf0565b6040519080825280602002602001820160405280156127a2578160200160208202803683370190505b5090505b85841080156127b457508183105b15612899576001600160a01b038089166000908152600e60209081526040808320888452825280832080549094168352600d82528083206001909401548352929052206008015460ff1615612887576001600160a01b0388166000908152600e60209081526040808320918052822054909190869061283590600190615700565b61283f9190615700565b81526020019081526020016000206002015481888661285e9190615700565b8151811061286e5761286e6156bb565b602090810291909101015283612883816156e7565b9450505b82612891816156e7565b9350506127a6565b979650505050505050565b3360009081526004602052604081205460ff166128c057600080fd5b6001600160a01b038381166000818152600d6020908152604080832087845282528083206002018054958a166001600160a01b0319968716811790915583526023825280832087905560188252808320805486169094179093556019815282822080549094163317909355815161014081019092528751825291810187600160200201518152602001876002600a811061295c5761295c6156bb565b60200201518152602001876003600a8110612979576129796156bb565b60200201518152602001876004600a8110612996576129966156bb565b60200201518152602001876005600a81106129b3576129b36156bb565b60200201518152602001876006600a81106129d0576129d06156bb565b60200201518152602001876007600a81106129ed576129ed6156bb565b60200201518152602001876008600a8110612a0a57612a0a6156bb565b60209081029190910151825260408051808201825260018152600160fd1b81840152928201929092526001600160a01b0387166000908152600c825282812087825290915220815191925082918190612a6390826155fc565b5060208201516001820190612a7890826155fc565b5060408201516002820190612a8d90826155fc565b5060608201516003820190612aa290826155fc565b5060808201516004820190612ab790826155fc565b5060a08201516005820190612acc90826155fc565b5060c08201516006820190612ae190826155fc565b5060e08201516007820190612af690826155fc565b506101008201516008820190612b0c90826155fc565b506101208201516009820190612b2290826155fc565b50600198975050505050505050565b612b39614c4f565b612b41614c6d565b612b49614c8b565b612b51614ca9565b612b59614cd1565b612b61614c4f565b600087815260146020526040902080546001909101546060916001600160a01b031690612b8c614c4f565b612b94614c6d565b612b9c614ca9565b6001600160a01b038086166000908152600d60209081526040808320888452909152808220600201548151630c2c899560e31b8152915192938493849392909116916361644ca891600480830192869291908290030181865afa158015612c07573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c2f91908101906157e9565b9250925092506000600860009054906101000a90046001600160a01b03166001600160a01b031663678db83c600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b0316600d60008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002060000160009054906101000a90046001600160a01b03166040518363ffffffff1660e01b8152600401612d129291906154ff565b6040805180830381865afa158015612d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d529190615888565b90506040518060800160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060000160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060020160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060030160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681525096506040518060600160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600701548152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600501548152602001600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b8152602001908152602001600020600601548152509550604051806101800160405280600d60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801561304d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130759190810190615905565b81526001600160a01b03808c166000908152600d602090815260408083208e845282528083206001015481516395d89b4160e01b815291519290950194909316926395d89b419260048083019391928290030181865afa1580156130dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131059190810190615905565b81526001600160a01b038b166000908152600c602090815260408083208d84528252909120805491909201919061313b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546131679061557c565b80156131b45780601f10613189576101008083540402835291602001916131b4565b820191906000526020600020905b81548152906001019060200180831161319757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060010180549190920191906131f39061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461321f9061557c565b801561326c5780601f106132415761010080835404028352916020019161326c565b820191906000526020600020905b81548152906001019060200180831161324f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060020180549190920191906132ab9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546132d79061557c565b80156133245780601f106132f957610100808354040283529160200191613324565b820191906000526020600020905b81548152906001019060200180831161330757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060030180549190920191906133639061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461338f9061557c565b80156133dc5780601f106133b1576101008083540402835291602001916133dc565b820191906000526020600020905b8154815290600101906020018083116133bf57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d84528252909120600401805491909201919061341b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546134479061557c565b80156134945780601f1061346957610100808354040283529160200191613494565b820191906000526020600020905b81548152906001019060200180831161347757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060050180549190920191906134d39061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546134ff9061557c565b801561354c5780601f106135215761010080835404028352916020019161354c565b820191906000526020600020905b81548152906001019060200180831161352f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d84528252909120600601805491909201919061358b9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546135b79061557c565b80156136045780601f106135d957610100808354040283529160200191613604565b820191906000526020600020905b8154815290600101906020018083116135e757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060070180549190920191906136439061557c565b80601f016020809104026020016040519081016040528092919081815260200182805461366f9061557c565b80156136bc5780601f10613691576101008083540402835291602001916136bc565b820191906000526020600020905b81548152906001019060200180831161369f57829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060080180549190920191906136fb9061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546137279061557c565b80156137745780601f1061374957610100808354040283529160200191613774565b820191906000526020600020905b81548152906001019060200180831161375757829003601f168201915b50505091835250506001600160a01b038b166000908152600c602090815260408083208d8452825290912060090180549190920191906137b39061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546137df9061557c565b801561382c5780601f106138015761010080835404028352916020019161382c565b820191906000526020600020905b81548152906001019060200180831161380f57829003601f168201915b50505050508152509450868682878787879f509f509f509f509f509f509f50505050505050505050919395979092949650565b6002546001600160a01b0316331461387657600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6002546001600160a01b031633146138b157600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600901610fb084826155fc565b6060828210156139335760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e6765204753534950500000006044820152606401610f77565b6001600160a01b0384166000908152602160205260408120546139568585615700565b111561397b57506001600160a01b03841660009081526021602052604090205461397e565b50815b600061398a8585615700565b613995906001615713565b6001600160401b038111156139ac576139ac614cf0565b6040519080825280602002602001820160405280156139d5578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b038716600090815260126020908152604080832060219092528220549091908390613a1690600190615700565b613a209190615700565b815260200190815260200160002054828783613a3c9190615700565b81518110613a4c57613a4c6156bb565b602090810291909101015280613a61816156e7565b9150506139da565b6002546001600160a01b03163314613a8057600080fd5b600555565b6002546001600160a01b03163314613a9c57600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020600701610fb084826155fc565b336000908152600460205260408120548190819060ff16613aec57600080fd5b5050506001600160a01b03919091166000908152600d60209081526040808320938352929052206008015460ff61010082048116926201000083048216929190911690565b606082600081841015613b845760405162461bcd60e51b815260206004820152601b60248201527a696e7661696420697465726174696f6e2072616e676520474c534960281b6044820152606401610f77565b6025546000613b938787615700565b613b9e906001615713565b6001600160401b03811115613bb557613bb5614cf0565b604051908082528060200260200182016040528015613bde578160200160208202803683370190505b5090505b8584108015613bf057508183105b15613cab57600084815260146020908152604080832080546001600160a01b03168452600d8352818420600190910154845290915290206008015460ff1615613c995760146000600186602554613c479190615700565b613c519190615700565b815260200190815260200160002060020154818886613c709190615700565b81518110613c8057613c806156bb565b602090810291909101015283613c95816156e7565b9450505b82613ca3816156e7565b935050613be2565b9695505050505050565b3360009081526004602052604090205460ff16613cd157600080fd5b6001600160a01b0382166000908152601a602090815260408083208484528252808320543380855260138452828520602280865284872080548852918652848720849055601f548752601186529386209290925584529152805491613d35836156e7565b9091555050601f8054906000613d4a836156e7565b909155505060268054906000613d5f83615939565b91905055505050565b336000908152600d6020908152604080832084845290915290206008015460ff16613da55760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060060161169083826155fc565b3360009081526004602052604090205460ff16613de857600080fd5b6001600160a01b039182166000908152600d60209081526040808320938352929052206003018054919092166001600160a01b0319909116179055565b336000908152600d6020908152604080832084845290915290206008015460ff16613e625760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060080161169083826155fc565b613e91614c6d565b50604080516060810182526001600160a01b038085166000908152600d6020908152848220868352808252858320600181015485168652600281015485168387015292879052905260040154169181019190915292915050565b6002546001600160a01b03163314613f0257600080fd5b6064811115613f4c5760405162461bcd60e51b81526020600482015260166024820152756f7574206f662072616e6765206665652076616c756560501b6044820152606401610f77565b6001548103613f9a5760405162461bcd60e51b815260206004820152601a6024820152794e6577206665652069732073616d65206173204f6c642066656560301b6044820152606401610f77565b600155565b3360009081526004602052604081205460ff16613fbb57600080fd5b6001600160a01b0383166000908152600d6020908152604080832085845290915290206008015460ff166140015760405162461bcd60e51b8152600401610f7790615950565b6001600160a01b038084166000908152600d602090815260408083208684528252808320600201548151632698d70760e01b815291519416938492632698d70792600480820193918290030181865afa158015614062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140869190615974565b90506000826001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ec9190615974565b90508082101580156140fd57508115155b15614185576001600160a01b0386166000908152601a602090815260408083208884528252808320543380855260128452828520602180865284872080548852918652848720849055601e548752601086529386209290925584529152805491614166836156e7565b9091555050601e805490600061417b836156e7565b9190505550614215565b80821080614191575081155b15614215576001600160a01b0386166000908152601a602090815260408083208884528252808320543380855260138452828520602280865284872080548852918652848720849055601f5487526011865293862092909255845291528054916141fa836156e7565b9091555050601f805490600061420f836156e7565b91905055505b6026805490600061422583615939565b909155506001979650505050505050565b6001600160a01b038083166000908152600d6020908152604080832085845282528083206002015481516004815260248101835292830180516001600160e01b0316632698d70760e01b179052905192938493849392909116916142999161598d565b6000604051808303816000865af19150503d80600081146142d6576040519150601f19603f3d011682016040523d82523d6000602084013e6142db565b606091505b50915091508161432a5760405162461bcd60e51b815260206004820152601a60248201527919985a5b1959081d1bc818da1958dac8195d1a081c985a5cd95960321b6044820152606401610f77565b600081806020019051810190613cab9190615974565b33600090815260046020526040812054819060ff1661435e57600080fd5b50506001600160a01b039182166000908152600d6020908152604080832093835292905220600281015460049091015490821692911690565b336000908152600d6020908152604080832084845290915290206008015460ff166143d45760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060070161169083826155fc565b6002546001600160a01b0316331461441257600080fd5b6001600160a01b0381166144385760405162461bcd60e51b8152600401610f77906159a9565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600d6020908152604080832084845290915290206008015460ff166144975760405162461bcd60e51b8152600401610f779061554e565b6000604051806101400160405280846000600a81106144b8576144b86156bb565b60200201518152602001846001600a81106144d5576144d56156bb565b60200201518152602001846002600a81106144f2576144f26156bb565b60200201518152602001846003600a811061450f5761450f6156bb565b60200201518152602001846004600a811061452c5761452c6156bb565b60200201518152602001846005600a8110614549576145496156bb565b60200201518152602001846006600a8110614566576145666156bb565b60200201518152602001846007600a8110614583576145836156bb565b60200201518152602001846008600a81106145a0576145a06156bb565b602090810291909101518252336000908152600c8252604080822087835283529020600901805492909101916145d59061557c565b80601f01602080910402602001604051908101604052809291908181526020018280546146019061557c565b801561464e5780601f106146235761010080835404028352916020019161464e565b820191906000526020600020905b81548152906001019060200180831161463157829003601f168201915b505050919092525050336000908152600c60209081526040808320868452909152902081519192508291819061468490826155fc565b506020820151600182019061469990826155fc565b50604082015160028201906146ae90826155fc565b50606082015160038201906146c390826155fc565b50608082015160048201906146d890826155fc565b5060a082015160058201906146ed90826155fc565b5060c0820151600682019061470290826155fc565b5060e0820151600782019061471790826155fc565b50610100820151600882019061472d90826155fc565b50610120820151600982019061474390826155fc565b505050505050565b6002546001600160a01b0316331461476257600080fd5b60648111156147b05760405162461bcd60e51b815260206004820152601a602482015279756e695065722076616c7565206f7574736964652072616e676560301b6044820152606401610f77565b600755565b6060828210156148075760405162461bcd60e51b815260206004820152601d60248201527f696e7661696420697465726174696f6e2072616e6765204746534950500000006044820152606401610f77565b6001600160a01b03841660009081526022602052604081205461482a8585615700565b111561484f57506001600160a01b038416600090815260226020526040902054614852565b50815b600061485e8585615700565b614869906001615713565b6001600160401b0381111561488057614880614cf0565b6040519080825280602002602001820160405280156148a9578160200160208202803683370190505b509050845b82811015611e9d576001600160a01b0387166000908152601360209081526040808320602290925282205490919083906148ea90600190615700565b6148f49190615700565b8152602001908152602001600020548287836149109190615700565b81518110614920576149206156bb565b602090810291909101015280614935816156e7565b9150506148ae565b336000908152600d6020908152604080832084845290915290206008015460ff1661497a5760405162461bcd60e51b8152600401610f779061554e565b336000908152600c60209081526040808320848452909152902060090161169083826155fc565b6002546001600160a01b031633146149b857600080fd5b6149c181614be0565b50565b6002546001600160a01b031633146149db57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b3360009081526004602052604081205460ff16614a1857600080fd5b506001600160a01b039182166000908152600d6020908152604080832093835292905220600301541690565b3360009081526004602052604081205460ff16614a6057600080fd5b6001600160a01b0383166000908152600d6020908152604080832085845290915290206008015460ff16614aa65760405162461bcd60e51b8152600401610f7790615950565b506001600160a01b03919091166000908152600d6020908152604080832093835292905220600801805460ff19169055600190565b6002546001600160a01b03163314614af257600080fd5b6001600160a01b0382166000908152600c602090815260408083208484529091529020610fb084826155fc565b336000908152600460205260408120548190819060ff16614b3f57600080fd5b5050506001600160a01b039182166000908152600d60209081526040808320938352929052206001810154600282015460049092015490831693918316921690565b6002546001600160a01b03163314614b9857600080fd5b6001600160a01b038116614bbe5760405162461bcd60e51b8152600401610f77906159a9565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116614bf357600080fd5b6002546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b604051806101800160405280600c905b6060815260200190600190039081614cb95790505090565b604051806101400160405280600a906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715614d2957614d29614cf0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d5757614d57614cf0565b604052919050565b60006001600160401b03821115614d7857614d78614cf0565b50601f01601f191660200190565b600082601f830112614d9757600080fd5b8135614daa614da582614d5f565b614d2f565b818152846020838601011115614dbf57600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160a01b0381168114614df357600080fd5b919050565b600080600060608486031215614e0d57600080fd5b83356001600160401b03811115614e2357600080fd5b614e2f86828701614d86565b935050614e3e60208501614ddc565b9150604084013590509250925092565b60008060408385031215614e6157600080fd5b614e6a83614ddc565b946020939093013593505050565b600060208284031215614e8a57600080fd5b5035919050565b80151581146149c157600080fd5b60008060008060c08587031215614eb557600080fd5b614ebe85614ddc565b93506020808601359350614ed460408701614ddc565b925086607f870112614ee557600080fd5b604051606081016001600160401b0381118282101715614f0757614f07614cf0565b6040528060c0880189811115614f1c57600080fd5b606089015b81811015614f41578035614f3481614e91565b8352918401918401614f21565b5096999598509396509450505050565b600080600060608486031215614f6657600080fd5b614f6f84614ddc565b9250614e3e60208501614ddc565b6001600160a01b038d811682528c811660208301528b811660408301528a811660608301528916608082015260a0810188905260c0810187905260e0810186905284151561010082015283151561012082015282151561014082015261018081018215156101608301525b9d9c50505050505050505050505050565b6000806040838503121561500c57600080fd5b82356001600160401b0381111561502257600080fd5b61502e85828601614d86565b95602094909401359450505050565b60006020828403121561504f57600080fd5b61505882614ddc565b9392505050565b6000806040838503121561507257600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156150b95783518352928401929184019160010161509d565b50909695505050505050565b600082601f8301126150d657600080fd5b6150de614d06565b806101408401858111156150f157600080fd5b845b8181101561512d5780356001600160401b038111156151125760008081fd5b61511e88828901614d86565b855250602093840193016150f3565b509095945050505050565b600080600080600060a0868803121561515057600080fd5b85356001600160401b0381111561516657600080fd5b615172888289016150c5565b95505061518160208701614ddc565b935061518f60408701614ddc565b925061519d60608701614ddc565b949793965091946080013592915050565b6000806000606084860312156151c357600080fd5b6151cc84614ddc565b95602085013595506040909401359392505050565b60005b838110156151fc5781810151838201526020016151e4565b50506000910152565b6000815180845261521d8160208601602086016151e1565b601f01601f19169290920160200192915050565b60006101408083526152458184018e615205565b90508281036020840152615259818d615205565b9050828103604084015261526d818c615205565b90508281036060840152615281818b615205565b90508281036080840152615295818a615205565b905082810360a08401526152a98189615205565b905082810360c08401526152bd8188615205565b905082810360e08401526152d18187615205565b90508281036101008401526152e68186615205565b9050828103610120840152614fe88185615205565b6000806000806080858703121561531157600080fd5b84356001600160401b0381111561532757600080fd5b615333878288016150c5565b94505061534260208601614ddc565b925061535060408601614ddc565b9396929550929360600135925050565b8060005b6002811015610fb05781511515845260209384019390910190600101615364565b60008261018081018360005b600c81101561512d5783830387526153aa838351615205565b6020978801979093509190910190600101615391565b8060005b600a811015610fb05781518452602093840193909101906001016153c4565b8060005b6004811015610fb057815115158452602093840193909101906001016153e7565b6000610320828a835b60048110156154395781516001600160a01b0316835260209283019290910190600101615411565b505050608083018960005b6003811015615463578151835260209283019290910190600101615444565b50505061547360e0840189615360565b8061012084015261548681840188615385565b90506154966101408401876153c0565b6154a46102808401866153e3565b8281036103008401526154b78185615205565b9a9950505050505050505050565b60608101818360005b60038110156154f65781516001600160a01b03168352602092830192909101906001016154ce565b50505092915050565b6001600160a01b0392831681529116602082015260400190565b6000806040838503121561552c57600080fd5b82356001600160401b0381111561554257600080fd5b61502e858286016150c5565b6020808252601490820152731c1c995cd85b1948191bd95cdb9d08195e1a5cdd60621b604082015260600190565b600181811c9082168061559057607f821691505b6020821081036155b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561169057600081815260208120601f850160051c810160208610156155dd5750805b601f850160051c820191505b81811015614743578281556001016155e9565b81516001600160401b0381111561561557615615614cf0565b61562981615623845461557c565b846155b6565b602080601f83116001811461565e57600084156156465750858301515b600019600386901b1c1916600185901b178555614743565b600085815260208120601f198616915b8281101561568d5788860151825594840194600190910190840161566e565b50858210156156ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016156f9576156f96156d1565b5060010190565b8181038181111561190d5761190d6156d1565b8082018082111561190d5761190d6156d1565b600082601f83011261573757600080fd5b604051608081016001600160401b038111828210171561575957615759614cf0565b60405280608084018581111561576e57600080fd5b845b8181101561579157805161578381614e91565b835260209283019201615770565b509195945050505050565b600082601f8301126157ad57600080fd5b81516157bb614da582614d5f565b8181528460208386010111156157d057600080fd5b6157e18260208301602087016151e1565b949350505050565b60008060006101e084860312156157ff57600080fd5b84601f85011261580e57600080fd5b615816614d06565b8061014086018781111561582957600080fd5b865b8181101561584357805184526020938401930161582b565b508195506158518882615726565b6101c0880151909550925050506001600160401b0381111561587257600080fd5b61587e8682870161579c565b9150509250925092565b60006040828403121561589a57600080fd5b82601f8301126158a957600080fd5b604080519081016001600160401b03811182821017156158cb576158cb614cf0565b80604052508060408401858111156158e257600080fd5b845b818110156157915780516158f781614e91565b8352602092830192016158e4565b60006020828403121561591757600080fd5b81516001600160401b0381111561592d57600080fd5b6157e18482850161579c565b600081615948576159486156d1565b506000190190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b60006020828403121561598657600080fd5b5051919050565b6000825161599f8184602087016151e1565b9190910192915050565b6020808252601a90820152792732bb9020b232391031b0b73a103132903d32b9379030b2323960311b60408201526060019056fea2646970667358221220970f44635f1cf15f2a7323d0be0019f265acbd796af1afc79bbf2bd41f596ecc64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000aec02f6d0b722274b6916db224c4ba3418284697
-----Decoded View---------------
Arg [0] : _auditKycContract (address): 0xAEC02F6D0b722274b6916dB224c4bA3418284697
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000aec02f6d0b722274b6916db224c4ba3418284697
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.