aave-protocol-v2/types/LendingPoolFactory.ts

1199 lines
67 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Signer } from "ethers";
import { Provider, TransactionRequest } from "@ethersproject/providers";
import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts";
import { LendingPool } from "./LendingPool";
export class LendingPoolFactory extends ContractFactory {
constructor(
linkLibraryAddresses: LendingPoolLibraryAddresses,
signer?: Signer
) {
super(_abi, LendingPoolFactory.linkBytecode(linkLibraryAddresses), signer);
}
static linkBytecode(
linkLibraryAddresses: LendingPoolLibraryAddresses
): string {
let linkedBytecode = _bytecode;
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$69254465eb8f179ea24caa73cf68b23524\\$__", "g"),
linkLibraryAddresses["__$69254465eb8f179ea24caa73cf68b23524$__"]
.replace(/^0x/, "")
.toLowerCase()
);
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$5e6137a1b5a0a366e2874209b5abf71c10\\$__", "g"),
linkLibraryAddresses["__$5e6137a1b5a0a366e2874209b5abf71c10$__"]
.replace(/^0x/, "")
.toLowerCase()
);
linkedBytecode = linkedBytecode.replace(
new RegExp("__\\$7347ff53b2b46c21e26a37164ae7f6739f\\$__", "g"),
linkLibraryAddresses["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]
.replace(/^0x/, "")
.toLowerCase()
);
return linkedBytecode;
}
deploy(overrides?: Overrides): Promise<LendingPool> {
return super.deploy(overrides || {}) as Promise<LendingPool>;
}
getDeployTransaction(overrides?: Overrides): TransactionRequest {
return super.getDeployTransaction(overrides || {});
}
attach(address: string): LendingPool {
return super.attach(address) as LendingPool;
}
connect(signer: Signer): LendingPoolFactory {
return super.connect(signer) as LendingPoolFactory;
}
static connect(
address: string,
signerOrProvider: Signer | Provider
): LendingPool {
return new Contract(address, _abi, signerOrProvider) as LendingPool;
}
}
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRateMode",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_borrowRate",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Borrow",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: true,
internalType: "uint16",
name: "_referral",
type: "uint16"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Deposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_target",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_totalFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_protocolFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "FlashLoan",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_accruedBorrowInterest",
type: "uint256"
},
{
indexed: false,
internalType: "address",
name: "_liquidator",
type: "address"
},
{
indexed: false,
internalType: "bool",
name: "_receiveAToken",
type: "bool"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "LiquidationCall",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_collateral",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_feeLiquidated",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_liquidatedCollateralForFee",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "OriginationFeeLiquidated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "RebalanceStableBorrowRate",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_repayer",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Repay",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralDisabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
}
],
name: "ReserveUsedAsCollateralEnabled",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Swap",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_reserve",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_user",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_timestamp",
type: "uint256"
}
],
name: "Withdraw",
type: "event"
},
{
inputs: [],
name: "LENDINGPOOL_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: [],
name: "addressesProvider",
outputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "balanceDecreaseAllowed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_interestRateMode",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "borrow",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint16",
name: "_referralCode",
type: "uint16"
}
],
name: "deposit",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_receiver",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "bytes",
name: "_params",
type: "bytes"
}
],
name: "flashLoan",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getConfiguration",
outputs: [
{
components: [
{
internalType: "uint256",
name: "data",
type: "uint256"
}
],
internalType: "struct ReserveConfiguration.Map",
name: "",
type: "tuple"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveConfigurationData",
outputs: [
{
internalType: "uint256",
name: "decimals",
type: "uint256"
},
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidationBonus",
type: "uint256"
},
{
internalType: "address",
name: "interestRateStrategyAddress",
type: "address"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
},
{
internalType: "bool",
name: "borrowingEnabled",
type: "bool"
},
{
internalType: "bool",
name: "stableBorrowRateEnabled",
type: "bool"
},
{
internalType: "bool",
name: "isActive",
type: "bool"
},
{
internalType: "bool",
name: "isFreezed",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveData",
outputs: [
{
internalType: "uint256",
name: "availableLiquidity",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsStable",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsVariable",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "stableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "averageStableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityIndex",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "uint40",
name: "lastUpdateTimestamp",
type: "uint40"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveNormalizedIncome",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveNormalizedVariableDebt",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
}
],
name: "getReserveTokensAddresses",
outputs: [
{
internalType: "address",
name: "aTokenAddress",
type: "address"
},
{
internalType: "address",
name: "stableDebtTokenAddress",
type: "address"
},
{
internalType: "address",
name: "variableDebtTokenAddress",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "getReserves",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserAccountData",
outputs: [
{
internalType: "uint256",
name: "totalCollateralETH",
type: "uint256"
},
{
internalType: "uint256",
name: "totalBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "availableBorrowsETH",
type: "uint256"
},
{
internalType: "uint256",
name: "currentLiquidationThreshold",
type: "uint256"
},
{
internalType: "uint256",
name: "ltv",
type: "uint256"
},
{
internalType: "uint256",
name: "healthFactor",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserReserveData",
outputs: [
{
internalType: "uint256",
name: "currentATokenBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "currentStableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "currentVariableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "principalStableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "principalVariableDebt",
type: "uint256"
},
{
internalType: "uint256",
name: "stableBorrowRate",
type: "uint256"
},
{
internalType: "uint256",
name: "liquidityRate",
type: "uint256"
},
{
internalType: "uint256",
name: "variableBorrowIndex",
type: "uint256"
},
{
internalType: "uint40",
name: "stableRateLastUpdated",
type: "uint40"
},
{
internalType: "bool",
name: "usageAsCollateralEnabled",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_aTokenAddress",
type: "address"
},
{
internalType: "address",
name: "_stableDebtAddress",
type: "address"
},
{
internalType: "address",
name: "_variableDebtAddress",
type: "address"
},
{
internalType: "address",
name: "_interestRateStrategyAddress",
type: "address"
}
],
name: "initReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "_addressesProvider",
type: "address"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_collateral",
type: "address"
},
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_purchaseAmount",
type: "uint256"
},
{
internalType: "bool",
name: "_receiveAToken",
type: "bool"
}
],
name: "liquidationCall",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "rebalanceStableBorrowRate",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_rateMode",
type: "uint256"
},
{
internalType: "address payable",
name: "_onBehalfOf",
type: "address"
}
],
name: "repay",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
name: "reservesList",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_configuration",
type: "uint256"
}
],
name: "setConfiguration",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "address",
name: "_rateStrategyAddress",
type: "address"
}
],
name: "setReserveInterestRateStrategyAddress",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "bool",
name: "_useAsCollateral",
type: "bool"
}
],
name: "setUserUseReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_rateMode",
type: "uint256"
}
],
name: "swapBorrowRateMode",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_reserve",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "withdraw",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
stateMutability: "payable",
type: "receive"
}
];
const _bytecode =
"0x6080604052600060015534801561001557600080fd5b506001600055615625806200002b6000396000f3fe60806040526004361061019f5760003560e01c80638afaff02116100ec578063c858f5f91161008a578063d15e005311610064578063d15e005314610511578063d2493b6c14610531578063d2d0e06614610560578063f3fef3a314610573576101d4565b8063c858f5f9146104bc578063cd112382146104dc578063d0fc81d2146104fc576101d4565b8063bf92857c116100c6578063bf92857c14610428578063c44b11f71461045a578063c4d66de814610487578063c72c4d10146104a7576101d4565b80638afaff02146103d357806394ba89a2146103e8578063b8d2927614610408576101d4565b80633e150141116101595780635a3b74b9116101335780635a3b74b9146103465780635cffe9de1461036657806376e9d615146103865780637a708e92146103b3576101d4565b80633e150141146102d05780634fe7a6e514610306578063573ade8114610333576101d4565b8062a718a9146101d95780630902f1ac146101ec5780631d2118f91461021757806328dd2d011461023757806335ea6a751461026d578063386497fd146102a3576101d4565b366101d4576101ad33610593565b6101d25760405162461bcd60e51b81526004016101c99061514a565b60405180910390fd5b005b600080fd5b6101d26101e7366004614836565b6105d1565b3480156101f857600080fd5b506102016107a3565b60405161020e9190614e40565b60405180910390f35b34801561022357600080fd5b506101d261023236600461478e565b610805565b34801561024357600080fd5b5061025761025236600461478e565b6108d8565b60405161020e9a999897969594939291906154fa565b34801561027957600080fd5b5061028d610288366004614756565b610b83565b60405161020e9a999897969594939291906154ae565b3480156102af57600080fd5b506102c36102be366004614756565b610e7f565b60405161020e91906153f4565b3480156102dc57600080fd5b506102f06102eb366004614756565b610ea6565b60405161020e9a9998979695949392919061542e565b34801561031257600080fd5b50610326610321366004614ac2565b610f7c565b60405161020e9190614c54565b6101d2610341366004614a19565b610fa3565b34801561035257600080fd5b506101d261036136600461497a565b6112df565b34801561037257600080fd5b506101d26103813660046148cf565b6114bb565b34801561039257600080fd5b506103a66103a136600461488f565b6119df565b60405161020e9190614e8d565b3480156103bf57600080fd5b506101d26103ce3660046147c6565b611b29565b3480156103df57600080fd5b506102c3611c62565b3480156103f457600080fd5b506101d26104033660046149a7565b611c67565b34801561041457600080fd5b506101d26104233660046149a7565b611f70565b34801561043457600080fd5b50610448610443366004614756565b612031565b60405161020e96959493929190615486565b34801561046657600080fd5b5061047a610475366004614756565b6121e2565b60405161020e9190615239565b34801561049357600080fd5b506101d26104a2366004614756565b612219565b3480156104b357600080fd5b5061032661234d565b3480156104c857600080fd5b506101d26104d7366004614a62565b61235c565b3480156104e857600080fd5b506101d26104f736600461478e565b6128e1565b34801561050857600080fd5b506102c3612be7565b34801561051d57600080fd5b506102c361052c366004614756565b612bed565b34801561053d57600080fd5b5061055161054c366004614756565b612c0e565b60405161020e93929190614d67565b6101d261056e3660046149d2565b612c43565b34801561057f57600080fd5b506101d261058e3660046149a7565b612e96565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906105c757508115155b925050505b919050565b600260005414156105f45760405162461bcd60e51b81526004016101c990615202565b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b15801561064057600080fd5b505afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106789190614772565b905060006060826001600160a01b031688888888886040516024016106a1959493929190614d8a565b60408051601f198184030181529181526020820180516001600160e01b031662a718a960e01b179052516106d59190614c38565b600060405180830381855af49150503d8060008114610710576040519150601f19603f3d011682016040523d82523d6000602084013e610715565b606091505b5091509150816107375760405162461bcd60e51b81526004016101c9906150c0565b600060608280602001905181019061074f9190614af2565b9150915081600014610792578060405160200161076c9190614c38565b60408051601f198184030181529082905262461bcd60e51b82526101c991600401614e98565b505060016000555050505050505050565b606060398054806020026020016040519081016040528092919081815260200182805480156107fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107dd575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190614772565b6001600160a01b0316146108a75760405162461bcd60e51b81526004016101c9906150f7565b6001600160a01b03918216600090815260376020526040902060090180546001600160a01b03191691909216179055565b6001600160a01b03808316600090815260376020526040808220600681015491516370a0823160e01b81529293849384938493849384938493849384938493919216906370a082319061092f908f90600401614c54565b60206040518083038186803b15801561094757600080fd5b505afa15801561095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097f9190614ada565b9a5061098b8c82613160565b909a50985061099a8c82613274565b6001830154600784015460405163e78c9b3b60e01b8152939b5091995096506001600160a01b03169063e78c9b3b906109d7908f90600401614c54565b60206040518083038186803b1580156109ef57600080fd5b505afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a279190614ada565b6007820154604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610a5a908f90600401614c54565b60206040518083038186803b158015610a7257600080fd5b505afa158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190614ba1565b60098201546001600160a01b038e16600090815260386020908152604091829020825191820190925290548152919450610aee9190600160d01b900460ff1661332d565b6008820154604051633ba641e960e21b81529193506001600160a01b03169063ee9907a490610b21908f90600401614c54565b60206040518083038186803b158015610b3957600080fd5b505afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190614ada565b9350509295989b9194979a5092959850565b600080600080600080600080600080610b9a6145c6565b506001600160a01b03808c1660008181526037602090815260409182902082516101a08101845281548152600182015481840152600282015481850152600382015460608201526004808301546080830152845193840185526005830154845260a08201939093526006820154861660c082018190526007830154871660e08301526008830154871661010083015260099092015495861661012082015264ffffffffff600160a01b87041661014082015260ff600160c81b870481161515610160830152600160d01b90960490951661018086015291516370a0823160e01b81526370a0823192610c8e92909101614c54565b60206040518083038186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde9190614ada565b8160e001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1b57600080fd5b505afa158015610d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190614ada565b8261010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d9157600080fd5b505afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190614ada565b8360200151846040015185606001518660e001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1557600080fd5b505afa158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d9190614ada565b876000015188608001518961014001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b0381166000908152603760205260408120610ea090613344565b92915050565b6000806000806000806000806000806000603760008d6001600160a01b03166001600160a01b031681526020019081526020016000209050610eea81600501613396565b610ef6826005016133a7565b610f02836005016133b6565b610f0e846005016133cb565b60098501546001600160a01b0316610f28600587016133a7565b1515610f36600588016133de565b610f42886005016133f0565b610f4e896005016133f9565b610f5a8a60050161340b565b9a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b60398181548110610f8957fe5b6000918252602090912001546001600160a01b0316905081565b60026000541415610fc65760405162461bcd60e51b81526004016101c990615202565b6002600055610fd3614634565b6001600160a01b0385166000908152603760205260409020610ff58382613160565b6020840181905281845261100f919063ffffffff61341d16565b6080830152600084600281111561102257fe5b9050600181600281111561103257fe5b14611041578260200151611044565b82515b6040840152600019861480159061105e5750826040015186105b1561106b57604083018690525b82516020840151604080860151905163152be4bd60e31b815273__$69254465eb8f179ea24caa73cf68b23524$__9363a95f25e8936110b89388938e938e938a938e9334906004016152bb565b60006040518083038186803b1580156110d057600080fd5b505af41580156110e4573d6000803e3d6000fd5b505050506110f182613442565b60018160028111156110ff57fe5b14156111745760078201546040808501519051632770a7eb60e21b81526001600160a01b0390921691639dc29fac9161113d91889190600401614c8c565b600060405180830381600087803b15801561115757600080fd5b505af115801561116b573d6000803e3d6000fd5b505050506111df565b60088201546040808501519051632770a7eb60e21b81526001600160a01b0390921691639dc29fac916111ac91889190600401614c8c565b600060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050505b60408301516111f99083908990600063ffffffff6134fa16565b604083015160808401516112129163ffffffff61383e16565b61124a5760098201546001600160a01b038516600090815260386020526040812061124a929091600160d01b90910460ff1690613880565b60068201546040840151611276916001600160a01b038a8116923392919091169063ffffffff6138b516565b336001600160a01b0316846001600160a01b0316886001600160a01b03167f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc8660400151426040516112c99291906153e6565b60405180910390a4505060016000555050505050565b600260005414156113025760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03808416825260376020818152604080852033865260388352948190206035548251631f94a27560e31b8152925173__$69254465eb8f179ea24caa73cf68b23524$__9663a6b84c0b9689968c9691959460399493169263fca513a8926004808201939291829003018186803b15801561138957600080fd5b505afa15801561139d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c19190614772565b6040518763ffffffff1660e01b81526004016113e296959493929190615271565b60006040518083038186803b1580156113fa57600080fd5b505af415801561140e573d6000803e3d6000fd5b50505050600981015433600090815260386020526040902061143a91600160d01b900460ff1684613913565b811561147a5760405133906001600160a01b038516907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a36114b1565b60405133906001600160a01b038516907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b5050600160005550565b600260005414156114de5760405162461bcd60e51b81526004016101c990615202565b60026000556114eb614663565b6001600160a01b0380851660008181526037602052604090819020600681015490931660a0850181905290516370a0823160e01b81526370a082319161153391600401614c54565b60206040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115839190614ada565b82526115a861271061159c86600963ffffffff61394e16565b9063ffffffff61398816565b606083018190526115c9906127109061159c90610bb863ffffffff61394e16565b608083015281518411156115ef5760405162461bcd60e51b81526004016101c990614eab565b60008260600151118015611607575060008260800151115b6116235760405162461bcd60e51b81526004016101c990615166565b60a0820151604051634efecaa560e01b8152879182916001600160a01b0390911690634efecaa59061165b9084908a90600401614c8c565b602060405180830381600087803b15801561167557600080fd5b505af1158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad9190614ada565b5060a0840151606085015160405163405b019d60e01b81526001600160a01b0385169263405b019d926116e9928c92918c918c90600401614cc6565b600060405180830381600087803b15801561170357600080fd5b505af1158015611717573d6000803e3d6000fd5b5050505060a08401516040516370a0823160e01b81526000916001600160a01b038a16916370a082319161174d91600401614c54565b60206040518083038186803b15801561176557600080fd5b505afa158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190614ada565b606086015186519192506117b7919063ffffffff61341d16565b81146117d55760405162461bcd60e51b81526004016101c990614f82565b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__638acb830b90918a88600001516118138a608001518b6060015161383e90919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040161183895949392919061531a565b60006040518083038186803b15801561185057600080fd5b505af4158015611864573d6000803e3d6000fd5b505050508460a001516001600160a01b0316634efecaa5603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c957600080fd5b505afa1580156118dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119019190614772565b87608001516040518363ffffffff1660e01b8152600401611923929190614c8c565b602060405180830381600087803b15801561193d57600080fd5b505af1158015611951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119759190614ada565b50876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040516119c79493929190615413565b60405180910390a35050600160005550505050505050565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63865cb0ce8585856037603860008a6001600160a01b03166001600160a01b031681526020019081526020016000206039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7557600080fd5b505afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad9190614772565b6040518863ffffffff1660e01b8152600401611acf9796959493929190614dbe565b60206040518083038186803b158015611ae757600080fd5b505af4158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f9190614aa6565b90505b9392505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611b6d57600080fd5b505afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba59190614772565b6001600160a01b031614611bcb5760405162461bcd60e51b81526004016101c9906150f7565b6001600160a01b038516600090815260376020526040908190209051632d621e9960e21b815273__$5e6137a1b5a0a366e2874209b5abf71c10$__9163b5887a6491611c2291908890889088908890600401615243565b60006040518083038186803b158015611c3a57600080fd5b505af4158015611c4e573d6000803e3d6000fd5b50505050611c5b856139ca565b5050505050565b600281565b60026000541415611c8a5760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03831681526037602052604081209080611cb23384613160565b915091506000846002811115611cc457fe5b336000908152603860205260409081902090516306c4439560e31b815291925073__$69254465eb8f179ea24caa73cf68b23524$__916336221ca891611d15918891908890889088906004016153b0565b60006040518083038186803b158015611d2d57600080fd5b505af4158015611d41573d6000803e3d6000fd5b50505050611d4e84613442565b6001816002811115611d5c57fe5b1415611e33576007840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90611d969033908790600401614c8c565b600060405180830381600087803b158015611db057600080fd5b505af1158015611dc4573d6000803e3d6000fd5b50505060088501546040516340c10f1960e01b81526001600160a01b0390911691506340c10f1990611dfc9033908790600401614c8c565b600060405180830381600087803b158015611e1657600080fd5b505af1158015611e2a573d6000803e3d6000fd5b50505050611f05565b6008840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90611e679033908690600401614c8c565b600060405180830381600087803b158015611e8157600080fd5b505af1158015611e95573d6000803e3d6000fd5b5050505060078401546003850154604051630ab714fb60e11b81526001600160a01b039092169163156e29f691611ed29133918791600401614ca5565b600060405180830381600087803b158015611eec57600080fd5b505af1158015611f00573d6000803e3d6000fd5b505050505b611f18848760008063ffffffff6134fa16565b336001600160a01b0316866001600160a01b03167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca642604051611f5b91906153f4565b60405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611fb457600080fd5b505afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec9190614772565b6001600160a01b0316146120125760405162461bcd60e51b81526004016101c9906150f7565b6001600160a01b03909116600090815260376020526040902060050155565b6001600160a01b038116600090815260386020908152604080832081518084018352905481526039805483518186028101860190945280845285948594859485948594612140948c9460379493909290918301828280156120bb57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161209d575b505060355460408051631f94a27560e31b815290516001600160a01b03909216945063fca513a893506004808201935060209291829003018186803b15801561210357600080fd5b505afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190614772565b613a9f565b60405163d609bd1b60e01b8152949a5092985095509350915073__$7347ff53b2b46c21e26a37164ae7f6739f$__9063d609bd1b90612187908990899087906004016153fd565b60206040518083038186803b15801561219f57600080fd5b505af41580156121b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d79190614ada565b935091939550919395565b6121ea6146a2565b506001600160a01b03166000908152603760209081526040918290208251918201909252600590910154815290565b6000612223613f9f565b60025490915060ff168061223a575061223a613fa4565b80612246575060015481115b6122625760405162461bcd60e51b81526004016101c990615072565b60025460ff16158015612283576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b1580156122df57600080fd5b505afa1580156122f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123179190614772565b603680546001600160a01b0319166001600160a01b03929092169190911790558015612348576002805460ff191690555b505050565b6035546001600160a01b031681565b6002600054141561237f5760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03851681526037602090815260408083203384526038909252822090916124cd6123b960058501613396565b600a0a61159c88603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561240e57600080fd5b505afa158015612422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124469190614772565b6001600160a01b031663b3596f078c6040518263ffffffff1660e01b81526004016124719190614c54565b60206040518083038186803b15801561248957600080fd5b505afa15801561249d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c19190614ada565b9063ffffffff61394e16565b905073__$69254465eb8f179ea24caa73cf68b23524$__63dfb6b2d7848989858a6019603760386000336001600160a01b03166001600160a01b031681526020019081526020016000206039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561256757600080fd5b505afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f9190614772565b6040518b63ffffffff1660e01b81526004016125c49a99989796959493929190615346565b60006040518083038186803b1580156125dc57600080fd5b505af41580156125f0573d6000803e3d6000fd5b50505050600383015461260284613442565b600186600281111561261057fe5b600281111561261b57fe5b1415612714576007840154604051630ab714fb60e11b81526001600160a01b039091169063156e29f6906126579033908b908690600401614ca5565b600060405180830381600087803b15801561267157600080fd5b505af1158015612685573d6000803e3d6000fd5b505050506007840154604051631e739ae360e21b81526000916001600160a01b0316906379ce6b8c906126bc903390600401614c54565b60206040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270c9190614ba1565b90505061277b565b60088401546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906127489033908b90600401614c8c565b600060405180830381600087803b15801561276257600080fd5b505af1158015612776573d6000803e3d6000fd5b505050505b61278e848960008a63ffffffff6134fa16565b60098401546040805160208101909152845481526127b591600160d01b900460ff16613faa565b6127d55760098401546127d5908490600160d01b900460ff166001613880565b6006840154604051634efecaa560e01b81526001600160a01b0390911690634efecaa5906128099033908b90600401614c8c565b602060405180830381600087803b15801561282357600080fd5b505af1158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b9190614ada565b5061ffff8516336001600160a01b038a167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808a8a60018c600281111561289d57fe5b60028111156128a857fe5b146128b75789600201546128b9565b865b426040516128ca9493929190615413565b60405180910390a450506001600055505050505050565b600260005414156129045760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03808416825260376020526040808320600781015491516370a0823160e01b81529093919092169182906370a0823190612950908790600401614c54565b60206040518083038186803b15801561296857600080fd5b505afa15801561297c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a09190614ada565b9050600081116129c25760405162461bcd60e51b81526004016101c990615015565b60006129fb6129ea6aa56fa5b99019a5c80000006129de613fba565b9063ffffffff61341d16565b60038601549063ffffffff613fca16565b90506000836001600160a01b031663e78c9b3b876040518263ffffffff1660e01b8152600401612a2b9190614c54565b60206040518083038186803b158015612a4357600080fd5b505afa158015612a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7b9190614ada565b90508460010154811080612a8e57508181115b612aaa5760405162461bcd60e51b81526004016101c990614f33565b612ab385613442565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac90612ae19089908790600401614c8c565b600060405180830381600087803b158015612afb57600080fd5b505af1158015612b0f573d6000803e3d6000fd5b5050506003860154604051630ab714fb60e11b81526001600160a01b038716925063156e29f691612b46918a918891600401614ca5565b600060405180830381600087803b158015612b6057600080fd5b505af1158015612b74573d6000803e3d6000fd5b50612b8e925087915089905060008063ffffffff6134fa16565b856001600160a01b0316876001600160a01b03167f443060d15ff6dac05881a7c07a46ef8085d8af4399e436be6c25250df40c5f1842604051612bd191906153f4565b60405180910390a3505050505050506001600055565b60001981565b6001600160a01b0381166000908152603760205260408120610ea09061400c565b6001600160a01b0390811660009081526037602052604090206006810154600782015460089092015490831693918316921690565b60026000541415612c665760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03841681526037602052604090819020905163b25dc48d60e01b815273__$69254465eb8f179ea24caa73cf68b23524$__9063b25dc48d90612cbc90849087906004016153e6565b60006040518083038186803b158015612cd457600080fd5b505af4158015612ce8573d6000803e3d6000fd5b50505060068201546040516370a0823160e01b81526001600160a01b03909116915060009082906370a0823190612d23903390600401614c54565b60206040518083038186803b158015612d3b57600080fd5b505afa158015612d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d739190614ada565b159050612d7f83613442565b612d92838787600063ffffffff6134fa16565b8015612dc1576009830154336000908152603860205260409020612dc191600160d01b900460ff166001613913565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990612def9033908990600401614c8c565b600060405180830381600087803b158015612e0957600080fd5b505af1158015612e1d573d6000803e3d6000fd5b50612e37925050506001600160a01b0387163384886138b5565b8361ffff16336001600160a01b0316876001600160a01b03167fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c828842604051612e819291906153e6565b60405180910390a45050600160005550505050565b60026000541415612eb95760405162461bcd60e51b81526004016101c990615202565b600260009081556001600160a01b03808416825260376020526040808320600681015491516370a0823160e01b81529093919092169182906370a0823190612f05903390600401614c54565b60206040518083038186803b158015612f1d57600080fd5b505afa158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190614ada565b905083600019811415612f655750805b336000908152603860209081526040918290206035548351631f94a27560e31b8152935173__$69254465eb8f179ea24caa73cf68b23524$__9463dd746f5d948c948a9489948b946037946039936001600160a01b03169263fca513a8926004808201939291829003018186803b158015612fdf57600080fd5b505afa158015612ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130179190614772565b6040518963ffffffff1660e01b815260040161303a989796959493929190614d0b565b60006040518083038186803b15801561305257600080fd5b505af4158015613066573d6000803e3d6000fd5b5050505061307384613442565b613086848760008463ffffffff6134fa16565b818114156130b95760098401543360009081526038602052604081206130b9929091600160d01b90910460ff1690613913565b604051633dae446f60e21b81526001600160a01b0384169063f6b911bc906130e990339081908690600401614c68565b600060405180830381600087803b15801561310357600080fd5b505af1158015613117573d6000803e3d6000fd5b50505050336001600160a01b0316866001600160a01b03167ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5678742604051611f5b9291906153e6565b60078101546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190613197908790600401614c54565b60206040518083038186803b1580156131af57600080fd5b505afa1580156131c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e79190614ada565b60088401546040516370a0823160e01b81526001600160a01b03909116906370a0823190613219908890600401614c54565b60206040518083038186803b15801561323157600080fd5b505afa158015613245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132699190614ada565b915091509250929050565b600781015460405163631a6fd560e11b815260009182916001600160a01b039091169063c634dfaa906132ab908790600401614c54565b60206040518083038186803b1580156132c357600080fd5b505afa1580156132d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fb9190614ada565b600884015460405163631a6fd560e11b81526001600160a01b039091169063c634dfaa90613219908890600401614c54565b815160016002830281019190911c16151592915050565b600981015460009064ffffffffff600160a01b909104811690421681141561337257505060048101546105cc565b60006105c7846004015461338a86600201548561404f565b9063ffffffff613fca16565b5460301c610f01600160d01b031690565b54670fffffffffff0000191690565b5460101c650fffffff0001600160f01b031690565b5460201c630fff0001600160e01b031690565b54603a1c6003600160c61b0316151590565b54603b1c151590565b5460381c600f600160c81b0316151590565b5460391c6007600160c71b0316151590565b600082820183811015611b225760405162461bcd60e51b81526004016101c990614efc565b600061344d82614165565b905080156134d6576001820154600983015460009161347991600160a01b900464ffffffffff1661427a565b835490915061348f90829063ffffffff613fca16565b8355600283015460098401546000916134b591600160a01b900464ffffffffff1661404f565b90506134ce846004015482613fca90919063ffffffff16565b600485015550505b50600901805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b60078401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561354157600080fd5b505afa158015613555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135799190614ada565b60068601546040516370a0823160e01b81529192506000916001600160a01b03878116926370a08231926135b39290911690600401614c54565b60206040518083038186803b1580156135cb57600080fd5b505afa1580156135df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136039190614ada565b6009870154909150600090819081906001600160a01b03166357e37af08961364189613635898d63ffffffff61341d16565b9063ffffffff61383e16565b8c60070160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561369157600080fd5b505afa1580156136a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c99190614ada565b8d60080160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561371957600080fd5b505afa15801561372d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137519190614ada565b8a6040518663ffffffff1660e01b8152600401613772959493929190614e12565b60606040518083038186803b15801561378a57600080fd5b505afa15801561379e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c29190614b74565b60018c0183905560038c0182905560028c018190558b5460048d01546040519497509295509093506001600160a01b038b16927f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a49261382b92889288928c928992909190615486565b60405180910390a2505050505050505050565b6000611b2283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142e3565b8160020281613890576000613893565b60015b60ff16901b826002026001901b19846000015416178360000181905550505050565b61390d846323b872dd60e01b8585856040516024016138d693929190614c68565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261430f565b50505050565b8160020260010181613926576000613929565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b60008261395d57506000610ea0565b8282028284828161396a57fe5b0414611b225760405162461bcd60e51b81526004016101c990614fd4565b6000611b2283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061439e565b6000805b603954811015613a1757826001600160a01b0316603982815481106139ef57fe5b6000918252602090912001546001600160a01b03161415613a0f57600191505b6001016139ce565b5080613a9b57603980546001600160a01b0384166000818152603760205260408120600901805460ff909416600160d01b0260ff60d01b19909416939093179092558254600181018455929091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d390910180546001600160a01b03191690911790555b5050565b6000806000806000613aaf6146b5565b613ab8896143d5565b15613ad55750600094508493508392508291506000199050613f92565b600060e08201525b87518160e001511015613ee55760e0810151613b00908a9063ffffffff6143da16565b613b0957613ed5565b878160e0015181518110613b1957fe5b6020908102919091018101516001600160a01b031661020083018190526000908152908b905260409020613b4f600582016143ea565b6080860181905260c08601929092525060a0840191909152600a0a602083015261020082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f0791613ba09190600401614c54565b60206040518083038186803b158015613bb857600080fd5b505afa158015613bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf09190614ada565b825260a082015115801590613c16575060e0820151613c16908b9063ffffffff61332d16565b15613d475760068101546040516370a0823160e01b81526001600160a01b03909116906370a0823190613c4d908f90600401614c54565b60206040518083038186803b158015613c6557600080fd5b505afa158015613c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9d9190614ada565b6040830181905260208301518351600092613cc2929161159c9163ffffffff61394e16565b610120840151909150613cdb908263ffffffff61341d16565b61012084015260a0830151613d0d90613cfb90839063ffffffff61394e16565b6101808501519063ffffffff61341d16565b61018084015260c0830151613d3f90613d2d90839063ffffffff61394e16565b6101a08501519063ffffffff61341d16565b6101a0840152505b60e0820151613d5d908b9063ffffffff613faa16565b15613ed35760078101546040516370a0823160e01b81526001600160a01b03909116906370a0823190613d94908f90600401614c54565b60206040518083038186803b158015613dac57600080fd5b505afa158015613dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de49190614ada565b826060018181525050613e948160080160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b8152600401613e339190614c54565b60206040518083038186803b158015613e4b57600080fd5b505afa158015613e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e839190614ada565b60608401519063ffffffff61341d16565b6060830181905260208301518351613ecc92613eba929161159c9163ffffffff61394e16565b6101408401519063ffffffff61341d16565b6101408301525b505b60e0810180516001019052613add565b600081610120015111613ef9576000613f14565b610120810151610180820151613f149163ffffffff61398816565b610180820152610120810151613f2b576000613f46565b6101208101516101a0820151613f469163ffffffff61398816565b6101a08201819052610120820151610140830151613f6392614431565b61010082018190526101208201516101408301516101808401516101a090940151919850965091945090925090505b9550955095509550959050565b600290565b303b1590565b9051600160029092021c16151590565b6b033b2e3c9fd0803ce800000090565b6000611b226b033b2e3c9fd0803ce800000061159c613fef868663ffffffff61394e16565b60026b033b2e3c9fd0803ce80000005b049063ffffffff61341d16565b600981015460009064ffffffffff600160a01b909104811690421681141561403757505080546105cc565b60006105c7846000015461338a86600101548561427a565b6000806140694264ffffffffff851663ffffffff61383e16565b90508061408057614078613fba565b915050610ea0565b600061409382600163ffffffff61383e16565b90506000600283116140a65760006140b7565b6140b783600263ffffffff61383e16565b905060006140cf876301e1338063ffffffff61398816565b905060006140e3828063ffffffff613fca16565b905060006140f7828463ffffffff613fca16565b90506000614114600261159c856124c18b8b63ffffffff61394e16565b90506000614133600661159c856124c18a818e8e63ffffffff61394e16565b9050614156816129de848161414e8a8e63ffffffff61394e16565b6129de613fba565b9b9a5050505050505050505050565b6000610ea08260080160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156141ba57600080fd5b505afa1580156141ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f29190614ada565b8360070160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561424257600080fd5b505afa158015614256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129de9190614ada565b6000806142944264ffffffffff851663ffffffff61383e16565b905060006142bd6142a86301e13380614461565b6142b184614461565b9063ffffffff61447716565b90506142da6142ca613fba565b6129de878463ffffffff613fca16565b95945050505050565b600081848411156143075760405162461bcd60e51b81526004016101c99190614e98565b505050900390565b6060614364826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144af9092919063ffffffff16565b80519091501561234857808060200190518101906143829190614aa6565b6123485760405162461bcd60e51b81526004016101c9906151b8565b600081836143bf5760405162461bcd60e51b81526004016101c99190614e98565b5060008385816143cb57fe5b0495945050505050565b511590565b9051600360029092021c16151590565b54670fffffffffff000019811691601082901c650fffffff0001600160f01b031691602081901c630fff0001600160e01b03169160309190911c610f01600160d01b031690565b6000826144415750600019611b22565b611b1f83614455868563ffffffff6144be16565b9063ffffffff6144e316565b6000610ea082633b9aca0063ffffffff61394e16565b6000600282046144a78361159c61449a876b033b2e3c9fd0803ce800000061394e565b849063ffffffff61341d16565b949350505050565b6060611b1f8484600085614502565b6000611b2261271061159c6144d9868663ffffffff61394e16565b6002612710613fff565b6000600282046144a78361159c61449a87670de0b6b3a764000061394e565b606061450d85610593565b6145295760405162461bcd60e51b81526004016101c990615113565b60006060866001600160a01b031685876040516145469190614c38565b60006040518083038185875af1925050503d8060008114614583576040519150601f19603f3d011682016040523d82523d6000602084013e614588565b606091505b5091509150811561459c5791506144a79050565b8051156145ac5780518082602001fd5b8360405162461bcd60e51b81526004016101c99190614e98565b604051806101a0016040528060008152602001600081526020016000815260200160008152602001600081526020016145fd6146a2565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e09091015290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060c00160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6040518060200160405280600081525090565b60405180610260016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b600060208284031215614767578081fd5b8135611b22816155cc565b600060208284031215614783578081fd5b8151611b22816155cc565b600080604083850312156147a0578081fd5b82356147ab816155cc565b915060208301356147bb816155cc565b809150509250929050565b600080600080600060a086880312156147dd578081fd5b85356147e8816155cc565b945060208601356147f8816155cc565b93506040860135614808816155cc565b92506060860135614818816155cc565b91506080860135614828816155cc565b809150509295509295909350565b600080600080600060a0868803121561484d578081fd5b8535614858816155cc565b94506020860135614868816155cc565b93506040860135614878816155cc565b9250606086013591506080860135614828816155e1565b6000806000606084860312156148a3578283fd5b83356148ae816155cc565b925060208401356148be816155cc565b929592945050506040919091013590565b600080600080608085870312156148e4578384fd5b84356148ef816155cc565b935060208501356148ff816155cc565b925060408501359150606085013567ffffffffffffffff811115614921578182fd5b80860187601f820112614932578283fd5b803591506149476149428361556f565b615548565b82815288602084840101111561495b578384fd5b8260208301602083013791820160200192909252939692955090935050565b6000806040838503121561498c578182fd5b8235614997816155cc565b915060208301356147bb816155e1565b600080604083850312156149b9578182fd5b82356149c4816155cc565b946020939093013593505050565b6000806000606084860312156149e6578081fd5b83356149f1816155cc565b925060208401359150604084013561ffff81168114614a0e578182fd5b809150509250925092565b60008060008060808587031215614a2e578182fd5b8435614a39816155cc565b935060208501359250604085013591506060850135614a57816155cc565b939692955090935050565b60008060008060808587031215614a77578182fd5b8435614a82816155cc565b93506020850135925060408501359150606085013561ffff81168114614a57578182fd5b600060208284031215614ab7578081fd5b8151611b22816155e1565b600060208284031215614ad3578081fd5b5035919050565b600060208284031215614aeb578081fd5b5051919050565b60008060408385031215614b04578182fd5b82519150602083015167ffffffffffffffff811115614b21578182fd5b80840185601f820112614b32578283fd5b80519150614b426149428361556f565b828152866020848401011115614b56578384fd5b614b67836020830160208501615593565b8093505050509250929050565b600080600060608486031215614b88578081fd5b8351925060208401519150604084015190509250925092565b600060208284031215614bb2578081fd5b815164ffffffffff81168114611b22578182fd5b6000815480845260208085019450838352808320835b83811015614c015781546001600160a01b031687529582019560019182019101614bdc565b509495945050505050565b60008151808452614c24816020860160208601615593565b601f01601f19169290920160200192915050565b60008251614c4a818460208701615593565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614d0090830184614c0c565b979650505050505050565b600061010060018060a01b03808c168452808b1660208501528960408501528860608501528760808501528660a08501528160c0850152614d4e82850187614bc6565b925080851660e085015250509998505050505050505050565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b600060018060a01b03808a16835280891660208401528760408401528660608401528554608084015260e060a0840152614dfb60e0840186614bc6565b915080841660c08401525098975050505050505050565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015614e815783516001600160a01b031683529284019291840191600101614e5c565b50909695505050505050565b901515815260200190565b600060208252611b226020830184614c0c565b60208082526031908201527f5468657265206973206e6f7420656e6f756768206c697175696469747920617660408201527061696c61626c6520746f20626f72726f7760781b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252602f908201527f496e746572657374207261746520726562616c616e636520636f6e646974696f60408201526e1b9cc81dd95c99481b9bdd081b595d608a1b606082015260800190565b60208082526032908201527f5468652061637475616c2062616c616e6365206f66207468652070726f746f636040820152711bdb081a5cc81a5b98dbdb9cda5cdd195b9d60721b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526038908201527f5573657220646f6573206e6f74206861766520616e7920737461626c6520726160408201527f7465206c6f616e20666f72207468697320726573657276650000000000000000606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526017908201527f4c69717569646174696f6e2063616c6c206661696c6564000000000000000000604082015260600190565b602080825260029082015261033360f41b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b602080825260029082015261191960f11b604082015260600190565b60208082526032908201527f5468652072657175657374656420616d6f756e7420697320746f6f20736d616c60408201527136103337b9103090233630b9b42637b0b71760711b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b9051815260200190565b9485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b600087825260018060a01b03808816602084015286604084015285606084015260c060808401526152a560c0840186614bc6565b915080841660a084015250979650505050505050565b8981526001600160a01b038981166020830152604082018990526101208201906152e4896155bf565b8860608401528088166080840152508560a08301528460c08301528360e0830152826101008301529a9950505050505050505050565b9485526001600160a01b0393909316602085015260408401919091526060830152608082015260a00190565b60006101408c835260018060a01b03808d1660208501528b60408501528a60608501528960808501528860a08501528760c08501528660e08501528161010085015261539482850187614bc6565b925080851661012085015250509b9a5050505050505050505050565b600060a0820190508682528560208301528460408301528360608301526153d6836155bf565b8260808301529695505050505050565b918252602082015260400190565b90815260200190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b998a5260208a0198909852604089019690965260608801949094526001600160a01b03929092166080870152151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015264ffffffffff1661010083015215156101208201526101400190565b60405181810167ffffffffffffffff8111828210171561556757600080fd5b604052919050565b600067ffffffffffffffff821115615585578081fd5b50601f01601f191660200190565b60005b838110156155ae578181015183820152602001615596565b8381111561390d5750506000910152565b600381106155c957fe5b50565b6001600160a01b03811681146155c957600080fd5b80151581146155c957600080fdfea2646970667358221220e9e55dec9caf313e6d498da3907c9356fb44ec8e36153ce1e0807dacbe7967f964736f6c63430006080033";
export interface LendingPoolLibraryAddresses {
["__$69254465eb8f179ea24caa73cf68b23524$__"]: string;
["__$5e6137a1b5a0a366e2874209b5abf71c10$__"]: string;
["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]: string;
}