elephantdexcontracts
Version:
Token, Liquidity Mining and Governance contracts for The Elephant Dex & Casino. https://elephant.ac
1,480 lines • 429 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "contract GovernanceToken",
"name": "_govToken",
"type": "address"
},
{
"internalType": "address",
"name": "_devaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_liquidityaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_comfundaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_founderaddr",
"type": "address"
},
{
"internalType": "uint256",
"name": "_rewardPerBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_halvingAfterBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_userDepFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_devDepFee",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "_rewardMultiplier",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_blockDeltaStartStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_blockDeltaEndStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_userFeeStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_devFeeStage",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "EmergencyWithdraw",
"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"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockAmount",
"type": "uint256"
}
],
"name": "SendGovernanceTokenReward",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "FINISH_BONUS_AT_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "HALVING_AT_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_COM",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_DEV",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_FOUNDERS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_LP",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_LOCK_BONUS_REWARD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "REWARD_MULTIPLIER",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REWARD_PER_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "START_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
},
{
"internalType": "contract IERC20",
"name": "_lpToken",
"type": "address"
},
{
"internalType": "bool",
"name": "_withUpdate",
"type": "bool"
}
],
"name": "add",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_toAdd",
"type": "address"
}
],
"name": "addAuthorized",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "authorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "blockDeltaEndStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "blockDeltaStartStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newFinish",
"type": "uint256"
}
],
"name": "bonusFinishUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "claimReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_pids",
"type": "uint256[]"
}
],
"name": "claimRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newCom",
"type": "address"
}
],
"name": "comUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "comfundaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_ref",
"type": "address"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_devaddr",
"type": "address"
}
],
"name": "dev",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "devDepFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "devFeeStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "devaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "emergencyWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newFounder",
"type": "address"
}
],
"name": "founderUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "founderaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getGlobalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getGlobalRefAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_from",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_to",
"type": "uint256"
}
],
"name": "getMultiplier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "pid1",
"type": "uint256"
}
],
"name": "getNewRewardPerBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_from",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_to",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
}
],
"name": "getPoolReward",
"outputs": [
{
"internalType": "uint256",
"name": "forDev",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forFarmer",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forLP",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forCom",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forFounders",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "address",
"name": "_user2",
"type": "address"
}
],
"name": "getRefValueOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getTotalRefs",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "govToken",
"outputs": [
{
"internalType": "contract GovernanceToken",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_newHalving",
"type": "uint256[]"
}
],
"name": "halvingUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "liquidityaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newlock",
"type": "uint256"
}
],
"name": "lockUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newcomlock",
"type": "uint256"
}
],
"name": "lockcomUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newdevlock",
"type": "uint256"
}
],
"name": "lockdevUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newfounderlock",
"type": "uint256"
}
],
"name": "lockfounderUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newlplock",
"type": "uint256"
}
],
"name": "locklpUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newLP",
"type": "address"
}
],
"name": "lpUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "massUpdatePools",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "pendingReward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"name": "poolExistence",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "poolId1",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "poolInfo",
"outputs": [
{
"internalType": "contract IERC20",
"name": "lpToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "allocPoint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastRewardBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "accGovTokenPerShare",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poolLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "reclaimTokenOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_toRemove",
"type": "address"
}
],
"name": "removeAuthorized",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_block",
"type": "uint256"
}
],
"name": "reviseDeposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_block",
"type": "uint256"
}
],
"name": "reviseWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_newMulReward",
"type": "uint256[]"
}
],
"name": "rewardMulUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newReward",
"type": "uint256"
}
],
"name": "rewardUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_withUpdate",
"type": "bool"
}
],
"name": "set",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_devDepFees",
"type": "uint256"
}
],
"name": "setDevDepFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_devFees",
"type": "uint256[]"
}
],
"name": "setDevFeeStage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_blockEnds",
"type": "uint256[]"
}
],
"name": "setStageEnds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_blockStarts",
"type": "uint256[]"
}
],
"name": "setStageStarts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_usrDepFees",
"type": "uint256"
}
],
"name": "setUserDepFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_userFees",
"type": "uint256[]"
}
],
"name": "setUserFeeStage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newstarblock",
"type": "uint256"
}
],
"name": "starblockUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalAllocPoint",
"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": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "updatePool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "usdOracle",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "userDelta",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "userDepFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "userFeeStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userGlobalInfo",
"outputs": [
{
"internalType": "uint256",
"name": "globalAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalReferals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "globalRefAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userInfo",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardDebt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardDebtAtBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastWithdrawBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "firstDepositBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockdelta",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastDepositBlock",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_ref",
"type": "address"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040526000601e553480156200001657600080fd5b50604051620053be380380620053be83398181016040526101e08110156200003d57600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01805199519b9d9a9c989b979a9699959894979396929591948301929184640100000000821115620000a457600080fd5b908301906020820185811115620000ba57600080fd5b8251866020820283011164010000000082111715620000d857600080fd5b82525081516020918201928201910280838360005b8381101562000107578181015183820152602001620000ed565b50505050905001604052602001805160405193929190846401000000008211156200013157600080fd5b9083019060208201858111156200014757600080fd5b82518660208202830111640100000000821117156200016557600080fd5b82525081516020918201928201910280838360005b83811015620001945781810151838201526020016200017a565b5050505090500160405260200180516040519392919084640100000000821115620001be57600080fd5b908301906020820185811115620001d457600080fd5b8251866020820283011164010000000082111715620001f257600080fd5b82525081516020918201928201910280838360005b838110156200022157818101518382015260200162000207565b50505050905001604052602001805160405193929190846401000000008211156200024b57600080fd5b9083019060208201858111156200026157600080fd5b82518660208202830111640100000000821117156200027f57600080fd5b82525081516020918201928201910280838360005b83811015620002ae57818101518382015260200162000294565b5050505090500160405260200180516040519392919084640100000000821115620002d857600080fd5b908301906020820185811115620002ee57600080fd5b82518660208202830111640100000000821117156200030c57600080fd5b82525081516020918201928201910280838360005b838110156200033b57818101518382015260200162000321565b5050505090500160405250505060006200035a6200060860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016002819055508e600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960098190555088601381905550866011819055508560128190555084600a9080519060200190620004a3929190620006ce565b508351620004b990600c906020870190620006ce565b508251620004cf90600d906020860190620006ce565b508151620004e590600e906020850190620006ce565b508051620004fb90600f906020840190620006ce565b5060005b600a54600019018110156200058f5760006200054c6001620005388d62000538866001018f6200060c60201b620040f71790919060201c565b6200067360201b620041711790919060201c565b600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90191909155919091019050620004ff565b50620005b789620005386001600a80549050038b6200060c60201b620040f71790919060201c565b6010555050600b80546001810182556000919091526000197f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015550620007359b505050505050505050505050565b3390565b6000826200061d575060006200066d565b828202828482816200062b57fe5b04146200066a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200539d6021913960400191505060405180910390fd5b90505b92915050565b6000828201838110156200066a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200070c579160200282015b828111156200070c578251825591602001919060010190620006ef565b506200071a9291506200071e565b5090565b5b808211156200071a57600081556001016200071f565b614c5880620007456000396000f3fe608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b04565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b52565b6105716004803603602081101561065f57600080fd5b5035611b58565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611bcb565b610540611efc565b610536600480360360208110156106c557600080fd5b5035611f18565b610536600480360360208110156106e257600080fd5b5035611f60565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fa8945050505050565b610571600480360360208110156107a257600080fd5b5035612002565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612020565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120aa945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612100565b61057161215a565b610540612160565b610536600480360360208110156108d857600080fd5b503561217c565b610571600480360360208110156108f557600080fd5b50356121c4565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121d1945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612227565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061233e945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612394565b61053660048036036020811015610abe57600080fd5b503561241e565b61053660048036036020811015610adb57600080fd5b5035612b12565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612c95565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612ced945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d1d565b61057160048036036020811015610c0d57600080fd5b5035612d96565b610536612da3565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dc2565b610536612ee3565b61053660048036036020811015610c6557600080fd5b5035612ffa565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613042565b6105716130bb565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130c1945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613117945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661316d565b6105406131f7565b61057160048036036040811015610e4a57600080fd5b5080359060200135613213565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1661330f565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613617565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613673565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136c2565b6105716136c8565b6105716136ce565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136d4565b610571613848565b61053660048036036020811015610fa957600080fd5b503561384e565b61053660048036036020811015610fc657600080fd5b5035613860565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138a8565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138bd565b6105716138ca565b6105366004803603602081101561104f57600080fd5b50356138d0565b610571613918565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661391e565b6105406139a8565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139c4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bd6565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613be3565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf8565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0a565b610571600480360360208110156111b957600080fd5b5035613d04565b610540613d11565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d2d565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d4e565b6105366004803603602081101561126a57600080fd5b5035613d8a565b610540613dd2565b610571613dee565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613df4565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613ec6565b610536600480360360208110156112fd57600080fd5b5035614067565b6105366004803603602081101561131a57600080fd5b50356140af565b3360009081526001602052604090205460ff168061135b5750336113436131f7565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c9094528186209086529420825460049094029091019450909291861115611503576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614b346021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115435733600090815260018301602052604090208054879003905560038201805487900390555b805486900381556115538761241e565b61155c876141e5565b8515611af657825461156e90876144dc565b835560038301541561158b57600383015443036005840155611598565b6004830154430360058401555b600c6000815481106115a657fe5b9060005260206000200154836005015414806115c55750826006015443145b1561165e576116233361160460646115fe600e6000815481106115e457fe5b90600052602060002001548b6140f790919063ffffffff16565b90614553565b865473ffffffffffffffffffffffffffffffffffffffff1691906145d4565b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe916000906115e457fe5b611a98565b600c60018154811061166c57fe5b90600052602060002001548360050154101580156116a65750600d60008154811061169357fe5b9060005260206000200154836005015411155b156116fd576116c53361160460646115fe600e6001815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160019081106115e457fe5b600c60028154811061170b57fe5b90600052602060002001548360050154101580156117455750600d60018154811061173257fe5b9060005260206000200154836005015411155b1561179c576117643361160460646115fe600e6002815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160029081106115e457fe5b600c6003815481106117aa57fe5b90600052602060002001548360050154101580156117e45750600d6002815481106117d157fe5b9060005260206000200154836005015411155b1561183b576118033361160460646115fe600e6003815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160039081106115e457fe5b600c60048154811061184957fe5b90600052602060002001548360050154101580156118835750600d60038154811061187057fe5b9060005260206000200154836005015411155b156118da576118a23361160460646115fe600e6004815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff1691611604916064916115fe9160049081106115e457fe5b600c6005815481106118e857fe5b90600052602060002001548360050154101580156119225750600d60048154811061190f57fe5b9060005260206000200154836005015411155b1561197f57611942336116046103e86115fe600e6005815481106115e457fe5b611659600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116046103e86115fe600f6005815481106115e457fe5b600c60068154811061198d57fe5b90600052602060002001548360050154101580156119c75750600d6005815481106119b457fe5b9060005260206000200154836005015411155b15611a20576119e7336116046127106115fe600e6006815481106115e457fe5b600554600f80546116599273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160069081106115e457fe5b600c600781548110611a2e57fe5b906000526020600020015483600501541115611a9857611a5f336116046127106115fe600e6007815481106115e457fe5b600554600f8054611a989273ffffffffffffffffffffffffffffffffffffffff169161160491612710916115fe9160079081106115e457fe5b60038401548354611ab39164e8d4a51000916115fe916140f7565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b1157fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b686001430343613213565b905082611b8557600954611b7d9082906140f7565b9150506113c4565b611b7d601e546115fe60196001870381548110611b9e57fe5b906000526020600020906004020160010154611bc5600954866140f790919063ffffffff16565b906140f7565b611bd3614661565b73ffffffffffffffffffffffffffffffffffffffff16611bf16131f7565b73ffffffffffffffffffffffffffffffffffffffff1614611c7357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614b9c6028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180614b0b6029913960400191505060405180910390fd5b8115611d7e57611d7e612da3565b60006013544311611d9157601354611d93565b435b601e54909150611da39086614171565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d825280832080547ffffffffffffffffffffffffffffffffff