@alpsfinance/core
Version:
This is the official Alps Finance smart contract repository.
618 lines • 1.15 MB
JSON
{
"contractName": "Presale",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{
"internalType": "address payable",
"name": "_presaleReceiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "_endingTime",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "presaleAmountOverdemand",
"type": "error"
},
{
"inputs": [],
"name": "presaleEndingTimeInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleMaximumPresaleAmountInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleMimumumUSDPurchaseInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleNativeTokenPaymentNotSufficient",
"type": "error"
},
{
"inputs": [],
"name": "presaleNonZeroAddressInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleRoundClosed",
"type": "error"
},
{
"inputs": [],
"name": "presaleStartingTimeInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleTokenNotAvailable",
"type": "error"
},
{
"inputs": [],
"name": "presaleUSDPriceInvalid",
"type": "error"
},
{
"inputs": [],
"name": "presaleUSDPurchaseNotSufficient",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "endingTime",
"type": "uint256"
}
],
"name": "PresaleEndingTimeUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "tokenAvailability",
"type": "bool"
},
{
"indexed": false,
"internalType": "address",
"name": "aggregatorAddress",
"type": "address"
}
],
"name": "PresalePaymentTokenUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "receiverAddress",
"type": "address"
}
],
"name": "PresaleReceiverUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "presaleRound",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startingTime",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "usdPrice",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "minimumUSDPurchase",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "maximumPresaleAmount",
"type": "uint256"
}
],
"name": "PresaleRoundUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "tokenAddress",
"type": "address"
}
],
"name": "PresaleTokenUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "paymentTokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "paymentTokenamount",
"type": "uint256"
}
],
"name": "TokenPresold",
"type": "event"
},
{
"inputs": [],
"name": "endingTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "presaleAmountByRoundMapping",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "presaleDetailsMapping",
"outputs": [
{
"internalType": "uint256",
"name": "startingTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "usdPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumUSDPurchase",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maximumPresaleAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "presalePaymentTokenMapping",
"outputs": [
{
"internalType": "bool",
"name": "available",
"type": "bool"
},
{
"internalType": "address",
"name": "aggregatorAddress",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "presaleReceiver",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "tokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "totalPresaleRound",
"outputs": [
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getTotalPresaleRound",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_presaleRound",
"type": "uint256"
}
],
"name": "getPresaleAmountByRound",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getTotalPresaleAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getCurrentPresaleRound",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "getCurrentPresaleDetails",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_paymentTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "presaleTokens",
"outputs": [],
"stateMutability": "payable",
"type": "function",
"payable": true
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_newPresaleReceiver",
"type": "address"
}
],
"name": "setPresaleReceiver",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newTokenAddress",
"type": "address"
}
],
"name": "setPresaleTokenAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{
"internalType": "bool",
"name": "_tokenAvailability",
"type": "bool"
},
{
"internalType": "address",
"name": "_aggregatorAddress",
"type": "address"
}
],
"name": "setPresalePaymentToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newEndingTime",
"type": "uint256"
}
],
"name": "setEndingTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_presaleRound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startingTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_usdPrice",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_minimumUSDPurchase",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maximumPresaleAmount",
"type": "uint256"
}
],
"name": "setPresaleRound",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_presaleReceiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_endingTime\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"presaleAmountOverdemand\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleEndingTimeInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleMaximumPresaleAmountInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleMimumumUSDPurchaseInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleNativeTokenPaymentNotSufficient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleNonZeroAddressInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleRoundClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleStartingTimeInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleTokenNotAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleUSDPriceInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"presaleUSDPurchaseNotSufficient\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endingTime\",\"type\":\"uint256\"}],\"name\":\"PresaleEndingTimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"tokenAvailability\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"aggregatorAddress\",\"type\":\"address\"}],\"name\":\"PresalePaymentTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiverAddress\",\"type\":\"address\"}],\"name\":\"PresaleReceiverUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"presaleRound\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minimumUSDPurchase\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPresaleAmount\",\"type\":\"uint256\"}],\"name\":\"PresaleRoundUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"PresaleTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymentTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paymentTokenamount\",\"type\":\"uint256\"}],\"name\":\"TokenPresold\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endingTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentPresaleDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentPresaleRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_presaleRound\",\"type\":\"uint256\"}],\"name\":\"getPresaleAmountByRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalPresaleAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalPresaleRound\",\"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\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"presaleAmountByRoundMapping\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"presaleDetailsMapping\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumUSDPurchase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumPresaleAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"presalePaymentTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"available\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"aggregatorAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"presaleReceiver\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_paymentTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"presaleTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newEndingTime\",\"type\":\"uint256\"}],\"name\":\"setEndingTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_tokenAvailability\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_aggregatorAddress\",\"type\":\"address\"}],\"name\":\"setPresalePaymentToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_newPresaleReceiver\",\"type\":\"address\"}],\"name\":\"setPresaleReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_presaleRound\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startingTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_usdPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minimumUSDPurchase\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maximumPresaleAmount\",\"type\":\"uint256\"}],\"name\":\"setPresaleRound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTokenAddress\",\"type\":\"address\"}],\"name\":\"setPresaleTokenAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalPresaleRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCurrentPresaleDetails()\":{\"details\":\"Getting the Current Presale Details, including:\",\"returns\":{\"_0\":\"Starting Time\",\"_1\":\"USD Price\",\"_2\":\"Minimum USD Purchase\",\"_3\":\"Maximum Presale Amount\"}},\"getCurrentPresaleRound()\":{\"details\":\"Get Current Presale Round\"},\"getPresaleAmountByRound(uint256)\":{\"details\":\"Get presale total amount By presale round\",\"params\":{\"_presaleRound\":\"- The presale round chosen\"}},\"getTotalPresaleAmount()\":{\"details\":\"Get total amount of presale from all rounds\"},\"getTotalPresaleRound()\":{\"details\":\"Get total amount of presale round\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"presaleTokens(address,uint256)\":{\"details\":\"Execute the Presale of ALPS Token in exchange of other token\",\"params\":{\"_amount\":\"- Amount denominated in the `paymentTokenAddress` being paid\",\"_paymentTokenAddress\":\"- Address of the token use to pay (address 0 is for native token)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setEndingTime(uint256)\":{\"details\":\"Set new Ending time\",\"params\":{\"_newEndingTime\":\"- New Ending Timestamp\"}},\"setPresalePaymentToken(address,bool,address)\":{\"details\":\"Set Presale Payment Token Info\",\"params\":{\"_aggregatorAddress\":\"- Chainlink's Aggregator Address to determine the USD price (for `presaleTokens`)\",\"_tokenAddress\":\"- Token Address use to purchase Presale\",\"_tokenAvailability\":\"- Indication whether Token Address can be used for Presale\"}},\"setPresaleReceiver(address)\":{\"details\":\"Set new Presale Receiver Address\",\"params\":{\"_newPresaleReceiver\":\"- Address that'll receive the presale payment token\"}},\"setPresaleRound(uint256,uint256,uint256,uint256,uint256)\":{\"details\":\"Creating/Updating a presale round information\",\"params\":{\"_maximumPresaleAmount\":\"- The maximum amount of token available for a presale round\",\"_minimumUSDPurchase\":\"- The minimum USD amount to purchase the token\",\"_presaleRound\":\"- The presale round chosen\",\"_startingTime\":\"- The starting Presale time\",\"_usdPrice\":\"- The USD Price of the Token in certain Presale Round\"}},\"setPresaleTokenAddress(address)\":{\"details\":\"Set new Presale Token Address\",\"params\":{\"_newTokenAddress\":\"- Address of token that'll be presaled\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/presale/Presale.sol\":\"Presale\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0xf2b6c9adb3552254df1445b73563cf014434ff5e78663e9b961b6c059506ceb5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f59e0c7334c22fb54288728fc32546bdc9c8133d6db0d60223e3c28f52120\",\"dweb:/ipfs/QmeuxawUVBhMWQJXaEhhnubCTc4Jwn5wYK8gbhq6NjrpfG\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2\",\"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y\"]},\"project:/contracts/libraries/PriceConverter.sol\":{\"keccak256\":\"0x1c7379e2f032a302a999b9f49bd5b0d79bc5d260aeae8d8e173dfdcae2bebbb8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c8968f30c2b173c3fa28a669fe95d09721ffad661b7632d36de73a286e06d124\",\"dweb:/ipfs/QmXCh1gfzimGC3WLPLyUSsdy7UWGNKt6Fsc7f45sRyYRJe\"]},\"project:/contracts/presale/Presale.sol\":{\"keccak256\":\"0xab5e687ad5a80364bdb1e057b1603c77f5c3c4fdbc1f73fefe4d8c0435707b17\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://40145e0b98e04321b451ee133deba4ddca1a819b42885c17b4dd1587945eea07\",\"dweb:/ipfs/QmVmSziDW8WFcKbspdtF1qtcFeqUjJ9igUfAGRqAXd71E6\"]},\"project:/contracts/token/interfaces/IERC20Custom.sol\":{\"keccak256\":\"0x6f50952568dc5b577661f6d1730b39cfa7628a39390103c89190afdfc565d1f4\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://480386fcd5b5e3456e80150bf5444f1b2b067746be0245f287b78fc03e81133a\",\"dweb:/ipfs/QmWBfMsjQPEKj7jav96428j8Ss4AUVtkj69nsVsPZb8E1S\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b50604051620015b9380380620015b98339810160408190526200003491620000e5565b6200003f336200007c565b60018055600380546001600160a01b039485166001600160a01b03199182161790915560048054939094169216919091179091556005556200012d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000e257600080fd5b50565b600080600060608486031215620000fb57600080fd5b83516200010881620000cc565b60208501519093506200011b81620000cc565b80925050604084015190509250925092565b61147c806200013d6000396000f3fe60806040526004361061012a5760003560e01c80638da5cb5b116100ab578063c829d1db1161006f578063c829d1db14610385578063d958e001146103a5578063ec2b3523146103d2578063efca9049146103e7578063f2fde38b146103fa578063feda925b1461041a57600080fd5b80638da5cb5b1461029d5780638e7d41b7146102cf578063962de5c01461032e5780639d76ea5814610345578063c14364151461036557600080fd5b80633c0c134d116100f25780633c0c134d146101d05780636c47a6c3146101f0578063715018a614610206578063736e38ef1461021b5780637b4d35851461023b57600080fd5b80630aca575a1461012f5780631c63f0ed146101575780633473bf301461016c578063392f911b1461018e578063398dcd26146101bb575b600080fd5b34801561013b57600080fd5b5061014461043a565b6040519081526020015b60405180910390f35b34801561016357600080fd5b5061014461047c565b34801561017857600080fd5b5061018c610187366004610fd1565b6104d1565b005b34801561019a57600080fd5b506101446101a9366004610fd1565b60076020526000908152604090205481565b3480156101c757600080fd5b50610144610561565b3480156101dc57600080fd5b5061018c6101eb366004610fff565b610571565b3480156101fc57600080fd5b5061014460055481565b34801561021257600080fd5b5061018c610618565b34801561022757600080fd5b5061018c61023636600461102a565b61064e565b34801561024757600080fd5b5061027d610256366004610fd1565b60066020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161014e565b3480156102a957600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161014e565b3480156102db57600080fd5b5061030f6102ea366004610fff565b60086020526000908152604090205460ff81169061010090046001600160a01b031682565b6040805192151583526001600160a01b0390911660208301520161014e565b34801561033a57600080fd5b506002546101449081565b34801561035157600080fd5b506003546102b7906001600160a01b031681565b34801561037157600080fd5b506004546102b7906001600160a01b031681565b34801561039157600080fd5b5061018c6103a0366004611075565b61072b565b3480156103b157600080fd5b506101446103c0366004610fd1565b60009081526007602052604090205490565b3480156103de57600080fd5b5061027d6108d5565b61018c6103f53660046110b0565b610914565b34801561040657600080fd5b5061018c610415366004610fff565b610dda565b34801561042657600080fd5b5061018c610435366004610fff565b610e75565b600080805b6002548110156104765760008181526007602052604090205461046290836110f2565b91508061046e8161110a565b91505061043f565b50919050565b600080600161048a60025490565b6104949190611125565b90505b80156104c95760008181526006602052604090205442106104b757919050565b806104c18161113c565b915050610497565b506000905090565b6000546001600160a01b031633146105045760405162461bcd60e51b81526004016104fb90611153565b60405180910390fd5b42811015610525576040516393d901df60e01b815260040160405180910390fd5b60058190556040518181527f5e50721573a3d3c427f04e866bbc258f046cad12af9fe4a334736b200773d677906020015b60405180910390a150565b600061056c60025490565b905090565b6000546001600160a01b0316331461059b5760405162461bcd60e51b81526004016104fb90611153565b806001600160a01b0381166105c35760405163120d99cb60e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0384169081179091556040519081527fee1a99df2103f0b252dbc99d29264423a2ff1bb9c2f60dc19903e2ce82989b8b9060200160405180910390a15050565b6000546001600160a01b031633146106425760405162461bcd60e51b81526004016104fb90611153565b61064c6000610eed565b565b6000546001600160a01b031633146106785760405162461bcd60e51b81526004016104fb90611153565b806001600160a01b0381166106a05760405163120d99cb60e11b815260040160405180910390fd5b6001600160a01b0384811660008181526008602090815260409182902080546001600160a81b031916881515610100600160a81b0319811691909117610100968916968702179091558251938452908301528101919091527f0808e27b4009f59d9d966410b0eead8697b72a10434291d723d6200ab3f343e59060600160405180910390a150505050565b6000546001600160a01b031633146107555760405162461bcd60e51b81526004016104fb90611153565b60008581526006602052604090208054600182015460028301546003909301549192909183158015610785575082155b801561078f575081155b8015610799575080155b156107ac576107ac600280546001019055565b8715806107e2575088158015906107e25750600660006107cd60018c611125565b81526020019081526020016000206000015488105b1561080057604051633863ce1d60e01b815260040160405180910390fd5b8661081e576040516329198c7f60e11b815260040160405180910390fd5b8561083c57604051630746844f60e31b815260040160405180910390fd5b8461085a57604051639f2bfa4160e01b815260040160405180910390fd5b6000898152600660209081526040918290208a8155600181018a90556002810189905560030187905581518a81529081018990529081018790526060810186905289907f5460f1c76402b41ef0b7902b6b577fd351a2a6bc531d4a246d8be68dde775a2b9060800160405180910390a2505050505050505050565b60008060008060006108e561047c565b600090815260066020526040902080546001820154600283015460039093015491989097509195509350915050565b600260015414156109675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260015560008080806109796108d5565b93509350935093508342108061099157506005544210155b156109af576040516304d61c6f60e41b815260040160405180910390fd5b6001600160a01b03861660009081526008602052604090205460ff166109e8576040516303003c8560e21b815260040160405180910390fd5b6003546001600160a01b03878116600090815260086020526040808220548151633fabe5a360e21b815291519484169461010090910490931692839163feaf968c9160048083019260a09291908290030181865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7291906111a7565b5050509150506000610b50610b4a83856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906111f7565b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906111f7565b610f3d565b8a610fb0565b905085610b608260126000610f3d565b1015610b7f5760405163196d4a1d60e01b815260040160405180910390fd5b6000610b8b8289610fc5565b905060076000610b9961047c565b81526020019081526020016000205486610bb39190611125565b811115610bd3576040516317b1337360e31b815260040160405180910390fd5b8060076000610be061047c565b81526020019081526020016000206000828254610bfd91906110f2565b90915550506001600160a01b038b16610c9e5789341015610c315760405163854a356160e01b815260040160405180910390fd5b6004546040516001600160a01b03909116908b156108fc02908c906000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b5060405133904780156108fc02916000818181858888f19350505050158015610c98573d6000803e3d6000fd5b50610d23565b600480546040516323b872dd60e01b815233928101929092526001600160a01b039081166024830152604482018c90528c91908216906323b872dd906064016020604051808303816000875af1158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d20919061121a565b50505b6040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b158015610d6b57600080fd5b505af1158015610d7f573d6000803e3d6000fd5b505060408051848152602081018e90526001600160a01b038f1693503392507f69902df1d9bae4b2a08b9e9d689906299b4b15ac10fbbf560d019b5c73fd35d6910160405180910390a3505060018055505050505050505050565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016104fb90611153565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fb565b610e7281610eed565b50565b6000546001600160a01b03163314610e9f5760405162461bcd60e51b81526004016104fb90611153565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb3df4b02428d73d6993c686e78b4a35e95f5be7d084aaee9277115379dc4ca9390602001610556565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008160ff168360ff161015610f7657610f578383611237565b610f659060ff16600a61133e565b610f6f908561134a565b9050610fa9565b8160ff168360ff161115610fa657610f8e8284611237565b610f9c9060ff16600a61133e565b610f6f90856113e5565b50825b9392505050565b6000610fbc8284611413565b90505b92915050565b6000610fbc8284611432565b600060208284031215610fe357600080fd5b5035919050565b6001600160a01b0381168114610e7257600080fd5b60006020828403121561101157600080fd5b8135610fa981610fea565b8015158114610e7257600080fd5b60008060006060848603121561103f57600080fd5b833561104a81610fea565b9250602084013561105a8161101c565b9150604084013561106a81610fea565b809150509250925092565b600080600080600060a0868803121561108d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156110c357600080fd5b82356110ce81610fea565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611105576111056110dc565b500190565b600060001982141561111e5761111e6110dc565b5060010190565b600082821015611137576111376110dc565b500390565b60008161114b5761114b6110dc565b506000190190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b805169ffffffffffffffffffff811681146111a257600080fd5b919050565b600080600080600060a086880312156111bf57600080fd5b6111c886611188565b94506020860151935060408601519250606086015191506111eb60808701611188565b90509295509295909350565b60006020828403121561120957600080fd5b815160ff81168114610fa957600080fd5b60006020828403121561122c57600080fd5b8151610fa98161101c565b600060ff821660ff841680821015611251576112516110dc565b90039392505050565b600181815b8085111561129557816000190482111561127b5761127b6110dc565b8085161561128857918102915b93841c939080029061125f565b509250929050565b6000826112ac57506001610fbf565b816112b957506000610fbf565b81600181146112cf57600281146112d9576112f5565b6001915050610fbf565b60ff8411156112ea576112ea6110dc565b50506001821b610fbf565b5060208310610133831016604e8410600b8410161715611318575081810a610fbf565b611322838361125a565b8060001904821115611336576113366110dc565b029392505050565b6000610fbc838361129d565b60006001600160ff1b0381841382841380821686840486111615611370576113706110dc565b600160ff1b600087128281168783058912161561138f5761138f6110dc565b600087129250878205871284841616156113ab576113ab6110dc565b878505871281841616156113c1576113c16110dc565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826113f4576113f46113cf565b600160ff1b82146000198414161561140e5761140e6110dc565b500590565b600081600019048311821515161561142d5761142d6110dc565b500290565b600082611441576114416113cf565b50049056fea2646970667358221220ee7b83225dfd0f5e8caa87f3dba5ef1ef4353c58e1b64acb9f8ab2725bbe66b464736f6c634300080b0033",
"deployedBytecode": "0x60806040526004361061012a5760003560e01c80638da5cb5b116100ab578063c829d1db1161006f578063c829d1db14610385578063d958e001146103a5578063ec2b3523146103d2578063efca9049146103e7578063f2fde38b146103fa578063feda925b1461041a57600080fd5b80638da5cb5b1461029d5780638e7d41b7146102cf578063962de5c01461032e5780639d76ea5814610345578063c14364151461036557600080fd5b80633c0c134d116100f25780633c0c134d146101d05780636c47a6c3146101f0578063715018a614610206578063736e38ef1461021b5780637b4d35851461023b57600080fd5b80630aca575a1461012f5780631c63f0ed146101575780633473bf301461016c578063392f911b1461018e578063398dcd26146101bb575b600080fd5b34801561013b57600080fd5b5061014461043a565b6040519081526020015b60405180910390f35b34801561016357600080fd5b5061014461047c565b34801561017857600080fd5b5061018c610187366004610fd1565b6104d1565b005b34801561019a57600080fd5b506101446101a9366004610fd1565b60076020526000908152604090205481565b3480156101c757600080fd5b50610144610561565b3480156101dc57600080fd5b5061018c6101eb366004610fff565b610571565b3480156101fc57600080fd5b5061014460055481565b34801561021257600080fd5b5061018c610618565b34801561022757600080fd5b5061018c61023636600461102a565b61064e565b34801561024757600080fd5b5061027d610256366004610fd1565b60066020526000908152604090208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161014e565b3480156102a957600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161014e565b3480156102db57600080fd5b5061030f6102ea366004610fff565b60086020526000908152604090205460ff81169061010090046001600160a01b031682565b6040805192151583526001600160a01b0390911660208301520161014e565b34801561033a57600080fd5b506002546101449081565b34801561035157600080fd5b506003546102b7906001600160a01b031681565b34801561037157600080fd5b506004546102b7906001600160a01b031681565b34801561039157600080fd5b5061018c6103a0366004611075565b61072b565b3480156103b157600080fd5b506101446103c0366004610fd1565b60009081526007602052604090205490565b3480156103de57600080fd5b5061027d6108d5565b61018c6103f53660046110b0565b610914565b34801561040657600080fd5b5061018c610415366004610fff565b610dda565b34801561042657600080fd5b5061018c610435366004610fff565b610e75565b600080805b6002548110156104765760008181526007602052604090205461046290836110f2565b91508061046e8161110a565b91505061043f565b50919050565b600080600161048a60025490565b6104949190611125565b90505b80156104c95760008181526006602052604090205442106104b757919050565b806104c18161113c565b915050610497565b506000905090565b6000546001600160a01b031633146105045760405162461bcd60e51b81526004016104fb90611153565b60405180910390fd5b42811015610525576040516393d901df60e01b815260040160405180910390fd5b60058190556040518181527f5e50721573a3d3c427f04e866bbc258f046cad12af9fe4a334736b200773d677906020015b60405180910390a150565b600061056c60025490565b905090565b6000546001600160a01b0316331461059b5760405162461bcd60e51b81526004016104fb90611153565b806001600160a01b0381166105c35760405163120d99cb60e11b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0384169081179091556040519081527fee1a99df2103f0b252dbc99d29264423a2ff1bb9c2f60dc19903e2ce82989b8b9060200160405180910390a15050565b6000546001600160a01b031633146106425760405162461bcd60e51b81526004016104fb90611153565b61064c6000610eed565b565b6000546001600160a01b031633146106785760405162461bcd60e51b81526004016104fb90611153565b806001600160a01b0381166106a05760405163120d99cb60e11b815260040160405180910390fd5b6001600160a01b0384811660008181526008602090815260409182902080546001600160a81b031916881515610100600160a81b0319811691909117610100968916968702179091558251938452908301528101919091527f0808e27b4009f59d9d966410b0eead8697b72a10434291d723d6200ab3f343e59060600160405180910390a150505050565b6000546001600160a01b031633146107555760405162461bcd60e51b81526004016104fb90611153565b60008581526006602052604090208054600182015460028301546003909301549192909183158015610785575082155b801561078f575081155b8015610799575080155b156107ac576107ac600280546001019055565b8715806107e2575088158015906107e25750600660006107cd60018c611125565b81526020019081526020016000206000015488105b1561080057604051633863ce1d60e01b815260040160405180910390fd5b8661081e576040516329198c7f60e11b815260040160405180910390fd5b8561083c57604051630746844f60e31b815260040160405180910390fd5b8461085a57604051639f2bfa4160e01b815260040160405180910390fd5b6000898152600660209081526040918290208a8155600181018a90556002810189905560030187905581518a81529081018990529081018790526060810186905289907f5460f1c76402b41ef0b7902b6b577fd351a2a6bc531d4a246d8be68dde775a2b9060800160405180910390a2505050505050505050565b60008060008060006108e561047c565b600090815260066020526040902080546001820154600283015460039093015491989097509195509350915050565b600260015414156109675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260015560008080806109796108d5565b93509350935093508342108061099157506005544210155b156109af576040516304d61c6f60e41b815260040160405180910390fd5b6001600160a01b03861660009081526008602052604090205460ff166109e8576040516303003c8560e21b815260040160405180910390fd5b6003546001600160a01b03878116600090815260086020526040808220548151633fabe5a360e21b815291519484169461010090910490931692839163feaf968c9160048083019260a09291908290030181865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7291906111a7565b5050509150506000610b50610b4a83856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae391906111f7565b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906111f7565b610f3d565b8a610fb0565b905085610b608260126000610f3d565b1015610b7f5760405163196d4a1d60e01b815260040160405180910390fd5b6000610b8b8289610fc5565b905060076000610b9961047c565b81526020019081526020016000205486610bb39190611125565b811115610bd3576040516317b1337360e31b815260040160405180910390fd5b8060076000610be061047c565b81526020019081526020016000206000828254610bfd91906110f2565b90915550506001600160a01b038b16610c9e5789341015610c315760405163854a356160e01b815260040160405180910390fd5b6004546040516001600160a01b03909116908b156108fc02908c906000818181858888f19350505050158015610c6b573d6000803e3d6000fd5b5060405133904780156108fc02916000818181858888f19350505050158015610c98573d6000803e3d6000fd5b50610d23565b600480546040516323b872dd60e01b815233928101929092526001600160a01b039081166024830152604482018c90528c91908216906323b872dd906064016020604051808303816000875af1158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d20919061121a565b50505b6040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b158015610d6b57600080fd5b505af1158015610d7f573d6000803e3d6000fd5b505060408051848152602081018e90526001600160a01b038f1693503392507f69902df1d9bae4b2a08b9e9d689906299b4b15ac10fbbf560d019b5c73fd35d6910160405180910390a3505060018055505050505050505050565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016104fb90611153565b6001600160a01b038116610e695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104fb565b610e7281610eed565b50565b6000546001600160a01b03163314610e9f5760405162461bcd60e51b81526004016104fb90611153565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb3df4b02428d73d6993c686e78b4a35e95f5be7d084aaee9277115379dc4ca9390602001610556565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008160ff168360ff161015610f7657610f578383611237565b610f659060ff16600a61133e565b610f6f908561134a565b9050610fa9565b8160ff168360ff161115610fa657610f8e8284611237565b610f9c9060ff16600a61133e565b610f6f90856113e5565b50825b9392505050565b6000610fbc8284611413565b90505b92915050565b6000610fbc8284611432565b600060208284031215610fe357600080fd5b5035919050565b6001600160a01b0381168114610e7257600080fd5b60006020828403121561101157600080fd5b8135610fa981610fea565b8015158114610e7257600080fd5b60008060006060848603121561103f57600080fd5b833561104a81610fea565b9250602084013561105a8161101c565b9150604084013561106a81610fea565b809150509250925092565b600080600080600060a0868803121561108d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156110c357600080fd5b82356110ce81610fea565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611105576111056110dc565b500190565b600060001982141561111e5761111e6110dc565b5060010190565b600082821015611137576111376110dc565b500390565b60008161114b5761114b6110dc565b506000190190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b805169ffffffffffffffffffff811681146111a257600080fd5b919050565b600080600080600060a086880312156111bf57600080fd5b6111c886611188565b94506020860151935060408601519250606086015191506111eb60808701611188565b90509295509295909350565b60006020828403121561120957600080fd5b815160ff81168114610fa957600080fd5b60006020828403121561122c57600080fd5b8151610fa98161101c565b600060ff821660ff841680821015611251576112516110dc565b90039392505050565b600181815b8085111561129557816000190482111561127b5761127b6110dc565b8085161561128857918102915b93841c939080029061125f565b509250929050565b6000826112ac57506001610fbf565b816112b957506000610fbf565b81600181146112cf57600281146112d9576112f5565b6001915050610fbf565b60ff8411156112ea576112ea6110dc565b50506001821b610fbf565b5060208310610133831016604e8410600b8410161715611318575081810a610fbf565b611322838361125a565b8060001904821115611336576113366110dc565b029392505050565b6000610fbc838361129d565b60006001600160ff1b0381841382841380821686840486111615611370576113706110dc565b600160ff1b600087128281168783058912161561138f5761138f6110dc565b600087129250878205871284841616156113ab576113ab6110dc565b878505871281841616156113c1576113c16110dc565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b6000826113f4576113f46113cf565b600160ff1b82146000198414161561140e5761140e6110dc565b500590565b600081600019048311821515161561142d5761142d6110dc565b500290565b600082611441576114416113cf565b50049056fea2646970667358221220ee7b83225dfd0f5e8caa87f3dba5ef1ef4353c58e1b64acb9f8ab2725bbe66b464736f6c634300080b0033",
"immutableReferences": {},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:606:56",
"statements": [
{
"nodeType": "Y