aave-protocol-v2/types/ATokenFactory.ts
2020-08-10 20:20:08 +02:00

899 lines
42 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 =
'0x60c0604052600080553480156200001557600080fd5b506040516200341338038062003413833981810160405260808110156200003b57600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006757600080fd5b9083019060208201858111156200007d57600080fd5b82516401000000008111828201881017156200009857600080fd5b82525081516020918201929091019080838360005b83811015620000c7578181015183820152602001620000ad565b50505050905090810190601f168015620000f55780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011957600080fd5b9083019060208201858111156200012f57600080fd5b82516401000000008111828201881017156200014a57600080fd5b82525081516020918201929091019080838360005b83811015620001795781810151838201526020016200015f565b50505050905090810190601f168015620001a75780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001c79060379060208501906200020e565b508051620001dd9060389060208401906200020e565b50506039805460ff191660121790555050506001600160601b0319606092831b811660a052911b16608052620002b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025157805160ff191683800117855562000281565b8280016001018555821562000281579182015b828111156200028157825182559160200191906001019062000264565b506200028f92915062000293565b5090565b620002b091905b808211156200028f57600081556001016200029a565b90565b60805160601c60a05160601c6130eb6200032860003980610a705280610e165280610f495280611039528061119452806114c5528061162d5280611f4452806124525250806101c55280610a9f5280610fb25280610ffd528061116752806114ec5280611f73528061248152506130eb6000f3fe6080604052600436106101bb5760003560e01c80634efecaa5116100ec578063a9059cbb1161008a578063db006a7511610064578063db006a75146107e5578063dd62ed3e1461080f578063ee9907a41461084a578063f866c3191461087d5761022f565b8063a9059cbb14610764578063c634dfaa1461079d578063d0fc81d2146107d05761022f565b806389d1a0fc116100c657806389d1a0fc146106c857806394362e8b146106dd57806395d89b4114610716578063a457c2d71461072b5761022f565b80634efecaa5146106235780635eae177c1461065c57806370a08231146106955761022f565b806323b872dd11610159578063325a9b1311610133578063325a9b131461052757806339509351146105625780633edb7cb81461059b578063445e8010146105d45761022f565b806323b872dd146103e05780633118724e14610423578063313ce567146104fc5761022f565b80630e49072d116101955780630e49072d1461033257806312c87c2d1461036557806318160ddd146103985780631d51e7cf146103ad5761022f565b806306fdde0314610234578063095ea7b3146102be5780630bd7ad3b1461030b5761022f565b3661022f576101f27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108c0565b61022d5760405162461bcd60e51b8152600401808060200182810382526039815260200180612e206039913960400191505060405180910390fd5b005b600080fd5b34801561024057600080fd5b506102496108e6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028357818101518382015260200161026b565b50505050905090810190601f1680156102b05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ca57600080fd5b506102f7600480360360408110156102e157600080fd5b506001600160a01b03813516906020013561097d565b604080519115158252519081900360200190f35b34801561031757600080fd5b5061032061099b565b60408051918252519081900360200190f35b34801561033e57600080fd5b5061022d6004803603602081101561035557600080fd5b50356001600160a01b03166109a0565b34801561037157600080fd5b5061022d6004803603602081101561038857600080fd5b50356001600160a01b03166109ad565b3480156103a457600080fd5b50610320610a4c565b3480156103b957600080fd5b50610320600480360360208110156103d057600080fd5b50356001600160a01b0316610b50565b3480156103ec57600080fd5b506102f76004803603606081101561040357600080fd5b506001600160a01b03813581169160208101359091169060400135610b6b565b34801561042f57600080fd5b5061022d6004803603606081101561044657600080fd5b60ff823516919081019060408101602082013564010000000081111561046b57600080fd5b82018360208201111561047d57600080fd5b8035906020019184600183028401116401000000008311171561049f57600080fd5b9193909290916020810190356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050610bf8565b34801561050857600080fd5b50610511610d48565b6040805160ff9092168252519081900360200190f35b34801561053357600080fd5b5061022d6004803603604081101561054a57600080fd5b506001600160a01b0381358116916020013516610d51565b34801561056e57600080fd5b506102f76004803603604081101561058557600080fd5b506001600160a01b038135169060200135610db7565b3480156105a757600080fd5b5061022d600480360360408110156105be57600080fd5b506001600160a01b038135169060200135610e0b565b3480156105e057600080fd5b50610607600480360360208110156105f757600080fd5b50356001600160a01b0316610f1e565b604080516001600160a01b039092168252519081900360200190f35b34801561062f57600080fd5b506103206004803603604081101561064657600080fd5b506001600160a01b038135169060200135610f3c565b34801561066857600080fd5b506102f76004803603604081101561067f57600080fd5b506001600160a01b038135169060200135610fe5565b3480156106a157600080fd5b50610320600480360360208110156106b857600080fd5b50356001600160a01b03166110b2565b3480156106d457600080fd5b50610607611165565b3480156106e957600080fd5b5061022d6004803603604081101561070057600080fd5b506001600160a01b038135169060200135611189565b34801561072257600080fd5b5061024961127c565b34801561073757600080fd5b506102f76004803603604081101561074e57600080fd5b506001600160a01b0381351690602001356112dd565b34801561077057600080fd5b506102f76004803603604081101561078757600080fd5b506001600160a01b03813516906020013561134b565b3480156107a957600080fd5b50610320600480360360208110156107c057600080fd5b50356001600160a01b031661135f565b3480156107dc57600080fd5b5061032061136a565b3480156107f157600080fd5b5061022d6004803603602081101561080857600080fd5b5035611370565b34801561081b57600080fd5b506103206004803603604081101561083257600080fd5b506001600160a01b03813581169160200135166115dc565b34801561085657600080fd5b506103206004803603602081101561086d57600080fd5b50356001600160a01b0316611607565b34801561088957600080fd5b5061022d600480360360608110156108a057600080fd5b506001600160a01b03813581169160208101359091169060400135611622565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109725780601f1061094757610100808354040283529160200191610972565b820191906000526020600020905b81548152906001019060200180831161095557829003601f168201915b505050505090505b90565b600061099161098a611699565b848461169d565b5060015b92915050565b600181565b6109aa3382611789565b50565b6001600160a01b0381163314156109f55760405162461bcd60e51b8152600401808060200182810382526025815260200180612e596025913960400191505060405180910390fd5b336000818152603d602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610a57611978565b905080610a6857600091505061097a565b610b4a610b457f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610b0457600080fd5b505afa158015610b18573d6000803e3d6000fd5b505050506040513d6020811015610b2e57600080fd5b5051610b398461197e565b9063ffffffff61199416565b6119df565b91505090565b6001600160a01b03166000908152603c602052604090205490565b6000610b788484846119f8565b610bee84610b84611699565b610be985604051806060016040528060288152602001612e9f602891396001600160a01b038a16600090815260356020526040812090610bc2611699565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611a6716565b61169d565b5060019392505050565b610c2b6040518060400160405280601281526020017124b739b4b2329034b734ba34b0b634bd32b960711b815250611afe565b6000610c35611c34565b9050610c676040518060400160405280600e81526020016d5265766973696f6e20697320257360901b81525082611c39565b610c9160405180604001604052806008815260200167546869733a20257360c01b81525030611d8e565b60015460ff1680610ca55750610ca5611e87565b80610cb1575060005481115b610cec5760405162461bcd60e51b815260040180806020018281038252602e815260200180612ef1602e913960400191505060405180910390fd5b60015460ff16158015610d0b576001805460ff19168117905560008290555b610d1760378787612cc8565b50610d2460388585612cc8565b50610d2e87611e8d565b8015610d3f576001805460ff191690555b50505050505050565b60395460ff1690565b6001600160a01b038281166000908152603d6020526040902054163314610da95760405162461bcd60e51b815260040180806020018281038252603a81526020018061307c603a913960400191505060405180910390fd5b610db38282611789565b5050565b6000610991610dc4611699565b84610be98560356000610dd5611699565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611ea316565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e725760405162461bcd60e51b81526004018080602001828103825260328152602001806130256032913960400191505060405180910390fd5b6000806000610e8085611efd565b93509350935050610e9285838661202f565b610e9c858561212f565b6000610eae848663ffffffff61223716565b610ebe57610ebb86612279565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db868584610ef65785610ef9565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152603b60205260409020541690565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa55760405162461bcd60e51b81526004018080602001828103825260328152602001806130256032913960400191505060405180910390fd5b610fdf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848463ffffffff61232b16565b50919050565b604080516376e9d61560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015284811660248301526044820184905291516000927f000000000000000000000000000000000000000000000000000000000000000016916376e9d615916064808301926020929190829003018186803b15801561107f57600080fd5b505afa158015611093573d6000803e3d6000fd5b505050506040513d60208110156110a957600080fd5b50519392505050565b6000806110be83612404565b6001600160a01b0384166000908152603c6020526040902054909150811580156110e6575080155b156110f6576000925050506108e1565b6001600160a01b038481166000908152603b6020526040902054166111475761113e816111328661112d868463ffffffff611ea316565b61241f565b9063ffffffff61223716565b925050506108e1565b61113e61115882611132878561241f565b839063ffffffff611ea316565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111f05760405162461bcd60e51b81526004018080602001828103825260328152602001806130256032913960400191505060405180910390fd5b6000806111fc84611efd565b935093505050611220846112198585611ea390919063ffffffff16565b600061202f565b61122a8484612527565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109725780601f1061094757610100808354040283529160200191610972565b60006109916112ea611699565b84610be9856040518060600160405280602581526020016130576025913960356000611314611699565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611a6716565b6000610991611358611699565b84846119f8565b600061099582612404565b60001981565b600081116113c5576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b60008060006113d333611efd565b919550935091508490506000198114156113ea5750825b838111156114295760405162461bcd60e51b8152600401808060200182810382526032815260200180612da66032913960400191505060405180910390fd5b6114333382610fe5565b611484576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61148f33848361202f565b611499338261212f565b60006114ab858363ffffffff61223716565b6114bb576114b833612279565b90505b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639895e3d87f0000000000000000000000000000000000000000000000000000000000000000338561151d8a8263ffffffff61223716565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b15801561158c57600080fd5b505af11580156115a0573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684610ef65786610ef9565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6001600160a01b03166000908152603a602052604090205490565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116895760405162461bcd60e51b81526004018080602001828103825260328152602001806130256032913960400191505060405180910390fd5b611694838383612625565b505050565b3390565b6001600160a01b0383166116e25760405162461bcd60e51b8152600401808060200182810382526024815260200180612fd76024913960400191505060405180910390fd5b6001600160a01b0382166117275760405162461bcd60e51b8152600401808060200182810382526022815260200180612dd86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038083166000908152603b602052604090205481169082168114156117e65760405162461bcd60e51b815260040180806020018281038252602a815260200180612ec7602a913960400191505060405180910390fd5b6000806000806117f587611efd565b93509350935093506000831161183c5760405162461bcd60e51b8152600401808060200182810382526042815260200180612f1f6042913960600191505060405180910390fd5b6001600160a01b03851615611857576118578760008661202f565b866001600160a01b0316866001600160a01b031614156118e3576001600160a01b0387166000818152603b6020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a35050505050610db3565b6001600160a01b038781166000908152603b6020526040812080546001600160a01b0319169289169290921790915561191f908890859061202f565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60365490565b600061099582633b9aca0063ffffffff61277416565b60006119d86b033b2e3c9fd0803ce80000006119cc6119b9868663ffffffff61277416565b6b019d971e4fe8401e7400000090611ea3565b9063ffffffff6127cd16565b9392505050565b6000631dcd65006119d8633b9aca006119cc8386611ea3565b8281611a048282610fe5565b611a55576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b611a60858585612625565b5050505050565b60008184841115611af65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040516020602482018181528351604484015283516000936a636f6e736f6c652e6c6f67938693928392606401918501908083838a5b83811015611b4c578181015183820152602001611b34565b50505050905090810190601f168015611b795780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663104c13eb60e21b178152905182519295509350839250908083835b60208310611bd45780518252601f199092019160209182019101611bb5565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611a60576040519150601f19603f3d011682016040523d82523d6000602084013e611a60565b600190565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611c98578181015183820152602001611c80565b50505050905090810190601f168015611cc55780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166309710a9d60e41b17815290518251929650945084935091508083835b60208310611d215780518252601f199092019160209182019101611d02565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611d81576040519150601f19603f3d011682016040523d82523d6000602084013e611d86565b606091505b505050505050565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015611dff578181015183820152602001611de7565b50505050905090810190601f168015611e2c5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663319af33360e01b178152905182519296509450849350915080838360208310611d215780518252601f199092019160209182019101611d02565b303b1590565b6039805460ff191660ff92909216919091179055565b6000828201838110156119d8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000611f0e866110b2565b90506000808215611f4057611f2288612404565b9050611f34838263ffffffff61223716565b9150611f408883612527565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611fd857600080fd5b505afa158015611fec573d6000803e3d6000fd5b505050506040513d602081101561200257600080fd5b50516001600160a01b03999099166000908152603a60205260409020899055509791969095509350915050565b6001600160a01b038084166000908152603b602052604090205416806120555750611694565b60008061206183611efd565b6001600160a01b0387166000908152603c602052604090205491955093506120979250869150611132908863ffffffff611ea316565b6001600160a01b038085166000908152603c6020908152604080832094909455603b905291909120541680156120d3576120d38484600061202f565b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b0382166121745760405162461bcd60e51b8152600401808060200182810382526021815260200180612f916021913960400191505060405180910390fd5b61218082600083611694565b6121c381604051806060016040528060228152602001612d84602291396001600160a01b038516600090815260346020526040902054919063ffffffff611a6716565b6001600160a01b0383166000908152603460205260409020556036546121ef908263ffffffff61223716565b6036556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006119d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a67565b6001600160a01b0381166000818152603b6020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b0382166000908152603c602052604090205461232357506001600160a01b0381166000908152603a602052604081205560016108e1565b5060006108e1565b8061233557611694565b61233e836108c0565b156123ea576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114612393576040519150601f19603f3d011682016040523d82523d6000602084013e612398565b606091505b50509050806123e4576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50611694565b6116946001600160a01b038416838363ffffffff61280f16565b6001600160a01b031660009081526034602052604090205490565b60006119d8610b45603a6000866001600160a01b03166001600160a01b031681526020019081526020016000205461251b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d15e00537f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124e657600080fd5b505afa1580156124fa573d6000803e3d6000fd5b505050506040513d602081101561251057600080fd5b5051610b398761197e565b9063ffffffff61286116565b6001600160a01b038216612582576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61258e60008383611694565b6036546125a1908263ffffffff611ea316565b6036556001600160a01b0382166000908152603460205260409020546125cd908263ffffffff611ea316565b6001600160a01b03831660008181526034602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081116126645760405162461bcd60e51b8152600401808060200182810382526030815260200180612f616030913960400191505060405180910390fd5b600080600061267286611efd565b9350935093505060008061268587611efd565b93509350505061269688858861202f565b6126aa87611219848963ffffffff611ea316565b6126b5888888612899565b60006126c7868863ffffffff61223716565b1580156126e65750876001600160a01b0316896001600160a01b031614155b156126f7576126f489612279565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde88988878661273a578961273d565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b60008261278357506000610995565b8282028284828161279057fe5b04146119d85760405162461bcd60e51b8152600401808060200182810382526021815260200180612e7e6021913960400191505060405180910390fd5b60006119d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a02565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611694908490612a67565b600060028204612891836119cc612884876b033b2e3c9fd0803ce8000000612774565b849063ffffffff611ea316565b949350505050565b6001600160a01b0383166128de5760405162461bcd60e51b8152600401808060200182810382526025815260200180612fb26025913960400191505060405180910390fd5b6001600160a01b0382166129235760405162461bcd60e51b8152600401808060200182810382526023815260200180612d616023913960400191505060405180910390fd5b61292e838383611694565b61297181604051806060016040528060268152602001612dfa602691396001600160a01b038616600090815260346020526040902054919063ffffffff611a6716565b6001600160a01b0380851660009081526034602052604080822093909355908416815220546129a6908263ffffffff611ea316565b6001600160a01b0380841660008181526034602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183612a515760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611abb578181015183820152602001611aa3565b506000838581612a5d57fe5b0495945050505050565b6060612abc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b189092919063ffffffff16565b80519091501561169457808060200190516020811015612adb57600080fd5b50516116945760405162461bcd60e51b815260040180806020018281038252602a815260200180612ffb602a913960400191505060405180910390fd5b606061289184846000856060612b2d85612c8f565b612b7e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612bbd5780518252601f199092019160209182019101612b9e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612c1f576040519150601f19603f3d011682016040523d82523d6000602084013e612c24565b606091505b50915091508115612c385791506128919050565b805115612c485780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611abb578181015183820152602001611aa3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612891575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d095782800160ff19823516178555612d36565b82800160010185558215612d36579182015b82811115612d36578235825591602001919060010190612d1b565b50612d42929150612d46565b5090565b61097a91905b80821115612d425760008155600101612d4c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655472616e736665727320617265206f6e6c7920616c6c6f7765642069662074686520756e6465726c79696e6720617373657420697320455448557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220a73b18e0c6d93893805537b7fac37aa96e5e50bc6de6284247ebbf05def49dda64736f6c63430006080033';