aave-protocol-v2/types/ATokenFactory.ts

899 lines
40 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import { TransactionOverrides } from ".";
import { AToken } from "./AToken";
export class ATokenFactory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
_pool: string,
_underlyingAssetAddress: string,
_tokenName: string,
_tokenSymbol: string,
overrides?: TransactionOverrides
): Promise<AToken> {
return super.deploy(
_pool,
_underlyingAssetAddress,
_tokenName,
_tokenSymbol,
overrides
) as Promise<AToken>;
}
getDeployTransaction(
_pool: string,
_underlyingAssetAddress: string,
_tokenName: string,
_tokenSymbol: string,
overrides?: TransactionOverrides
): UnsignedTransaction {
return super.getDeployTransaction(
_pool,
_underlyingAssetAddress,
_tokenName,
_tokenSymbol,
overrides
);
}
attach(address: string): AToken {
return super.attach(address) as AToken;
}
connect(signer: Signer): ATokenFactory {
return super.connect(signer) as ATokenFactory;
}
static connect(address: string, signerOrProvider: Signer | Provider): AToken {
return new Contract(address, _abi, signerOrProvider) as AToken;
}
}
const _abi = [
{
inputs: [
{
internalType: "contract LendingPool",
name: "_pool",
type: "address"
},
{
internalType: "address",
name: "_underlyingAssetAddress",
type: "address"
},
{
internalType: "string",
name: "_tokenName",
type: "string"
},
{
internalType: "string",
name: "_tokenSymbol",
type: "string"
}
],
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: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toIndex",
type: "uint256"
}
],
name: "BalanceTransfer",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "BurnOnLiquidation",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
}
],
name: "InterestRedirectionAllowanceChanged",
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: "_redirectedBalance",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "InterestStreamRedirected",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "MintOnDeposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "Redeem",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_targetAddress",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_targetBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_targetIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceAdded",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceRemoved",
type: "uint256"
}
],
name: "RedirectedBalanceUpdated",
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: "ATOKEN_REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "UINT_MAX_VALUE",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "allowInterestRedirectionTo",
outputs: [],
stateMutability: "nonpayable",
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: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_account",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "burnOnLiquidation",
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: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getInterestRedirectionAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getRedirectedBalance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserIndex",
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: [
{
internalType: "uint8",
name: "_underlyingAssetDecimals",
type: "uint8"
},
{
internalType: "string",
name: "_tokenName",
type: "string"
},
{
internalType: "string",
name: "_tokenSymbol",
type: "string"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "isTransferAllowed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_account",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "mintOnDeposit",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "name",
outputs: [
{
internalType: "string",
name: "",
type: "string"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "principalBalanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "redeem",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStream",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStreamOf",
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: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "transferOnLiquidation",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_target",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "transferUnderlyingTo",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "underlyingAssetAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
stateMutability: "payable",
type: "receive"
}
];
const _bytecode =
"0x60c0604052600080553480156200001557600080fd5b506040516200300338038062003003833981810160405260808110156200003b57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006757600080fd5b9083019060208201858111156200007d57600080fd5b82516401000000008111828201881017156200009857600080fd5b82525081516020918201929091019080838360005b83811015620000c7578181015183820152602001620000ad565b50505050905090810190601f168015620000f55780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011957600080fd5b9083019060208201858111156200012f57600080fd5b82516401000000008111828201881017156200014a57600080fd5b82525081516020918201929091019080838360005b83811015620001795781810151838201526020016200015f565b50505050905090810190601f168015620001a75780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001c79060379060208501906200020e565b508051620001dd9060389060208401906200020e565b50506039805460ff191660121790555050506001600160601b0319606092831b811660a052911b16608052620002b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025157805160ff191683800117855562000281565b8280016001018555821562000281579182015b828111156200028157825182559160200191906001019062000264565b506200028f92915062000293565b5090565b620002b091905b808211156200028f57600081556001016200029a565b90565b60805160601c60a05160601c612cdb6200032860003980610a705280610d8a5280610ebd5280610fad5280611108528061143952806115a15280611b3452806120425250806101c55280610a9f5280610f265280610f7152806110db52806114605280611b6352806120715250612cdb6000f3fe6080604052600436106101bb5760003560e01c80634efecaa5116100ec578063a9059cbb1161008a578063db006a7511610064578063db006a75146107e5578063dd62ed3e1461080f578063ee9907a41461084a578063f866c3191461087d5761022f565b8063a9059cbb14610764578063c634dfaa1461079d578063d0fc81d2146107d05761022f565b806389d1a0fc116100c657806389d1a0fc146106c857806394362e8b146106dd57806395d89b4114610716578063a457c2d71461072b5761022f565b80634efecaa5146106235780635eae177c1461065c57806370a08231146106955761022f565b806323b872dd11610159578063325a9b1311610133578063325a9b131461052757806339509351146105625780633edb7cb81461059b578063445e8010146105d45761022f565b806323b872dd146103e05780633118724e14610423578063313ce567146104fc5761022f565b80630e49072d116101955780630e49072d1461033257806312c87c2d1461036557806318160ddd146103985780631d51e7cf146103ad5761022f565b806306fdde0314610234578063095ea7b3146102be5780630bd7ad3b1461030b5761022f565b3661022f576101f27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108c0565b61022d5760405162461bcd60e51b8152600401808060200182810382526039815260200180612a106039913960400191505060405180910390fd5b005b600080fd5b34801561024057600080fd5b506102496108e6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028357818101518382015260200161026b565b50505050905090810190601f1680156102b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ca57600080fd5b506102f7600480360360408110156102e157600080fd5b506001600160a01b03813516906020013561097d565b604080519115158252519081900360200190f35b34801561031757600080fd5b5061032061099b565b60408051918252519081900360200190f35b34801561033e57600080fd5b5061022d6004803603602081101561035557600080fd5b50356001600160a01b03166109a0565b34801561037157600080fd5b5061022d6004803603602081101561038857600080fd5b50356001600160a01b03166109ad565b3480156103a457600080fd5b50610320610a4c565b3480156103b957600080fd5b50610320600480360360208110156103d057600080fd5b50356001600160a01b0316610b50565b3480156103ec57600080fd5b506102f76004803603606081101561040357600080fd5b506001600160a01b03813581169160208101359091169060400135610b6b565b34801561042f57600080fd5b5061022d6004803603606081101561044657600080fd5b60ff823516919081019060408101602082013564010000000081111561046b57600080fd5b82018360208201111561047d57600080fd5b8035906020019184600183028401116401000000008311171561049f57600080fd5b9193909290916020810190356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050610bf8565b34801561050857600080fd5b50610511610cbc565b6040805160ff9092168252519081900360200190f35b34801561053357600080fd5b5061022d6004803603604081101561054a57600080fd5b506001600160a01b0381358116916020013516610cc5565b34801561056e57600080fd5b506102f76004803603604081101561058557600080fd5b506001600160a01b038135169060200135610d2b565b3480156105a757600080fd5b5061022d600480360360408110156105be57600080fd5b506001600160a01b038135169060200135610d7f565b3480156105e057600080fd5b50610607600480360360208110156105f757600080fd5b50356001600160a01b0316610e92565b604080516001600160a01b039092168252519081900360200190f35b34801561062f57600080fd5b506103206004803603604081101561064657600080fd5b506001600160a01b038135169060200135610eb0565b34801561066857600080fd5b506102f76004803603604081101561067f57600080fd5b506001600160a01b038135169060200135610f59565b3480156106a157600080fd5b50610320600480360360208110156106b857600080fd5b50356001600160a01b0316611026565b3480156106d457600080fd5b506106076110d9565b3480156106e957600080fd5b5061022d6004803603604081101561070057600080fd5b506001600160a01b0381351690602001356110fd565b34801561072257600080fd5b506102496111f0565b34801561073757600080fd5b506102f76004803603604081101561074e57600080fd5b506001600160a01b038135169060200135611251565b34801561077057600080fd5b506102f76004803603604081101561078757600080fd5b506001600160a01b0381351690602001356112bf565b3480156107a957600080fd5b50610320600480360360208110156107c057600080fd5b50356001600160a01b03166112d3565b3480156107dc57600080fd5b506103206112de565b3480156107f157600080fd5b5061022d6004803603602081101561080857600080fd5b50356112e4565b34801561081b57600080fd5b506103206004803603604081101561083257600080fd5b506001600160a01b0381358116916020013516611550565b34801561085657600080fd5b506103206004803603602081101561086d57600080fd5b50356001600160a01b031661157b565b34801561088957600080fd5b5061022d600480360360608110156108a057600080fd5b506001600160a01b03813581169160208101359091169060400135611596565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109725780601f1061094757610100808354040283529160200191610972565b820191906000526020600020905b81548152906001019060200180831161095557829003601f168201915b505050505090505b90565b600061099161098a61160d565b8484611611565b5060015b92915050565b600181565b6109aa33826116fd565b50565b6001600160a01b0381163314156109f55760405162461bcd60e51b8152600401808060200182810382526025815260200180612a496025913960400191505060405180910390fd5b336000818152603d602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610a576118ec565b905080610a6857600091505061097a565b610b4a610b457f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d6020811015610b2e57600080fd5b5051610b39846118f2565b9063ffffffff61190816565b611953565b91505090565b6001600160a01b03166000908152603c602052604090205490565b6000610b7884848461196c565b610bee84610b8461160d565b610be985604051806060016040528060288152602001612a8f602891396001600160a01b038a16600090815260356020526040812090610bc261160d565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6119db16565b611611565b5060019392505050565b6000610c02611a72565b60015490915060ff1680610c195750610c19611a77565b80610c25575060005481115b610c605760405162461bcd60e51b815260040180806020018281038252602e815260200180612ae1602e913960400191505060405180910390fd5b60015460ff16158015610c7f576001805460ff19168117905560008290555b610c8b603787876128b8565b50610c98603885856128b8565b50610ca287611a7d565b8015610cb3576001805460ff191690555b50505050505050565b60395460ff1690565b6001600160a01b038281166000908152603d6020526040902054163314610d1d5760405162461bcd60e51b815260040180806020018281038252603a815260200180612c6c603a913960400191505060405180910390fd5b610d2782826116fd565b5050565b6000610991610d3861160d565b84610be98560356000610d4961160d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611a9316565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610de65760405162461bcd60e51b8152600401808060200182810382526032815260200180612c156032913960400191505060405180910390fd5b6000806000610df485611aed565b93509350935050610e06858386611c1f565b610e108585611d1f565b6000610e22848663ffffffff611e2716565b610e3257610e2f86611e69565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db868584610e6a5785610e6d565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152603b60205260409020541690565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f195760405162461bcd60e51b8152600401808060200182810382526032815260200180612c156032913960400191505060405180910390fd5b610f536001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848463ffffffff611f1b16565b50919050565b604080516376e9d61560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015284811660248301526044820184905291516000927f000000000000000000000000000000000000000000000000000000000000000016916376e9d615916064808301926020929190829003018186803b158015610ff357600080fd5b505afa158015611007573d6000803e3d6000fd5b505050506040513d602081101561101d57600080fd5b50519392505050565b60008061103283611ff4565b6001600160a01b0384166000908152603c60205260409020549091508115801561105a575080155b1561106a576000925050506108e1565b6001600160a01b038481166000908152603b6020526040902054166110bb576110b2816110a6866110a1868463ffffffff611a9316565b61200f565b9063ffffffff611e2716565b925050506108e1565b6110b26110cc826110a6878561200f565b839063ffffffff611a9316565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111645760405162461bcd60e51b8152600401808060200182810382526032815260200180612c156032913960400191505060405180910390fd5b60008061117084611aed565b9350935050506111948461118d8585611a9390919063ffffffff16565b6000611c1f565b61119e8484612117565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109725780601f1061094757610100808354040283529160200191610972565b600061099161125e61160d565b84610be985604051806060016040528060258152602001612c47602591396035600061128861160d565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6119db16565b60006109916112cc61160d565b848461196c565b600061099582611ff4565b60001981565b60008111611339576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b600080600061134733611aed565b9195509350915084905060001981141561135e5750825b8381111561139d5760405162461bcd60e51b81526004018080602001828103825260328152602001806129966032913960400191505060405180910390fd5b6113a73382610f59565b6113f8576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b611403338483611c1f565b61140d3382611d1f565b600061141f858363ffffffff611e2716565b61142f5761142c33611e69565b90505b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639895e3d87f000000000000000000000000000000000000000000000000000000000000000033856114918a8263ffffffff611e2716565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b15801561150057600080fd5b505af1158015611514573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684610e6a5786610e6d565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6001600160a01b03166000908152603a602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115fd5760405162461bcd60e51b8152600401808060200182810382526032815260200180612c156032913960400191505060405180910390fd5b611608838383612215565b505050565b3390565b6001600160a01b0383166116565760405162461bcd60e51b8152600401808060200182810382526024815260200180612bc76024913960400191505060405180910390fd5b6001600160a01b03821661169b5760405162461bcd60e51b81526004018080602001828103825260228152602001806129c86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038083166000908152603b6020526040902054811690821681141561175a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612ab7602a913960400191505060405180910390fd5b60008060008061176987611aed565b9350935093509350600083116117b05760405162461bcd60e51b8152600401808060200182810382526042815260200180612b0f6042913960600191505060405180910390fd5b6001600160a01b038516156117cb576117cb87600086611c1f565b866001600160a01b0316866001600160a01b03161415611857576001600160a01b0387166000818152603b6020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a35050505050610d27565b6001600160a01b038781166000908152603b6020526040812080546001600160a01b031916928916929092179091556118939088908590611c1f565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60365490565b600061099582633b9aca0063ffffffff61236416565b600061194c6b033b2e3c9fd0803ce800000061194061192d868663ffffffff61236416565b6b019d971e4fe8401e7400000090611a93565b9063ffffffff6123bd16565b9392505050565b6000631dcd650061194c633b9aca006119408386611a93565b82816119788282610f59565b6119c9576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b6119d4858585612215565b5050505050565b60008184841115611a6a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a2f578181015183820152602001611a17565b50505050905090810190601f168015611a5c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b60008282018381101561194c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000611afe86611026565b90506000808215611b3057611b1288611ff4565b9050611b24838263ffffffff611e2716565b9150611b308883612117565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611bc857600080fd5b505afa158015611bdc573d6000803e3d6000fd5b505050506040513d6020811015611bf257600080fd5b50516001600160a01b03999099166000908152603a60205260409020899055509791969095509350915050565b6001600160a01b038084166000908152603b60205260409020541680611c455750611608565b600080611c5183611aed565b6001600160a01b0387166000908152603c60205260409020549195509350611c8792508691506110a6908863ffffffff611a9316565b6001600160a01b038085166000908152603c6020908152604080832094909455603b90529190912054168015611cc357611cc384846000611c1f565b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b038216611d645760405162461bcd60e51b8152600401808060200182810382526021815260200180612b816021913960400191505060405180910390fd5b611d7082600083611608565b611db381604051806060016040528060228152602001612974602291396001600160a01b038516600090815260346020526040902054919063ffffffff6119db16565b6001600160a01b038316600090815260346020526040902055603654611ddf908263ffffffff611e2716565b6036556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061194c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506119db565b6001600160a01b0381166000818152603b6020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b0382166000908152603c6020526040902054611f1357506001600160a01b0381166000908152603a602052604081205560016108e1565b5060006108e1565b80611f2557611608565b611f2e836108c0565b15611fda576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114611f83576040519150601f19603f3d011682016040523d82523d6000602084013e611f88565b606091505b5050905080611fd4576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50611608565b6116086001600160a01b038416838363ffffffff6123ff16565b6001600160a01b031660009081526034602052604090205490565b600061194c610b45603a6000866001600160a01b03166001600160a01b031681526020019081526020016000205461210b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156120d657600080fd5b505afa1580156120ea573d6000803e3d6000fd5b505050506040513d602081101561210057600080fd5b5051610b39876118f2565b9063ffffffff61245116565b6001600160a01b038216612172576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61217e60008383611608565b603654612191908263ffffffff611a9316565b6036556001600160a01b0382166000908152603460205260409020546121bd908263ffffffff611a9316565b6001600160a01b03831660008181526034602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081116122545760405162461bcd60e51b8152600401808060200182810382526030815260200180612b516030913960400191505060405180910390fd5b600080600061226286611aed565b9350935093505060008061227587611aed565b935093505050612286888588611c1f565b61229a8761118d848963ffffffff611a9316565b6122a5888888612489565b60006122b7868863ffffffff611e2716565b1580156122d65750876001600160a01b0316896001600160a01b031614155b156122e7576122e489611e69565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde88988878661232a578961232d565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b60008261237357506000610995565b8282028284828161238057fe5b041461194c5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a6e6021913960400191505060405180910390fd5b600061194c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125f2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611608908490612657565b60006002820461248183611940612474876b033b2e3c9fd0803ce8000000612364565b849063ffffffff611a9316565b949350505050565b6001600160a01b0383166124ce5760405162461bcd60e51b8152600401808060200182810382526025815260200180612ba26025913960400191505060405180910390fd5b6001600160a01b0382166125135760405162461bcd60e51b81526004018080602001828103825260238152602001806129516023913960400191505060405180910390fd5b61251e838383611608565b612561816040518060600160405280602681526020016129ea602691396001600160a01b038616600090815260346020526040902054919063ffffffff6119db16565b6001600160a01b038085166000908152603460205260408082209390935590841681522054612596908263ffffffff611a9316565b6001600160a01b0380841660008181526034602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081836126415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611a2f578181015183820152602001611a17565b50600083858161264d57fe5b0495945050505050565b60606126ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127089092919063ffffffff16565b805190915015611608578080602001905160208110156126cb57600080fd5b50516116085760405162461bcd60e51b815260040180806020018281038252602a815260200180612beb602a913960400191505060405180910390fd5b60606124818484600085606061271d8561287f565b61276e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106127ad5780518252601f19909201916020918201910161278e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461280f576040519150601f19603f3d011682016040523d82523d6000602084013e612814565b606091505b509150915081156128285791506124819050565b8051156128385780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611a2f578181015183820152602001611a17565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612481575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128f95782800160ff19823516178555612926565b82800160010185558215612926579182015b8281111561292657823582559160200191906001019061290b565b50612932929150612936565b5090565b61097a91905b80821115612932576000815560010161293c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655472616e736665727320617265206f6e6c7920616c6c6f7765642069662074686520756e6465726c79696e6720617373657420697320455448557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220ca2db7253f82a50ee96c4009e456e51c85124486a580f45dbdc7511b414f2eff64736f6c63430006080033";