UNPKG

@augumented-finance/protocol-v1

Version:

Augmented Protocol smart contracts

768 lines 50.1 kB
"use strict"; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ Object.defineProperty(exports, "__esModule", { value: true }); exports.LendingPoolConfiguratorFactory = void 0; const contracts_1 = require("@ethersproject/contracts"); class LendingPoolConfiguratorFactory extends contracts_1.ContractFactory { constructor(signer) { super(_abi, _bytecode, signer); } deploy(overrides) { return super.deploy(overrides || {}); } getDeployTransaction(overrides) { return super.getDeployTransaction(overrides || {}); } attach(address) { return super.attach(address); } connect(signer) { return super.connect(signer); } static connect(address, signerOrProvider) { return new contracts_1.Contract(address, _abi, signerOrProvider); } } exports.LendingPoolConfiguratorFactory = LendingPoolConfiguratorFactory; const _abi = [ { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "BorrowingDisabledOnReserve", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: false, internalType: "bool", name: "stableRateEnabled", type: "bool", }, ], name: "BorrowingEnabledOnReserve", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: false, internalType: "uint256", name: "ltv", type: "uint256", }, { indexed: false, internalType: "uint256", name: "liquidationThreshold", type: "uint256", }, { indexed: false, internalType: "uint256", name: "liquidationBonus", type: "uint256", }, ], name: "CollateralConfigurationChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: true, internalType: "address", name: "proxy", type: "address", }, { indexed: true, internalType: "address", name: "implementation", type: "address", }, ], name: "DepositTokenUpgraded", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "ReserveActivated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "ReserveDeactivated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: false, internalType: "uint256", name: "decimals", type: "uint256", }, ], name: "ReserveDecimalsChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: false, internalType: "uint256", name: "factor", type: "uint256", }, ], name: "ReserveFactorChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "ReserveFrozen", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: true, internalType: "address", name: "aToken", type: "address", }, { indexed: false, internalType: "address", name: "stableDebtToken", type: "address", }, { indexed: false, internalType: "address", name: "variableDebtToken", type: "address", }, { indexed: false, internalType: "address", name: "interestRateStrategyAddress", type: "address", }, ], name: "ReserveInitialized", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: false, internalType: "address", name: "strategy", type: "address", }, ], name: "ReserveInterestRateStrategyChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "ReserveUnfrozen", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: true, internalType: "address", name: "proxy", type: "address", }, { indexed: true, internalType: "address", name: "implementation", type: "address", }, ], name: "StableDebtTokenUpgraded", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "StableRateDisabledOnReserve", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, ], name: "StableRateEnabledOnReserve", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "asset", type: "address", }, { indexed: true, internalType: "address", name: "proxy", type: "address", }, { indexed: true, internalType: "address", name: "implementation", type: "address", }, ], name: "VariableDebtTokenUpgraded", type: "event", }, { inputs: [], name: "REVISION", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "pure", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "activateReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { internalType: "address", name: "aTokenImpl", type: "address", }, { internalType: "address", name: "stableDebtTokenImpl", type: "address", }, { internalType: "address", name: "variableDebtTokenImpl", type: "address", }, { internalType: "uint8", name: "underlyingAssetDecimals", type: "uint8", }, { internalType: "address", name: "interestRateStrategyAddress", type: "address", }, { internalType: "address", name: "underlyingAsset", type: "address", }, { internalType: "address", name: "treasury", type: "address", }, { internalType: "string", name: "underlyingAssetName", type: "string", }, { internalType: "string", name: "aTokenName", type: "string", }, { internalType: "string", name: "aTokenSymbol", type: "string", }, { internalType: "string", name: "variableDebtTokenName", type: "string", }, { internalType: "string", name: "variableDebtTokenSymbol", type: "string", }, { internalType: "string", name: "stableDebtTokenName", type: "string", }, { internalType: "string", name: "stableDebtTokenSymbol", type: "string", }, { internalType: "bytes", name: "params", type: "bytes", }, ], internalType: "struct ILendingPoolConfigurator.InitReserveInput[]", name: "input", type: "tuple[]", }, ], name: "batchInitReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "uint256", name: "ltv", type: "uint256", }, { internalType: "uint256", name: "liquidationThreshold", type: "uint256", }, { internalType: "uint256", name: "liquidationBonus", type: "uint256", }, ], name: "configureReserveAsCollateral", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "deactivateReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "disableBorrowingOnReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "disableReserveStableRate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "bool", name: "stableBorrowRateEnabled", type: "bool", }, ], name: "enableBorrowingOnReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "enableReserveStableRate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "freezeReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "contract IMarketAccessController", name: "provider", type: "address", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "val", type: "bool", }, ], name: "setPoolPause", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "uint256", name: "reserveFactor", type: "uint256", }, ], name: "setReserveFactor", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "address", name: "rateStrategyAddress", type: "address", }, ], name: "setReserveInterestRateStrategyAddress", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "asset", type: "address", }, ], name: "unfreezeReserve", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "address", name: "treasury", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "address", name: "implementation", type: "address", }, { internalType: "bytes", name: "params", type: "bytes", }, ], internalType: "struct ILendingPoolConfigurator.UpdateDepositTokenInput", name: "input", type: "tuple", }, ], name: "updateDepositToken", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "address", name: "implementation", type: "address", }, { internalType: "bytes", name: "params", type: "bytes", }, ], internalType: "struct ILendingPoolConfigurator.UpdateDebtTokenInput", name: "input", type: "tuple", }, ], name: "updateStableDebtToken", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { internalType: "address", name: "asset", type: "address", }, { internalType: "string", name: "name", type: "string", }, { internalType: "string", name: "symbol", type: "string", }, { internalType: "address", name: "implementation", type: "address", }, { internalType: "bytes", name: "params", type: "bytes", }, ], internalType: "struct ILendingPoolConfigurator.UpdateDebtTokenInput", name: "input", type: "tuple", }, ], name: "updateVariableDebtToken", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x608060405260008055600060015534801561001957600080fd5b506138da806100296000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063a8dc0f45116100a2578063c4d66de811610071578063c4d66de814610214578063dde43cba14610227578063eede87c114610245578063ef1f937314610258578063f53a25151461026b57610116565b8063a8dc0f45146101c8578063b75d6f34146101db578063bf344183146101ee578063bfbc47ff1461020157610116565b80636f56307c116100e95780636f56307c146101695780637641f3d91461017c5780637aca76eb1461018f5780637c4e560b146101a25780637dc86741146101b557610116565b80631d2118f91461011b5780633e72a454146101305780634b4e67531461014357806362c9ac2814610156575b600080fd5b61012e610129366004613118565b61027e565b005b61012e61013e3660046130e0565b6103ef565b61012e61015136600461317d565b6105e9565b61012e6101643660046131e2565b6107e7565b61012e6101773660046133d7565b6108f2565b61012e61018a366004613251565b610c51565b61012e61019d3660046130e0565b610d75565b61012e6101b03660046131a8565b610f66565b61012e6101c336600461339f565b61128e565b61012e6101d63660046130e0565b61156b565b61012e6101e93660046130e0565b61175c565b61012e6101fc3660046130e0565b61194d565b61012e61020f36600461339f565b611b3e565b61012e6102223660046130e0565b611e1b565b61022f611fc7565b60405161023c91906137ae565b60405180910390f35b61012e610253366004613150565b611fd6565b61012e6102663660046130e0565b6121d2565b61012e6102793660046130e0565b6123c3565b6006546001600160a01b0316637be53ca16102976125b4565b6040518263ffffffff1660e01b81526004016102b391906134df565b60206040518083038186803b1580156102cb57600080fd5b505afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610303919061326d565b60405180604001604052806002815260200161333360f01b815250906103455760405162461bcd60e51b815260040161033c91906135e7565b60405180910390fd5b50600754604051631d2118f960e01b81526001600160a01b0390911690631d2118f99061037890859085906004016134f3565b600060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b50505050816001600160a01b03167f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a5826040516103e391906134df565b60405180910390a25050565b6006546001600160a01b0316637be53ca16104086125b4565b6040518263ffffffff1660e01b815260040161042491906134df565b60206040518083038186803b15801561043c57600080fd5b505afa158015610450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610474919061326d565b60405180604001604052806002815260200161333360f01b815250906104ad5760405162461bcd60e51b815260040161033c91906135e7565b506104b7816125b8565b6104bf612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906104ef9085906004016134df565b60206040518083038186803b15801561050757600080fd5b505afa15801561051b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053f9190613289565b905061054c816000612719565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161057f918691906004016135c3565b600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b6006546001600160a01b0316637be53ca16106026125b4565b6040518263ffffffff1660e01b815260040161061e91906134df565b60206040518083038186803b15801561063657600080fd5b505afa15801561064a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066e919061326d565b60405180604001604052806002815260200161333360f01b815250906106a75760405162461bcd60e51b815260040161033c91906135e7565b506106b0612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906106e09086906004016134df565b60206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107309190613289565b905061073c8183612747565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161076f918791906004016135c3565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d3405836040516107da91906137ae565b60405180910390a2505050565b6006546001600160a01b0316637be53ca16108006125b4565b6040518263ffffffff1660e01b815260040161081c91906134df565b60206040518083038186803b15801561083457600080fd5b505afa158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c919061326d565b60405180604001604052806002815260200161333360f01b815250906108a55760405162461bcd60e51b815260040161033c91906135e7565b506007546001600160a01b031660005b828110156108ec576108e4828585848181106108cd57fe5b90506020028101906108df9190613828565b61279e565b6001016108b5565b50505050565b6006546001600160a01b0316637be53ca161090b6125b4565b6040518263ffffffff1660e01b815260040161092791906134df565b60206040518083038186803b15801561093f57600080fd5b505afa158015610953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610977919061326d565b60405180604001604052806002815260200161333360f01b815250906109b05760405162461bcd60e51b815260040161033c91906135e7565b506007546001600160a01b03166109c5612fee565b6001600160a01b0382166335ea6a756109e160208601866130e0565b6040518263ffffffff1660e01b81526004016109fd91906134df565b6101806040518083038186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906132a4565b90506000610ae26001600160a01b03841663c44b11f7610a7160208801886130e0565b6040518263ffffffff1660e01b8152600401610a8d91906134df565b60206040518083038186803b158015610aa557600080fd5b505afa158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add9190613289565b612b94565b509350505050610af0613059565b6040518060600160405280856001600160a01b03168152602001866020016020810190610b1d91906130e0565b6001600160a01b03168152602090810190610b3a908801886130e0565b6001600160a01b0316905290506060638bd3a60d60e01b82610b5f6040890189613812565b610b6c60608b018b613812565b88610b7a60a08e018e6137cd565b604051602401610b919897969594939291906136fe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260e0850151909150610be590610bdf60a0890160808a016130e0565b83612bbf565b610bf560a08701608088016130e0565b60e08501516001600160a01b039182169116610c1460208901896130e0565b6001600160a01b03167f7eeb6bfbad309e542bb2faa2e55a0979e8e949e49301761186ce184a8b0257f560405160405180910390a4505050505050565b6006546001600160a01b0316632500f2b6610c6a6125b4565b6040518263ffffffff1660e01b8152600401610c8691906134df565b60206040518083038186803b158015610c9e57600080fd5b505afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd6919061326d565b604051806040016040528060028152602001611b9b60f11b81525090610d0f5760405162461bcd60e51b815260040161033c91906135e7565b506007546040516305b0e2cf60e21b81526001600160a01b03909116906316c38b3c90610d409084906004016135dc565b600060405180830381600087803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b5050505050565b6006546001600160a01b0316637be53ca1610d8e6125b4565b6040518263ffffffff1660e01b8152600401610daa91906134df565b60206040518083038186803b158015610dc257600080fd5b505afa158015610dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfa919061326d565b60405180604001604052806002815260200161333360f01b81525090610e335760405162461bcd60e51b815260040161033c91906135e7565b50610e3c612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610e6c9085906004016134df565b60206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebc9190613289565b9050610ec9816001612c24565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610efc918691906004016135c3565b600060405180830381600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a9150600090a25050565b6006546001600160a01b0316637be53ca1610f7f6125b4565b6040518263ffffffff1660e01b8152600401610f9b91906134df565b60206040518083038186803b158015610fb357600080fd5b505afa158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610feb919061326d565b60405180604001604052806002815260200161333360f01b815250906110245760405162461bcd60e51b815260040161033c91906135e7565b5061102d612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061105d9088906004016134df565b60206040518083038186803b15801561107557600080fd5b505afa158015611089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ad9190613289565b90508284111560405180604001604052806002815260200161373560f01b815250906110ec5760405162461bcd60e51b815260040161033c91906135e7565b50821561117d57604080518082019091526002815261373560f01b6020820152612710831161112e5760405162461bcd60e51b815260040161033c91906135e7565b5061271061113c8484612c52565b111560405180604001604052806002815260200161373560f01b815250906111775760405162461bcd60e51b815260040161033c91906135e7565b506111bf565b604080518082019091526002815261373560f01b602082015282156111b55760405162461bcd60e51b815260040161033c91906135e7565b506111bf856125b8565b6111c98185612cc9565b6111d38184612d12565b6111dd8183612d63565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611210918991906004016135c3565b600060405180830381600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b50505050846001600160a01b03167f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb099585858560405161127f939291906137b7565b60405180910390a25050505050565b6006546001600160a01b0316637be53ca16112a76125b4565b6040518263ffffffff1660e01b81526004016112c391906134df565b60206040518083038186803b1580156112db57600080fd5b505afa1580156112ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611313919061326d565b60405180604001604052806002815260200161333360f01b8152509061134c5760405162461bcd60e51b815260040161033c91906135e7565b506007546001600160a01b0316611361612fee565b6001600160a01b0382166335ea6a7561137d60208601866130e0565b6040518263ffffffff1660e01b815260040161139991906134df565b6101806040518083038186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906132a4565b9050600061140d6001600160a01b03841663c44b11f7610a7160208801886130e0565b50935050505061141b613059565b6040518060600160405280856001600160a01b0316815260200160006001600160a01b0316815260200186600001602081019061145891906130e0565b6001600160a01b0316905290506060638bd3a60d60e01b8261147d6020890189613812565b61148a60408b018b613812565b8861149860808e018e6137cd565b6040516024016114af9897969594939291906136fe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526101008501519091506114fe90610bdf6080890160608a016130e0565b61150e60808701606088016130e0565b6101008501516001600160a01b03918216911661152e60208901896130e0565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a4505050505050565b6006546001600160a01b0316637be53ca16115846125b4565b6040518263ffffffff1660e01b81526004016115a091906134df565b60206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f0919061326d565b60405180604001604052806002815260200161333360f01b815250906116295760405162461bcd60e51b815260040161033c91906135e7565b50611632612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906116629085906004016134df565b60206040518083038186803b15801561167a57600080fd5b505afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b29190613289565b90506116bf816000612db6565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916116f2918691906004016135c3565b600060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b6006546001600160a01b0316637be53ca16117756125b4565b6040518263ffffffff1660e01b815260040161179191906134df565b60206040518083038186803b1580156117a957600080fd5b505afa1580156117bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e1919061326d565b60405180604001604052806002815260200161333360f01b8152509061181a5760405162461bcd60e51b815260040161033c91906135e7565b50611823612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906118539085906004016134df565b60206040518083038186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190613289565b90506118b0816001612719565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916118e3918691906004016135c3565b600060405180830381600087803b1580156118fd57600080fd5b505af1158015611911573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b6006546001600160a01b0316637be53ca16119666125b4565b6040518263ffffffff1660e01b815260040161198291906134df565b60206040518083038186803b15801561199a57600080fd5b505afa1580156119ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d2919061326d565b60405180604001604052806002815260200161333360f01b81525090611a0b5760405162461bcd60e51b815260040161033c91906135e7565b50611a14612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611a449085906004016134df565b60206040518083038186803b158015611a5c57600080fd5b505afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a949190613289565b9050611aa1816001612de4565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611ad4918691906004016135c3565b600060405180830381600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b6006546001600160a01b0316637be53ca1611b576125b4565b6040518263ffffffff1660e01b8152600401611b7391906134df565b60206040518083038186803b158015611b8b57600080fd5b505afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc3919061326d565b60405180604001604052806002815260200161333360f01b81525090611bfc5760405162461bcd60e51b815260040161033c91906135e7565b506007546001600160a01b0316611c11612fee565b6001600160a01b0382166335ea6a75611c2d60208601866130e0565b6040518263ffffffff1660e01b8152600401611c4991906134df565b6101806040518083038186803b158015611c6257600080fd5b505afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a91906132a4565b90506000611cbd6001600160a01b03841663c44b11f7610a7160208801886130e0565b509350505050611ccb613059565b6040518060600160405280856001600160a01b0316815260200160006001600160a01b03168152602001866000016020810190611d0891906130e0565b6001600160a01b0316905290506060638bd3a60d60e01b82611d2d6020890189613812565b611d3a60408b018b613812565b88611d4860808e018e6137cd565b604051602401611d5f9897969594939291906136fe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610120850151909150611dae90610bdf6080890160608a016130e0565b611dbe60808701606088016130e0565b6101208501516001600160a01b039182169116611dde60208901896130e0565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a4505050505050565b60016000611e27612e12565b9050600080611e368484612e17565b9150915084600660006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e9a57600080fd5b505afa158015611eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed291906130fc565b600780546001600160a01b0319166001600160a01b039290921691909117905580611efd5760018490555b600680546001600160a01b0319166001600160a01b03871690811790915560408051630261bf8b60e01b81529051630261bf8b91600480820192602092909190829003018186803b158015611f5157600080fd5b505afa158015611f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8991906130fc565b600780546001600160a01b0319166001600160a01b039290921691909117905580611fb45760008490555b81610d6e57505060009081556001555050565b6000611fd1612e12565b905090565b6006546001600160a01b0316637be53ca1611fef6125b4565b6040518263ffffffff1660e01b815260040161200b91906134df565b60206040518083038186803b15801561202357600080fd5b505afa158015612037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205b919061326d565b60405180604001604052806002815260200161333360f01b815250906120945760405162461bcd60e51b815260040161033c91906135e7565b5061209d612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906120cd9086906004016134df565b60206040518083038186803b1580156120e557600080fd5b505afa1580156120f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211d9190613289565b905061212a816001612db6565b6121348183612de4565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691612167918791906004016135c3565b600060405180830381600087803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b50505050826001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b508836040516107da91906135dc565b6006546001600160a01b0316637be53ca16121eb6125b4565b6040518263ffffffff1660e01b815260040161220791906134df565b60206040518083038186803b15801561221f57600080fd5b505afa158015612233573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612257919061326d565b60405180604001604052806002815260200161333360f01b815250906122905760405162461bcd60e51b815260040161033c91906135e7565b50612299612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906122c99085906004016134df565b60206040518083038186803b1580156122e157600080fd5b505afa1580156122f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123199190613289565b9050612326816000612c24565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691612359918691906004016135c3565b600060405180830381600087803b15801561237357600080fd5b505af1158015612387573d6000803e3d6000fd5b50506040516001600160a01b03851692507f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb0719647609150600090a25050565b6006546001600160a01b0316637be53ca16123dc6125b4565b6040518263ffffffff1660e01b81526004016123f891906134df565b60206040518083038186803b15801561241057600080fd5b505afa158015612424573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612448919061326d565b60405180604001604052806002815260200161333360f01b815250906124815760405162461bcd60e51b815260040161033c91906135e7565b5061248a612fdb565b60075460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906124ba9085906004016134df565b60206040518083038186803b1580156124d257600080fd5b505afa1580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190613289565b9050612517816000612de4565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161254a918691906004016135c3565b600060405180830381600087803b15801561256457600080fd5b505af1158015612578573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b3390565b6125c0612fee565b6007546040516335ea6a7560e01b81526001600160a01b03909116906335ea6a75906125f09085906004016134df565b6101806040518083038186803b15801561260957600080fd5b505afa15801561261d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264191906132a4565b90506000826001600160a01b03166370a082318360e001516040518263ffffffff1660e01b815260040161267591906134df565b60206040518083038186803b15801561268d57600080fd5b505afa1580156126a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c5919061340f565b9050801580156126e0575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b815250906108ec5760405162461bcd60e51b815260040161033c91906135e7565b60388161272757600061272a565b60015b8351670100000000000000191660ff9190911690911b1790915250565b604080518082019091526002815261373160f01b602082015261ffff8211156127835760405162461bcd60e51b815260040161033c91906135e7565b50815169ffff0000000000000000191660409190911b179052565b6127a6613059565b60408051606081019091526001600160a01b0384168152602081016127d160e0850160c086016130e0565b6001600160a01b031681526020016127ef60c0850160a086016130e0565b6001600160a01b031690529050600061289f61280e60208501856130e0565b638bd3a60d60e01b84612825610100880188613812565b6128336101208a018a613812565b61284360808c0160608d01613427565b6128516101c08d018d6137cd565b60405160240161286898979695949392919061375c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612ef4565b905060006128f96128b660408601602087016130e0565b638bd3a60d60e01b856128cd610180890189613812565b6128db6101a08b018b613812565b6128eb60808d0160608e01613427565b6128516101c08e018e6137cd565b9050600061295361291060608701604088016130e0565b638bd3a60d60e01b866129276101408a018a613812565b6129356101608c018c613812565b61294560808e0160608f01613427565b6128516101c08f018f6137cd565b6007549091506001600160a01b0316637a708e9261297760c0880160a089016130e0565b85858561298a60a08c0160808d016130e0565b6040518663ffffffff1660e01b81526004016129aa959493929190613530565b600060405180830381600087803b1580156129c457600080fd5b505af11580156129d8573d6000803e3d6000fd5b505050506129e4612fdb565b6007546001600160a01b031663c44b11f7612a0560c0890160a08a016130e0565b6040518263ffffffff1660e01b8152600401612a2191906134df565b60206040518083038186803b158015612a3957600080fd5b505afa158015612a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a719190613289565b9050612a90612a866080880160608901613427565b829060ff16612f82565b612a9b816001612719565b612aa6816000612c24565b6007546001600160a01b031663b8d29276612ac760c0890160a08a016130e0565b83516040516001600160e01b031960e085901b168152612aeb9291906004016135c3565b600060405180830381600087803b158015612b0557600080fd5b505af1158015612b19573d6000803e3d6000fd5b5050506001600160a01b0385169050612b3860c0880160a089016130e0565b6001600160a01b03167f3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f8585612b7460a08c0160808d016130e0565b604051612b839392919061350d565b60405180910390a350505050505050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690612bed9085908590600401613597565b600060405180830381600087803b158015612c0757600080fd5b505af1158015612c1b573d6000803e3d6000fd5b50505050505050565b603981612c32576000612c35565b60015b8351670200000000000000191660ff9190911690911b1790915250565b6000821580612c5f575081155b15612c6c57506000612cc3565b816113881981612c7857fe5b0483111560405180604001604052806002815260200161068760f31b81525090612cb55760405162461bcd60e51b815260040161033c91906135e7565b505061271061138882840201045b92915050565b604080518082019091526002815261363760f01b602082015261ffff821115612d055760405162461bcd60e51b815260040161033c91906135e7565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff821115612d4e5760405162461bcd60e51b815260040161033c91906135e7565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff821115612d9f5760405162461bcd60e51b815260040161033c91906135e7565b50815165ffff00000000191660209190911b179052565b603a81612dc4576000612dc7565b60015b8351670400000000000000191660ff9190911690911b1790915250565b603b81612df2576000612df5565b60015b8351670800000000000000191660ff9190911690911b1790915250565b600190565b60008060008411612e3a5760405162461bcd60e51b815260040161033c906135fa565b82841115612e5a5760405162461bcd60e51b815260040161033c9061367f565b6000600154118015612e6d575082600054105b91508180612e7e5750612e7e612fd5565b80612e8a575060005483115b612ea65760405162461bcd60e51b815260040161033c90613631565b8115612ecd578360015411612ecd5760405162461bcd60e51b815260040161033c906136b6565b6000548411612ee9578115612ee157600180555b506001612eed565b5060005b9250929050565b600654604051633eba8a9760e11b81526000916001600160a01b031690637d75152e90612f2990309087908790600401613562565b602060405180830381600087803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7b91906130fc565b9392505050565b604080518082019091526002815261037360f41b602082015260ff821115612fbd5760405162461bcd60e51b815260040161033c91906135e7565b50815166ff000000000000191660309190911b179052565b303b1590565b6040518060200160405280600081525090565b604051806101800160405280613002612fdb565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b604080516060810182526000808252602082018190529181019190915290565b8051612cc38161386f565b600060208284031215613095578081fd5b61309f6020613848565b9151825250919050565b80516001600160801b0381168114612cc357600080fd5b805164ffffffffff81168114612cc357600080fd5b8051612cc381613895565b6000602082840312156130f1578081fd5b8135612f7b8161386f565b60006020828403121561310d578081fd5b8151612f7b8161386f565b6000806040838503121561312a578081fd5b82356131358161386f565b915060208301356131458161386f565b809150509250929050565b60008060408385031215613162578182fd5b823561316d8161386f565b9150602083013561314581613887565b6000806040838503121561318f578182fd5b823561319a8161386f565b946020939093013593505050565b600080600080608085870312156131bd578182fd5b84356131c88161386f565b966020860135965060408601359560600135945092505050565b600080602083850312156131f4578182fd5b823567ffffffffffffffff8082111561320b578384fd5b818501915085601f83011261321e578384fd5b81358181111561322c578485fd5b866020808302850101111561323f578485fd5b60209290920196919550909350505050565b600060208284031215613262578081fd5b8135612f7b81613887565b60006020828403121561327e578081fd5b8151612f7b81613887565b60006020828403121561329a578081fd5b612f7b8383613084565b60006101808083850312156132b7578182fd5b6132c081613848565b90506132cc8484613084565b81526132db84602085016130a9565b60208201526132ed84604085016130a9565b60408201526132ff84606085016130a9565b606082015261331184608085016130a9565b60808201526133238460a085016130a9565b60a08201526133358460c085016130c0565b60c08201526133478460e08501613079565b60e082015261010061335b85828601613079565b9082015261012061336e85858301613079565b9082015261014061338185858301613079565b90820152610160613394858583016130d5565b908201529392505050565b6000602082840312156133b0578081fd5b813567ffffffffffffffff8111156133c6578182fd5b820160a08185031215612f7b578182fd5b6000602082840312156133e8578081fd5b813567ffffffffffffffff8111156133fe578182fd5b820160c08185031215612f7b578182fd5b600060208284031215613420578081fd5b5051919050565b600060208284031215613438578081fd5b8135612f7b81613895565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452815b8181101561349257602081850181015186830182015201613476565b818111156134a35782602083870101525b50601f01601f19169290920160200192915050565b80516001600160a01b03908116835260208083015182169084015260409182015116910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b6001600160a01b0384811682528316602082015260606040820181905260009061358e9083018461346d565b95945050505050565b6001600160a01b03831681526040602082018190526000906135bb9083018461346d565b949350505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252612f7b602083018461346d565b6020808252601e908201527f696e636f727265637420696e697469616c697a6572207265766973696f6e0000604082015260600190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601b908201527f696e636f727265637420636f6e7472616374207265766973696f6e0000000000604082015260600190565b60208082526028908201527f696e636f7272656374206f72646572206f662063616c6c7320746f20696e697460408201526769616c697a65727360c01b606082015260800190565b600061370a828b6134b8565b60e0606083015261371f60e08301898b613443565b828103608084015261373281888a613443565b90508560a084015282810360c084015261374d818587613443565b9b9a5050505050505050505050565b6000613768828b6134b8565b60e0606083015261377d60e08301898b613443565b828103608084015261379081888a613443565b905060ff861660a084015282810360c084015261374d818587613443565b90815260200190565b9283526020830191909152604082015260600190565b6000808335601e198436030181126137e3578283fd5b83018035915067ffffffffffffffff8211156137fd578283fd5b602001915036819003821315612eed57600080fd5b6000808335601e198436030181126137e3578182fd5b600082356101de1983360301811261383e578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561386757600080fd5b604052919050565b6001600160a01b038116811461388457600080fd5b50565b801515811461388457600080fd5b60ff8116811461388457600080fdfea264697066735822122058571c41de90cc2c72d1da7d13b544bc356dbf869db130ad61cc6b5a1fb5bd7c64736