@augmentedfinance/protocol-v1
Version:
Augmented Protocol smart contracts
1,084 lines • 63.9 kB
JavaScript
"use strict";
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
Object.defineProperty(exports, "__esModule", { value: true });
exports.RewardBoosterV1Factory = void 0;
const contracts_1 = require("@ethersproject/contracts");
class RewardBoosterV1Factory extends contracts_1.ContractFactory {
constructor(signer) {
super(_abi, _bytecode, signer);
}
deploy(overrides) {
return super.deploy(overrides || {});
}
getDeployTransaction(overrides) {
return super.getDeployTransaction(overrides || {});
}
attach(address) {
return super.attach(address);
}
connect(signer) {
return super.connect(signer);
}
static connect(address, signerOrProvider) {
return new contracts_1.Contract(address, _abi, signerOrProvider);
}
}
exports.RewardBoosterV1Factory = RewardBoosterV1Factory;
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint256",
name: "baseline",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "totalRate",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "mask",
type: "uint256",
},
],
name: "BaselineUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "pool",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "mask",
type: "uint256",
},
{
indexed: false,
internalType: "uint32",
name: "pctFactor",
type: "uint32",
},
],
name: "BoostFactorSet",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "by",
type: "address",
},
{
indexed: false,
internalType: "bool",
name: "paused",
type: "bool",
},
],
name: "EmergencyPaused",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint16",
name: "minBoostPct",
type: "uint16",
},
],
name: "MinBoostUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: false,
internalType: "enum AutolockMode",
name: "mode",
type: "uint8",
},
{
indexed: false,
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
{
indexed: false,
internalType: "uint224",
name: "param",
type: "uint224",
},
],
name: "RewardAutolockConfigured",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "minter",
type: "address",
},
],
name: "RewardMinterSet",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "pool",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "mask",
type: "uint256",
},
],
name: "RewardPoolAdded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "pool",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "mask",
type: "uint256",
},
],
name: "RewardPoolRemoved",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "user",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
indexed: true,
internalType: "address",
name: "fromPool",
type: "address",
},
],
name: "RewardsAllocated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "user",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "RewardsClaimed",
type: "event",
},
{
inputs: [],
name: "REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [
{
internalType: "contract IManagedRewardPool",
name: "pool",
type: "address",
},
],
name: "addRewardPool",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
{
internalType: "uint256",
name: "allocated",
type: "uint256",
},
{
internalType: "uint32",
name: "since",
type: "uint32",
},
{
internalType: "enum AllocationMode",
name: "mode",
type: "uint8",
},
],
name: "allocatedByPool",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "timestamp",
type: "uint256",
},
{
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
],
name: "autolockAccumulateTill",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "maxAmount",
type: "uint256",
},
{
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
],
name: "autolockAccumulateUnderlying",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "autolockDefault",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "minAmount",
type: "uint256",
},
{
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
],
name: "autolockKeepUpBalance",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "autolockOf",
outputs: [
{
internalType: "enum AutolockMode",
name: "mode",
type: "uint8",
},
{
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
{
internalType: "uint256",
name: "param",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint32",
name: "minLockDuration",
type: "uint32",
},
],
name: "autolockProlongate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "autolockStop",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "claimReward",
outputs: [
{
internalType: "uint256",
name: "claimed",
type: "uint256",
},
{
internalType: "uint256",
name: "extra",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "receiver",
type: "address",
},
{
internalType: "uint256",
name: "includeMask",
type: "uint256",
},
],
name: "claimRewardTo",
outputs: [
{
internalType: "uint256",
name: "claimed",
type: "uint256",
},
{
internalType: "uint256",
name: "extra",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "claimablePools",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "claimableReward",
outputs: [
{
internalType: "uint256",
name: "claimable",
type: "uint256",
},
{
internalType: "uint256",
name: "extra",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
{
internalType: "uint256",
name: "includeMask",
type: "uint256",
},
],
name: "claimableRewardFor",
outputs: [
{
internalType: "uint256",
name: "claimable",
type: "uint256",
},
{
internalType: "uint256",
name: "extra",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "disableAutolock",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "enum AutolockMode",
name: "mode",
type: "uint8",
},
{
internalType: "uint32",
name: "lockDuration",
type: "uint32",
},
{
internalType: "uint224",
name: "param",
type: "uint224",
},
],
name: "enableAutolockAndSetDefault",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
{
internalType: "uint32",
name: "at",
type: "uint32",
},
],
name: "explainReward",
outputs: [
{
components: [
{
internalType: "uint256",
name: "amountClaimable",
type: "uint256",
},
{
internalType: "uint256",
name: "amountExtra",
type: "uint256",
},
{
internalType: "uint256",
name: "maxBoost",
type: "uint256",
},
{
internalType: "uint256",
name: "boostLimit",
type: "uint256",
},
{
internalType: "uint32",
name: "latestClaimAt",
type: "uint32",
},
{
components: [
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "uint256",
name: "extra",
type: "uint256",
},
{
internalType: "address",
name: "pool",
type: "address",
},
{
internalType: "uint32",
name: "since",
type: "uint32",
},
{
internalType: "uint32",
name: "factor",
type: "uint32",
},
{
internalType: "enum RewardType",
name: "rewardType",
type: "uint8",
},
],
internalType: "struct RewardExplainEntry[]",
name: "allocations",
type: "tuple[]",
},
],
internalType: "struct RewardExplained",
name: "",
type: "tuple",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getAccessController",
outputs: [
{
internalType: "contract IMarketAccessController",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getBoostExcessTarget",
outputs: [
{
internalType: "address",
name: "target",
type: "address",
},
{
internalType: "bool",
name: "mintExcess",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "pool",
type: "address",
},
],
name: "getBoostFactor",
outputs: [
{
internalType: "uint32",
name: "pctFactor",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getBoostPool",
outputs: [
{
internalType: "address",
name: "pool",
type: "address",
},
{
internalType: "uint256",
name: "mask",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getMinBoost",
outputs: [
{
internalType: "uint16",
name: "",
type: "uint16",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "pool",
type: "address",
},
],
name: "getPoolMask",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getPools",
outputs: [
{
internalType: "contract IManagedRewardPool[]",
name: "",
type: "address[]",
},
{
internalType: "uint256",
name: "ignoreMask",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "allMask",
type: "uint256",
},
],
name: "getPoolsByMask",
outputs: [
{
internalType: "address[]",
name: "pools",
type: "address[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getRewardMinter",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "contract IMarketAccessController",
name: "ac",
type: "address",
},
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "isAutolockEnabled",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "addr",
type: "address",
},
],
name: "isConfigAdmin",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "isPaused",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "addr",
type: "address",
},
],
name: "isRateAdmin",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "contract IManagedRewardPool",
name: "pool",
type: "address",
},
],
name: "removeRewardPool",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "contract IManagedRewardPool[]",
name: "pools",
type: "address[]",
},
{
internalType: "uint16[]",
name: "pcts",
type: "uint16[]",
},
{
internalType: "uint256",
name: "baseline",
type: "uint256",
},
],
name: "setBaselinePercentagesAndRate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "target",
type: "address",
},
{
internalType: "bool",
name: "mintExcess",
type: "bool",
},
],
name: "setBoostExcessTarget",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "pool",
type: "address",
},
{
internalType: "uint32",
name: "pctFactor",
type: "uint32",
},
],
name: "setBoostFactor",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "pool",
type: "address",
},
],
name: "setBoostPool",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "includeMask",
type: "uint256",
},
],
name: "setClaimablePools",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address[]",
name: "accounts",
type: "address[]",
},
{
internalType: "uint256",
name: "includeMask",
type: "uint256",
},
],
name: "setClaimablePoolsFor",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint16",
name: "minBoostPct",
type: "uint16",
},
],
name: "setMinBoost",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bool",
name: "paused",
type: "bool",
},
],
name: "setPaused",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "contract IRewardMinter",
name: "minter",
type: "address",
},
],
name: "setRewardMinter",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bool",
name: "updateBoostPool",
type: "bool",
},
],
name: "setUpdateBoostPoolRate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "baseline",
type: "uint256",
},
],
name: "updateBaseline",
outputs: [
{
internalType: "uint256",
name: "totalRate",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
];
const _bytecode = "0x60806040526200001360016000196200004b565b600f5560006010553480156200002857600080fd5b50600080546001600160a01b03199081169091556001805490911690556200006f565b6000828210156200006a57634e487b7160e01b81526011600452602481fd5b500390565b61479d806200007f6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80639184a75f1161015c578063c4d66de8116100ce578063d44ec8b911610087578063d44ec8b9146105fe578063d49ebe8f14610611578063dde43cba14610624578063ddebfb921461062b578063e95034251461063e578063e9cce4d31461065157600080fd5b8063c4d66de81461058a578063c7d6ad5a1461059d578063ca5b5946146105b0578063cbb207da146105b8578063ce91a059146105cb578063cf0a230a146105de57600080fd5b8063b0286b1811610120578063b0286b1814610516578063b10fb7aa14610529578063b187bd2614610551578063b6de34c91461055c578063b88a802f1461056f578063bea9a0541461057757600080fd5b80639184a75f146104b75780639cb9a554146104ca5780639d0812fe146104dd578063a6c3b8e8146104f0578063a7a0b84a1461050357600080fd5b80634b4739ea116101f557806365eea7fd116101b957806365eea7fd14610458578063673a2a1f146104605780636eb859811461047657806370a082311461048957806372463e3f1461049c5780637adab08d146104af57600080fd5b80634b4739ea146103ed5780634dfdd3e5146104005780635174c4e61461041157806352284ea11461042457806356fe702d1461043757600080fd5b806326fd27121161024757806326fd27121461032d5780632803b7b11461034d5780632fd1fc8314610375578063364c28311461038d57806339b5ea5f146103af57806345a03035146103c257600080fd5b80630ca2103d146102845780630df8b0e3146102aa57806311bf2c20146102e057806316c38b3c146102f357806316d6b5f614610308575b600080fd5b6102976102923660046141a9565b610664565b6040519081526020015b60405180910390f35b6102c1600a54600b546001600160a01b0390911691565b604080516001600160a01b0390931683526020830191909152016102a1565b6102976102ee366004613ed7565b610771565b6103066103013660046140f1565b6107be565b005b6000546001600160a01b03165b6040516001600160a01b0390911681526020016102a1565b61034061033b3660046141a9565b61083d565b6040516102a19190614323565b61036061035b366004613f47565b610992565b604080519283526020830191909152016102a1565b61037d6109b5565b60405190151581526020016102a1565b6103a061039b366004613ed7565b6109eb565b6040516102a1939291906143f4565b6103066103bd366004614206565b610b6e565b600c54604080516001600160a01b0383168152600160b01b90920460ff1615156020830152016102a1565b6103066103fb366004614080565b610c38565b6001546001600160a01b0316610315565b61030661041f36600461413a565b610e31565b610306610432366004613ed7565b610e49565b600c54600160a01b900461ffff1660405161ffff90911681526020016102a1565b610306611159565b610468611169565b6040516102a1929190614370565b61037d610484366004613ed7565b6111d6565b610297610497366004613ed7565b611209565b6103066104aa366004614187565b61124a565b61030661130f565b6103066104c5366004614206565b61131f565b6102976104d8366004613ed7565b611395565b6103066104eb366004613f0f565b6113a2565b6103066104fe366004613ed7565b6113fa565b610306610511366004613ed7565b6116da565b610306610524366004613fb4565b611730565b61053c610537366004613ed7565b611818565b60405163ffffffff90911681526020016102a1565b60075460ff1661037d565b61036061056a366004613f47565b611839565b6103606118a5565b610306610585366004614009565b6118cd565b610306610598366004613ed7565b611943565b6103066105ab3660046142a9565b611a46565b610306611a54565b6103066105c63660046140f1565b611a62565b61037d6105d9366004613ed7565b611a88565b6105f16105ec366004614009565b611ab5565b6040516102a19190614492565b61030661060c366004614206565b611b29565b61030661061f3660046141a9565b611b99565b6003610297565b610306610639366004614036565b611bb6565b61036061064c366004613ed7565b611c35565b61030661065f366004613ed7565b611c50565b600061066e611cf7565b61067a82600654611d39565b600655604080518082019091526002815261070760f31b6020820152909150828211156106c35760405162461bcd60e51b81526004016106ba9190614419565b60405180910390fd5b50600154604051637ee9914160e11b8152306004820152602481018390526001600160a01b039091169063fdd3228290604401600060405180830381600087803b15801561071057600080fd5b505af1158015610724573d6000803e3d6000fd5b5050600654604080518681526020810186905280820192909252517f18c675fa7ed56fd1568a92bfa0c5d6993152c61c09bc673f68c14f165e2820bb9350908190036060019150a1919050565b6001600160a01b038116600090815260036020526040812054806107985750600092915050565b60016107a7816201000061466a565b82166107b3919061466a565b6001901b9392505050565b6040805180820190915260028152611b9b60f11b60208201526000546107f4916001600160a01b03909116903390600190611e63565b6007805460ff191682151590811790915560405190815233907facaf4ee8e6a4949ca96787d73dfff5165ff2c555b2304b8517dc5396053add859060200160405180910390a250565b60606005541961085783600254600019600190911b011690565b1691506000825b801561088357600181161561087b578161087781614698565b9250505b60011c61085e565b508067ffffffffffffffff8111156108ab57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156108d4578160200160208202803683370190505b5091506000905080835b835183101561098a576001811615610975576002828154811061091157634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031684848151811061094f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528261097181614698565b9350505b610980826001614576565b915060011c6108de565b505050919050565b6000806109a9846109a38686611e8d565b42611ea5565b915091505b9250929050565b600080600954600160e01b900460ff1660058111156109e457634e487b7160e01b600052602160045260246000fd5b1415905090565b6001600160a01b038116600090815260086020908152604080832081516060810190925280546001600160e01b038116835284938493849390929091830190600160e01b900460ff166005811115610a5357634e487b7160e01b600052602160045260246000fd5b6005811115610a7257634e487b7160e01b600052602160045260246000fd5b81529054600160e81b900460ff166020909101529050600081602001516005811115610aae57634e487b7160e01b600052602160045260246000fd5b1415610b33576040805160608101909152600980546001600160e01b03811683526020830190600160e01b900460ff166005811115610afd57634e487b7160e01b600052602160045260246000fd5b6005811115610b1c57634e487b7160e01b600052602160045260246000fd5b81529054600160e81b900460ff1660209091015290505b60208101516040820151610b4d9060ff1662093a80614629565b915190945062ffffff90911692506001600160e01b031690505b9193909250565b60008211610bb75760405162461bcd60e51b81526020600482015260166024820152751b5a5b88185b5bdd5b9d081a5cc81c995c5d5a5c995960521b60448201526064016106ba565b60008163ffffffff1611610c0d5760405162461bcd60e51b815260206004820152601960248201527f6c6f636b206475726174696f6e2069732072657175697265640000000000000060448201526064016106ba565b6001600160e01b03821115610c27576001600160e01b0391505b610c343360058385611f0b565b5050565b610c40611cf7565b838214610c835760405162461bcd60e51b81526020600482015260116024820152700dad2e6dac2e8c6d0cac840d8cadccee8d607b1b60448201526064016106ba565b60065460005b85811015610e0f576000610ccb888884818110610cb657634e487b7160e01b600052603260045260246000fd5b90506020020160208101906102ee9190613ed7565b905080610cea5760405162461bcd60e51b81526004016106ba9061446c565b878783818110610d0a57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d1f9190613ed7565b6001600160a01b0316634800df8c878785818110610d4d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610d629190614187565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b505050506000868684818110610dd857634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610ded9190614187565b61ffff161115610dfc57918217915b5080610e0781614698565b915050610c89565b5060068190556000198214610e2957610e2782610664565b505b505050505050565b610e39612038565b610e4483838361207a565b505050565b610e51612038565b6001600160a01b038116610e9e5760405162461bcd60e51b81526020600482015260146024820152731c995dd85c99081c1bdbdb081c995c5d5a5c995960621b60448201526064016106ba565b6001600160a01b03811660009081526003602052604090205480610ec0575050565b60006001610ed1816201000061466a565b8316610edd919061466a565b9050826001600160a01b031660028281548110610f0a57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614610f5e5760405162461bcd60e51b815260206004820152600f60248201526e1d5b995e1c1958dd1959081c1bdbdb608a1b60448201526064016106ba565b600060028281548110610f8157634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918516808252600383526040808320839055600580546001871b9081179091558151630746363d60e01b815291519094630746363d926004808201939182900301818787803b158015610ffb57600080fd5b505af115801561100f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103391906141c1565b90508015611105576001600160ff1b0381111561108b5760405162461bcd60e51b815260206004820152601660248201527532bc31b2b9b9b4bb32903232b0b63637b1b0ba34b7b760511b60448201526064016106ba565b6001546001600160a01b031663ab6de779866110a6846146d6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156110ec57600080fd5b505af1158015611100573d6000803e3d6000fd5b505050505b61110e856121a5565b846001600160a01b03167ff157e68e2245c70cbc79c5da7477f57616bf886825f65d57b9ff756847672e7b8360405161114991815260200190565b60405180910390a2505050505b50565b611167336001600080611f0b565b565b606060006002600554818054806020026020016040519081016040528092919081815260200182805480156111c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111a9575b50505050509150915091509091565b600080546001600160a01b03166111f657506001600160a01b0316301490565b61120382628000106121d3565b92915050565b60006001600160a01b03821661122157506000919050565b600080611233846109a3866000611e8d565b90925090506112428183614576565b949350505050565b6112526121eb565b61125e600160646145ff565b6112699060646145ff565b61ffff168161ffff1611156112b85760405162461bcd60e51b81526020600482015260156024820152740dad2dc40c4dedee6e840d2e640e8dede40d0d2ced605b1b60448201526064016106ba565b600c805461ffff60a01b1916600160a01b61ffff8416908102919091179091556040519081527fe6770ba09738c7d37f16c136778ec1630906e7f29695a18252b372702710119a906020015b60405180910390a150565b611317612038565b611167612203565b42821161136e5760405162461bcd60e51b815260206004820152601c60248201527f6675747572652074696d657374616d702069732072657175697265640000000060448201526064016106ba565b6001600160e01b03821115611388576001600160e01b0391505b610c343360048385611f0b565b6000611203826000611e8d565b6113aa612038565b600c80546001600160a01b0319166001600160a01b0384161790558080156113da57506001600160a01b03821615155b600c8054911515600160b01b0260ff60b01b199092169190911790555050565b611402612038565b6001600160a01b03811661144f5760405162461bcd60e51b81526020600482015260146024820152731c995dd85c99081c1bdbdb081c995c5d5a5c995960621b60448201526064016106ba565b6001600160a01b038116600090815260036020526040902054156114aa5760405162461bcd60e51b8152602060048201526012602482015271185b1c9958591e481c9959da5cdd195c995960721b60448201526064016106ba565b60025460ff10156114ee5760405162461bcd60e51b815260206004820152600e60248201526d746f6f206d616e7920706f6f6c7360901b60448201526064016106ba565b60028054600180820183557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace820180546001600160a01b0319166001600160a01b0386169081179091559254600084815260036020908152604080832093909355600680549490951b93841790945581516355f4f19760e01b815291519294909390926355f4f19792600480820193929182900301818787803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cc91906141c1565b90508015611692576001600160ff1b0381111561162b5760405162461bcd60e51b815260206004820152601760248201527f65786365737369766520707265616c6c6f636174696f6e00000000000000000060448201526064016106ba565b60015460405163ab6de77960e01b81526001600160a01b038581166004830152602482018490529091169063ab6de77990604401600060405180830381600087803b15801561167957600080fd5b505af115801561168d573d6000803e3d6000fd5b505050505b826001600160a01b03167f305b52f8a9bfeffbe21e94adcd199148b2e85fc8305a3d121d99d078937df7d9836040516116cd91815260200190565b60405180910390a2505050565b6116e2612038565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f2ad2d6dc5545aec43acc94f1b5c82f80a64f6c7ffae5eb863a8b3d02d1bf973e90602001611304565b336000908152600360205260408120549061174f60016201000061466a565b82169050806117705760405162461bcd60e51b81526004016106ba9061446c565b60109190911c9084156117ca576117898686848761226d565b60405185815233906001600160a01b038816907f311f9037d22bffc94ed576587a0a76d15ce73b8ae0536c7f6319477740d5e8f29060200160405180910390a35b60008360028111156117ec57634e487b7160e01b600052602160045260246000fd5b14156117f9575050611812565b610e298661180860018461466a565b6001901b8561242b565b50505050565b6001600160a01b03811660009081526003602052604081205460101c611203565b6000806118446124c7565b6001600160a01b0384166118915760405162461bcd60e51b81526020600482015260146024820152731c9958d95a5d995c881a5cc81c995c5d5a5c995960621b60448201526064016106ba565b6109a93361189f3386611e8d565b86612505565b6000806118b06124c7565b6118c5336118bf336000611e8d565b33612505565b915091509091565b6118d56121eb565b600a546001600160a01b03838116911614156119335760405162461bcd60e51b815260206004820152601960248201527f666163746f7220666f722074686520626f6f737420706f6f6c0000000000000060448201526064016106ba565b610c34828263ffffffff16612589565b6003600080600061195384612646565b92509250925080611a2f576010849055604051635c9fcd8560e11b81526210000060048201526000906001600160a01b0387169063b93f9b0a9060240160206040518083038186803b1580156119a857600080fd5b505afa1580156119bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e09190613ef3565b90506001600160a01b0381166119f557600080fd5b611a288682600080546001600160a01b039384166001600160a01b03199182161790915560018054929093169116179055565b50600f8490555b81611a3f57600f83905560006010555b5050505050565b611156336002836000611f0b565b611167336000806000611f0b565b611a6a612038565b600c8054911515600160b81b0260ff60b81b19909216919091179055565b600080546001600160a01b0316611aa857506001600160a01b0316301490565b61120382628000086121d3565b611af46040518060c0016040528060008152602001600081526020016000815260200160008152602001600063ffffffff168152602001606081525090565b4263ffffffff168263ffffffff161015611b0d57600080fd5b611b2283611b1c8560006128bd565b8461291e565b9392505050565b60008211611b725760405162461bcd60e51b81526020600482015260166024820152751b585e08185b5bdd5b9d081a5cc81c995c5d5a5c995960521b60448201526064016106ba565b6001600160e01b03821115611b8c576001600160e01b0391505b610c343360038385611f0b565b611ba33382611e8d565b3360009081526004602052604090205550565b611bbe612038565b815b80156118125780611bd081614681565b9150506000848483818110611bf557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611c0a9190613ed7565b9050611c168184611e8d565b6001600160a01b03909116600090815260046020526040902055611bc0565b600080611c47836109a3856000611e8d565b91509150915091565b611c58612038565b600a546001600160a01b0382811691161415611c715750565b600a546001600160a01b031615611c9957600a54611c99906001600160a01b03166000612589565b6001600160a01b038116611cb1576000600b55611cd7565b611cc081640200000000612589565b611cc981610771565b600b819055611cd757600080fd5b600a80546001600160a01b0383166001600160a01b031990911617905550565b611d00336111d6565b60405180604001604052806002815260200161383960f01b815250906111565760405162461bcd60e51b81526004016106ba9190614419565b600080600b5460001480611d575750600c54600160b81b900460ff16155b15611d6f57611d668484612f3a565b915091506109ae565b611d7e84600b54198516612f3a565b9350915083821015611dfd57600a546001600160a01b0316631bd5ad36611da5848761466a565b6040518263ffffffff1660e01b8152600401611dc391815260200190565b600060405180830381600087803b158015611ddd57600080fd5b505af1158015611df1573d6000803e3d6000fd5b50505050839150611e5c565b600a54604051630dead69b60e11b8152600060048201526001600160a01b0390911690631bd5ad3690602401600060405180830381600087803b158015611e4357600080fd5b505af1158015611e57573d6000803e3d6000fd5b505050505b5092909150565b611e6e84848461305b565b8190611a3f5760405162461bcd60e51b81526004016106ba9190614419565b6000600b5419611e9d84846128bd565b169392505050565b6000806001600160a01b038516611ef35760405162461bcd60e51b81526020600482015260126024820152711a1bdb19195c881a5cc81c995c5d5a5c995960721b60448201526064016106ba565b611efe858585613076565b915091505b935093915050565b6040518060600160405280826001600160e01b03168152602001846005811115611f4557634e487b7160e01b600052602160045260246000fd5b8152602001611f538461331d565b60ff1690526001600160a01b0385166000908152600860209081526040909120825181546001600160e01b039091166001600160e01b031982168117835592840151919283916001600160e81b03191617600160e01b836005811115611fc957634e487b7160e01b600052602160045260246000fd5b0217905550604091820151815460ff909116600160e81b0260ff60e81b19909116179055516001600160a01b038516907f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda53589061202a908690869086906143c1565b60405180910390a250505050565b61204133611a88565b60405180604001604052806002815260200161383160f01b815250906111565760405162461bcd60e51b81526004016106ba9190614419565b600083600581111561209c57634e487b7160e01b600052602160045260246000fd5b116120a657600080fd5b6040518060600160405280826001600160e01b031681526020018460058111156120e057634e487b7160e01b600052602160045260246000fd5b81526020016120ee8461331d565b60ff1690528051600980546001600160e01b031981166001600160e01b0390931692831782556020840151919283916001600160e81b03191617600160e01b83600581111561214d57634e487b7160e01b600052602160045260246000fd5b0217905550604091820151815460ff909116600160e81b0260ff60e81b199091161790555130907f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda5358906116cd908690869086906143c1565b600a546001600160a01b038281169116141561115657600a80546001600160a01b03191690556000600b5550565b60008054611b22906001600160a01b0316848461305b565b6121f433611a88565b80611d005750611d00336111d6565b60408051606081018252600080825260208201819052908201819052600980546001600160f01b0319169055905130917f26369aeb03f92f843d03b2ab158aa7d61ff073ae0b9523458b923bdefdda5358916122639190819081906143c1565b60405180910390a2565b8261227757611812565b6402000000008214156122b7576001600160a01b0384166000908152600d6020526040812080548592906122ac908490614576565b909155506118129050565b6001600160a01b0384166000908152600e6020908152604091829020825160608101845290546001600160701b038082168352600160701b82041692820192909252600160e01b90910463ffffffff169181018290529061231f5763ffffffff421660408201525b80516000906123389086906001600160701b0316614576565b90506001600160701b0381111561234e57600080fd5b6001600160701b038116825283156123b7576123738563ffffffff808716906133f316565b82602001516001600160701b03160190506001600160701b0380168110156123a9576001600160701b03811660208301526123b7565b6001600160701b0360208301525b506001600160a01b0385166000908152600e60209081526040918290208351815492850151939094015163ffffffff16600160e01b026001600160e01b036001600160701b03948516600160701b026001600160e01b03199094169490951693909317919091179290921617905550505050565b6124368383836134e8565b600281600281111561245857634e487b7160e01b600052602160045260246000fd5b1415612467576124678361352d565b6001600160a01b0383166000908152600e6020526040902054600160e01b900463ffffffff16610e445750506001600160a01b03166000908152600e6020526040902080546001600160e01b0316600160e01b4263ffffffff1602179055565b600754604080518082019091526002815261393160f01b60208201529060ff16156111565760405162461bcd60e51b81526004016106ba9190614419565b600080612512858561353b565b90925090508115611f035761252885848461392f565b6125329082614576565b9050826001600160a01b0316856001600160a01b03167f9310ccfcb8de723f578a9e4282ea9f521f05ae40dc08f3068dfad528a65ee3c78460405161257991815260200190565b60405180910390a3935093915050565b6001600160f01b038111156125d65760405162461bcd60e51b815260206004820152601360248201527265786365737369766520706f6f6c20696e666f60681b60448201526064016106ba565b60006125e660016201000061466a565b6001600160a01b0384166000908152600360205260409020541690508061261f5760405162461bcd60e51b81526004016106ba9061446c565b6001600160a01b03909216600090815260036020526040902060109190911b919091179055565b6003600080612658600160001961466a565b83106126a65760405162461bcd60e51b815260206004820152601960248201527f696e76616c696420636f6e7472616374207265766973696f6e0000000000000060448201526064016106ba565b600084116126f65760405162461bcd60e51b815260206004820152601e60248201527f696e636f727265637420696e697469616c697a6572207265766973696f6e000060448201526064016106ba565b828411156127465760405162461bcd60e51b815260206004820152601e60248201527f696e636f6e73697374656e7420636f6e7472616374207265766973696f6e000060448201526064016106ba565b612753600160001961466a565b600f5410156127cf57600060105411801561276f575082600f54105b9150818061277c5750303b155b806127885750600f5483115b6127ca5760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016106ba565b61283f565b6127dc600160001961466a565b600f541480156127eb5750303b155b61282d5760405162461bcd60e51b81526020600482015260136024820152721a5b9a5d1a585b1a5e995c88189b1bd8dad959606a1b60448201526064016106ba565b6000600f556010546000199350151591505b81156128965783601054116128965760405162461bcd60e51b815260206004820152601f60248201527f696e636f7272656374206f72646572206f6620696e697469616c697a6572730060448201526064016106ba565b600f5484116128b35781156128ab5760016010555b506001610b67565b5060009193909250565b6000816128e957506005546001600160a01b038316600090815260046020526040902054901916611203565b6005546001600160a01b0384166000908152600460205260409020546002549119916001901b60001901841617169392505050565b61295d6040518060c0016040528060008152602001600081526020016000815260200160008152602001600063ffffffff168152602001606081525090565b6001600160a01b0384166000908152600e6020908152604080832081516060808201845291546001600160701b03808216808452600160701b8304909116958301869052600160e01b90910463ffffffff16938201849052608087019390935290850192909252835290845b80156129ee5760018116156129e657816129e281614698565b9250505b60011c6129c9565b508067ffffffffffffffff811115612a1657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612a7d57816020015b612a6a6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b815260200190600190039081612a345790505b5060a0840152506000805b8515612ebc5760018616612a9b57612ea3565b6000612aa682613988565b604051638abc37d360e01b81526001600160a01b038a8116600483015263ffffffff89166024830152919250600091829190841690638abc37d39060440160606040518083038186803b158015612afc57600080fd5b505afa158015612b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3491906141d9565b8960a001518881518110612b5857634e487b7160e01b600052603260045260246000fd5b60200260200101516060018163ffffffff1663ffffffff16815250819350829450505050808760a001518681518110612ba157634e487b7160e01b600052603260045260246000fd5b602002602001015160200181815250508087602001818151612bc39190614576565b90525060a0870151805184919087908110612bee57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001906001600160a01b031690816001600160a01b031681525050818760a001518681518110612c3757634e487b7160e01b600052603260045260246000fd5b602090810291909101015152600a546001600160a01b0384811691161415612d5c5760018760a001518681518110612c7f57634e487b7160e01b600052603260045260246000fd5b602002602001015160a001906