@augmentedfinance/protocol-v1
Version:
Augmented Protocol smart contracts
1,602 lines • 79.4 kB
JavaScript
"use strict";
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockDepositStakeTokenFactory = void 0;
const contracts_1 = require("@ethersproject/contracts");
class MockDepositStakeTokenFactory 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.MockDepositStakeTokenFactory = MockDepositStakeTokenFactory;
const _abi = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "spender",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "Approval",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint16",
name: "",
type: "uint16",
},
],
name: "BaselinePercentageUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "account",
type: "address",
},
{
indexed: false,
internalType: "uint32",
name: "at",
type: "uint32",
},
],
name: "CooldownStarted",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint32",
name: "cooldownPeriod",
type: "uint32",
},
{
indexed: false,
internalType: "uint32",
name: "unstakePeriod",
type: "uint32",
},
],
name: "CooldownUpdated",
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: [
{
components: [
{
internalType: "contract IMarketAccessController",
name: "stakeController",
type: "address",
},
{
internalType: "contract IERC20",
name: "stakedToken",
type: "address",
},
{
internalType: "contract IUnderlyingStrategy",
name: "strategy",
type: "address",
},
{
internalType: "uint32",
name: "cooldownPeriod",
type: "uint32",
},
{
internalType: "uint32",
name: "unstakePeriod",
type: "uint32",
},
{
internalType: "uint16",
name: "maxSlashable",
type: "uint16",
},
{
internalType: "uint8",
name: "stakedTokenDecimals",
type: "uint8",
},
],
indexed: false,
internalType: "struct StakeTokenConfig",
name: "params",
type: "tuple",
},
{
indexed: false,
internalType: "string",
name: "tokenName",
type: "string",
},
{
indexed: false,
internalType: "string",
name: "tokenSymbol",
type: "string",
},
],
name: "Initialized",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint16",
name: "maxSlash",
type: "uint16",
},
],
name: "MaxSlashUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "provider",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "token",
type: "address",
},
],
name: "ProviderAdded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "provider",
type: "address",
},
],
name: "ProviderRemoved",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint256",
name: "rate",
type: "uint256",
},
],
name: "RateUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "bool",
name: "redeemable",
type: "bool",
},
],
name: "RedeemableUpdated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "underlyingAmount",
type: "uint256",
},
],
name: "Redeemed",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "totalBeforeSlash",
type: "uint256",
},
],
name: "Slashed",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
indexed: true,
internalType: "uint256",
name: "referal",
type: "uint256",
},
],
name: "Staked",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "Transfer",
type: "event",
},
{
inputs: [],
name: "COOLDOWN_PERIOD",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "DOMAIN_SEPARATOR",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "EIP712_REVISION",
outputs: [
{
internalType: "bytes",
name: "",
type: "bytes",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "PERMIT_TYPEHASH",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [],
name: "UNDERLYING_ASSET_ADDRESS",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "UNSTAKE_PERIOD",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
name: "_nonces",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
{
internalType: "address",
name: "",
type: "address",
},
],
name: "addRewardProvider",
outputs: [],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
{
internalType: "address",
name: "spender",
type: "address",
},
],
name: "allowance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "approve",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "attachedToRewardController",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "balanceAndCooldownOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
{
internalType: "uint32",
name: "windowStart",
type: "uint32",
},
{
internalType: "uint32",
name: "windowEnd",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "balanceOfUnderlying",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
{
internalType: "uint32",
name: "at",
type: "uint32",
},
],
name: "calcRewardFor",
outputs: [
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "uint256",
name: "",
type: "uint256",
},
{
internalType: "uint32",
name: "since",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "claimRewardFor",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
{
internalType: "uint32",
name: "",
type: "uint32",
},
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
{
internalType: "uint256",
name: "baseAmount",
type: "uint256",
},
{
internalType: "uint256",
name: "limit",
type: "uint256",
},
{
internalType: "uint16",
name: "minPct",
type: "uint16",
},
],
name: "claimRewardWithLimitFor",
outputs: [
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "uint32",
name: "since",
type: "uint32",
},
{
internalType: "bool",
name: "keepPull",
type: "bool",
},
{
internalType: "uint256",
name: "newLimit",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "cooldown",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "decimals",
outputs: [
{
internalType: "uint8",
name: "",
type: "uint8",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "subtractedValue",
type: "uint256",
},
],
name: "decreaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "detachedFromRewardController",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "exchangeRate",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getBaselinePercentage",
outputs: [
{
internalType: "uint16",
name: "",
type: "uint16",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "holder",
type: "address",
},
],
name: "getCooldown",
outputs: [
{
internalType: "uint32",
name: "",
type: "uint32",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getIncentivesController",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getMaxSlashablePercentage",
outputs: [
{
internalType: "uint16",
name: "",
type: "uint16",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getOwner",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getPoolName",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getRate",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getRewardController",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "getScaleIndex",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "addedValue",
type: "uint256",
},
],
name: "increaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "contract IRewardController",
name: "controller",
type: "address",
},
{
internalType: "string",
name: "poolName",
type: "string",
},
{
internalType: "uint16",
name: "baselinePercentage",
type: "uint16",
},
],
internalType: "struct IInitializableRewardPool.InitRewardPoolData",
name: "config",
type: "tuple",
},
],
name: "initializeRewardPool",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "contract IMarketAccessController",
name: "stakeController",
type: "address",
},
{
internalType: "contract IERC20",
name: "stakedToken",
type: "address",
},
{
internalType: "contract IUnderlyingStrategy",
name: "strategy",
type: "address",
},
{
internalType: "uint32",
name: "cooldownPeriod",
type: "uint32",
},
{
internalType: "uint32",
name: "unstakePeriod",
type: "uint32",
},
{
internalType: "uint16",
name: "maxSlashable",
type: "uint16",
},
{
internalType: "uint8",
name: "stakedTokenDecimals",
type: "uint8",
},
],
internalType: "struct StakeTokenConfig",
name: "params",
type: "tuple",
},
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "string",
name: "symbol",
type: "string",
},
],
name: "initializeStakeToken",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "initializedRewardPoolWith",
outputs: [
{
components: [
{
internalType: "contract IRewardController",
name: "controller",
type: "address",
},
{
internalType: "string",
name: "poolName",
type: "string",
},
{
internalType: "uint16",
name: "baselinePercentage",
type: "uint16",
},
],
internalType: "struct IInitializableRewardPool.InitRewardPoolData",
name: "",
type: "tuple",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "initializedStakeTokenWith",
outputs: [
{
components: [
{
internalType: "contract IMarketAccessController",
name: "stakeController",
type: "address",
},
{
internalType: "contract IERC20",
name: "stakedToken",
type: "address",
},
{
internalType: "contract IUnderlyingStrategy",
name: "strategy",
type: "address",
},
{
internalType: "uint32",
name: "cooldownPeriod",
type: "uint32",
},
{
internalType: "uint32",
name: "unstakePeriod",
type: "uint32",
},
{
internalType: "uint16",
name: "maxSlashable",
type: "uint16",
},
{
internalType: "uint8",
name: "stakedTokenDecimals",
type: "uint8",
},
],
internalType: "struct StakeTokenConfig",
name: "params",
type: "tuple",
},
{
internalType: "string",
name: "name_",
type: "string",
},
{
internalType: "string",
name: "symbol_",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "isPaused",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "isRedeemable",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "name",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "addr",
type: "address",
},
],
name: "nonces",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
{
internalType: "address",
name: "spender",
type: "address",
},
{
internalType: "uint256",
name: "value",
type: "uint256",
},
{
internalType: "uint256",
name: "deadline",
type: "uint256",
},
{
internalType: "uint8",
name: "v",
type: "uint8",
},
{
internalType: "bytes32",
name: "r",
type: "bytes32",
},
{
internalType: "bytes32",
name: "s",
type: "bytes32",
},
],
name: "permit",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "stakeAmount",
type: "uint256",
},
],
name: "redeem",
outputs: [
{
internalType: "uint256",
name: "stakeAmount_",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "underlyingAmount",
type: "uint256",
},
],
name: "redeemUnderlying",
outputs: [
{
internalType: "uint256",
name: "underlyingAmount_",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "provider",
type: "address",
},
],
name: "removeRewardProvider",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "account",
type: "address",
},
],
name: "rewardedBalanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint16",
name: "factor",
type: "uint16",
},
],
name: "setBaselinePercentage",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint32",
name: "cooldownPeriod",
type: "uint32",
},
{
internalType: "uint32",
name: "unstakePeriod",
type: "uint32",
},
],
name: "setCooldown",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
name: "setIncentivesController",
outputs: [],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "uint16",
name: "slashPct",
type: "uint16",
},
],
name: "setMaxSlashablePercentage",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bool",
name: "paused",
type: "bool",
},
],
name: "setPaused",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "bool",
name: "redeemable",
type: "bool",
},
],
name: "setRedeemable",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "destination",
type: "address",
},
{
internalType: "uint256",
name: "minAmount",
type: "uint256",
},
{
internalType: "uint256",
name: "maxAmount",
type: "uint256",
},
],
name: "slashUnderlying",
outputs: [
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
{
internalType: "bool",
name: "erc20Transfer",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "to",
type: "address",
},
{
internalType: "uint256",
name: "underlyingAmount",
type: "uint256",
},
{
internalType: "uint256",
name: "referral",
type: "uint256",
},
],
name: "stake",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "stub",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "symbol",
outputs: [
{
internalType: "string",
name: "",
type: "string",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "totalSupply",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "recipient",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "transfer",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "sender",
type: "address",
},
{
internalType: "address",
name: "recipient",
type: "address",
},
{
internalType: "uint256",
name: "amount",
type: "uint256",
},
],
name: "transferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint256",
name: "baseline",
type: "uint256",
},
],
name: "updateBaseline",
outputs: [
{
internalType: "bool",
name: "hasBaseline",
type: "bool",
},
{
internalType: "uint256",
name: "appliedRate",
type: "uint256",
},
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address",
},
{
internalType: "uint256",
name: "subtractedValue",
type: "uint256",
},
],
name: "useAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "nonpayable",
type: "function",
},
];
const _bytecode = "0x6080604052600080546001600160a01b0316676765c793fa10079d60bb1b1790556001805463ffffffff60301b191666780000000000001781556200004790600019620008db565b60105560006011553480156200005c57600080fd5b5060408051602080820183526000808352835191820190935282815282546001600160a01b031916835590918080808062000097816200011b565b50620000bb83838360405180602001604052806000815250620001c660201b60201c565b50508351620000d39150600890602086019062000790565b508151620000e990600990602085019062000790565b50600a805460ff191660ff92909216919091179055506200010b90506200020f565b62000115620002bd565b62000986565b600080546001600160a01b0316676765c793fa10079d60bb1b179055600262000147600160646200088c565b620001549060646200088c565b62000160919062000851565b61ffff168161ffff1610620001b15760026200017f600160646200088c565b6200018c9060646200088c565b62000198919062000851565b6001805461ffff191661ffff9290921691909117905550565b6001805461ffff191661ffff83161790555b50565b600780546001600160a01b0319166001600160a01b03861617905561ffff821615620001f757620001f78262000397565b82156200020957620002098362000478565b50505050565b467f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200023b620004be565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f198184030181529190528051602090910120600c5550565b303b15620003125760405162461bcd60e51b815260206004820152601460248201527f6f6e6c7920666f7220636f6e7374727563746f7200000000000000000000000060448201526064015b60405180910390fd5b620003216001600019620008db565b601054141562000332576000601055565b60105415620003955760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c792062652063616c6c6564206265666f726520696e697469616044820152676c697a657228732960c01b606482015260840162000309565b565b620003a1620004da565b61ffff8116620003bd57620003b7600062000478565b62000421565b620003cb600160646200088c565b620003d89060646200088c565b61ffff168161ffff161115620004215760405162461bcd60e51b815260206004820152600d60248201526c696c6c6567616c2076616c756560981b604482015260640162000309565b6007805461ffff60a01b1916600160a01b61ffff8416908102919091179091556040519081527fa4a0021d5a3e887ed39092287593218ba56daabb698755739666df81df918409906020015b60405180910390a150565b62000482620004da565b6200048d8162000534565b6040518181527fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b906020016200046d565b6060620004d56200054a60201b6200090f1760201c565b905090565b6007546001600160a01b0316620003955760405162461bcd60e51b815260206004820152601660248201527f636f6e74726f6c6c657220697320726571756972656400000000000000000000604482015260640162000309565b620001c381620005e460201b620017681760201c565b6060600880546200055b906200091d565b80601f016020809104026020016040519081016040528092919081815260200182805462000589906200091d565b8015620005da5780601f10620005ae57610100808354040283529160200191620005da565b820191906000526020600020905b815481529060010190602001808311620005bc57829003601f168201915b5050505050905090565b620001c381426004546001600160e01b031682141562000602575050565b6001600160e01b038211156200061757600080fd5b60045463ffffffff600160e01b9091048116908216811462000684576004546001600160e01b0390811690620006509084906200068916565b600480546001600160e01b0319166001600160e01b0386811691909117909155620002099082811690849086906200070816565b505050565b60045463ffffffff600160e01b90910481169082161015620006e35760405162461bcd60e51b8152602060048201526012602482015271726574726f6163746976652075706461746560701b604482015260640162000309565b6004805463ffffffff909216600160e01b026001600160e01b03909216919091179055565b6006546200071557505050565b8163ffffffff168163ffffffff1614620006845760065462000747906ec097ce7bc90715b34b9f100000000062000875565b620007539084620008b9565b9250620007618282620008f5565b620007739063ffffffff1684620008b9565b6005600082825462000786919062000836565b9091555050505050565b8280546200079e906200091d565b90600052602060002090601f016020900481019282620007c257600085556200080d565b82601f10620007dd57805160ff19168380011785556200080d565b828001600101855582156200080d579182015b828111156200080d578251825591602001919060010190620007f0565b506200081b9291506200081f565b5090565b5b808211156200081b576000815560010162000820565b600082198211156200084c576200084c6200095a565b500190565b600061ffff8084168062000869576200086962000970565b92169190910492915050565b60008262000887576200088762000970565b500490565b600061ffff80831681851681830481118215151615620008b057620008b06200095a565b02949350505050565b6000816000190483118215151615620008d657620008d66200095a565b500290565b600082821015620008f057620008f06200095a565b500390565b600063ffffffff838116908316818110156200091557620009156200095a565b039392505050565b600181811c908216806200093257607f821691505b602082108114156200095457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6143b480620009966000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c806375d26413116101f4578063a8346a8c1161011a578063d2993983116100ad578063dde43cba1161007c578063dde43cba146108b4578063e655dbd8146108bb578063f34d96da146108ce578063ff85a2ba146108da57600080fd5b8063d29939831461084d578063d354f24014610855578063d505accf14610868578063dd62ed3e1461087b57600080fd5b8063b16a19de116100e9578063b16a19de146107f2578063b187bd2614610808578063b6fe2e9c1461081a578063b9844d8d1461082d57600080fd5b8063a8346a8c14610799578063a9059cbb146107d7578063a9dd770214610654578063af920582146107ea57600080fd5b8063893d20e8116101925780639629417811610161578063962941781461076b57806396dbab81146104905780639cfa77681461077e578063a457c2d71461078657600080fd5b8063893d20e81461070d5780638abc37d31461071e57806392efda791461075257806395d89b411461076357600080fd5b806379b57862116101ce57806379b57862146106a957806379d08c34146106be5780637ecebe00146106d15780637fcea80e146106fa57600080fd5b806375d26413146106675780637816037614610681578063787a08a6146106a157600080fd5b8063313ce567116102d95780633af9e6691161027757806355f4f1971161024657806355f4f19714610630578063679aefce146106385780636e99d52f1461064057806370a082311461065457600080fd5b80633af9e669146105e05780633ba0b9a9146105f35780634800df8c146105fb5780634d25c4f11461060e57600080fd5b806338907118116102b3578063389071181461057d578063395093511461059057806339b84ecf146105a35780633a7d4089146105cb57600080fd5b8063313ce5671461054c5780633644e5151461056157806337a926261461056a57600080fd5b806316195210116103515780631e9a6950116103205780631e9a6950146104e857806323b872dd146104fb57806326cc73a41461050e57806330adf81f1461052557600080fd5b8063161952101461049257806316c38b3c146104ba57806318160ddd146104cd5780631dd0f483146104d557600080fd5b80630c51b88f1161038d5780630c51b88f1461040b5780630ca2103d1461041e578063115eb1cf1461044857806314e613a81461047d57600080fd5b806306fdde03146103b45780630746363d146103d2578063095ea7b3146103e8575b600080fd5b6103bc61090f565b6040516103c99190613f90565b60405180910390f35b6103da6109a1565b6040519081526020016103c9565b6103fb6103f6366004613bc1565b6109b6565b60405190151581526020016103c9565b6103da610419366004613bec565b6109cd565b61043161042c366004613e67565b6109e3565b6040805192151583526020830191909152016103c9565b61045b610456366004613ac0565b610a40565b6040805193845263ffffffff92831660208501529116908201526060016103c9565b61049061048b366004613d0b565b610aba565b005b6104a56104a0366004613bec565b610bda565b604080519283529015156020830152016103c9565b6104906104c8366004613c9b565b610cc3565b6103da610d35565b6104906104e3366004613ac0565b610d40565b6103da6104f6366004613bc1565b610d4b565b6103fb610509366004613b14565b610da7565b610516610dc8565b6040516103c9939291906140c9565b6103da7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600a5460405160ff90911681526020016103c9565b6103da600c5481565b610490610578366004613cd3565b610e52565b61049061058b366004613c9b565b610f3d565b6103fb61059e366004613bc1565b610fc1565b6105b66105b1366004613ac0565b610ffd565b60405163ffffffff90911681526020016103c9565b6105d3611012565b6040516103c99190613fa3565b6103da6105ee366004613ac0565b61109b565b6103da6110c1565b610490610609366004613e4d565b6110e8565b600754600160a01b900461ffff165b60405161ffff90911681526020016103c9565b6103da6110f9565b6103da611108565b60015462010000900463ffffffff166103da565b6103da610662366004613ac0565b611112565b305b6040516001600160a01b0390911681526020016103c9565b6103bc604051806040016040528060018152602001603160f81b81525081565b61049061112d565b600154600160301b900463ffffffff166103da565b6104906106cc366004613e4d565b6111b5565b6103da6106df366004613ac0565b6001600160a01b03166000908152600d602052604090205490565b6103fb610708366004613bc1565b61129a565b6000546001600160a01b0316610669565b61073161072c366004613c67565b6112c0565b60408051938452602084019290925263ffffffff16908201526060016103c9565b6007546001600160a01b0316610669565b6103bc6112f9565b6103da610779366004613bc1565b611308565b6103da611377565b6103fb610794366004613bc1565b6113fb565b6107ac6107a7366004613c20565b611421565b6040805194855263ffffffff90931660208501529015159183019190915260608201526080016103c9565b6103fb6107e5366004613bc1565b61144d565b6103fb61145a565b600e5461010090046001600160a01b0316610669565b600754600160b01b900460ff166103fb565b610490610828366004613adc565b61147d565b6103da61083b366004613ac0565b600d6020526000908152604090205481565b6103bc611491565b610490610863366004613e97565b61149b565b610490610876366004613b54565b6114de565b6103da610889366004613adc565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b60016103da565b6104906108c9366004613ac0565b611705565b60015461ffff1661061d565b6108ed6108e8366004613ac0565b611745565b6040805193845263ffffffff90921660208401521515908201526060016103c9565b60606008805461091e906142ad565b80601f016020809104026020016040519081016040528092919081815260200182805461094a906142ad565b80156109975780601f1061096c57610100808354040283529160200191610997565b820191906000526020600020905b81548152906001019060200180831161097a57829003601f168201915b5050505050905090565b60006109ab611772565b50600090565b905090565b60006109c33384846117b9565b5060015b92915050565b60006109db338585856118de565b949350505050565b6000806109ee611772565b600754600160a01b900461ffff16610a13576000610a0a611a79565b91509150915091565b600754610a2c908490600160a01b900461ffff16611a8d565b9050610a3781611b89565b60019150915091565b6000806000610a4e84610ffd565b915063ffffffff821615610aa75760015462010000900463ffffffff16610a7590836141cb565b6001549092506