{
  "_format": "hh-sol-artifact-1",
  "contractName": "AaveProtocolDataProvider",
  "sourceName": "contracts/misc/AaveProtocolDataProvider.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ILendingPoolAddressesProvider",
          "name": "addressesProvider",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ADDRESSES_PROVIDER",
      "outputs": [
        {
          "internalType": "contract ILendingPoolAddressesProvider",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllATokens",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "internalType": "struct AaveProtocolDataProvider.TokenData[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllReservesTokens",
      "outputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            }
          ],
          "internalType": "struct AaveProtocolDataProvider.TokenData[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "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": "uint256",
          "name": "reserveFactor",
          "type": "uint256"
        },
        {
          "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": "isFrozen",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getReserveData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "availableLiquidity",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalStableDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalVariableDebt",
          "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": "asset",
          "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": [
        {
          "internalType": "address",
          "name": "asset",
          "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": "scaledVariableDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "stableBorrowRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidityRate",
          "type": "uint256"
        },
        {
          "internalType": "uint40",
          "name": "stableRateLastUpdated",
          "type": "uint40"
        },
        {
          "internalType": "bool",
          "name": "usageAsCollateralEnabled",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051611cbd380380611cbd83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c611c0b6100b26000398061015b528061019552806102ac52806107a75280610b2b5280610c7b5280610ff952806111295250611c0b6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906119bd565b60405180910390f35b6100b36100ae366004611656565b61017d565b60405161009799989796959493929190611b1e565b6100db6100d6366004611617565b61078e565b6040516100979a99989796959493929190611ad2565b6101046100ff366004611617565b610b12565b6040516100979a99989796959493929190611a83565b610122610c75565b60405161009791906119f4565b61014261013d366004611617565b610fea565b604051610097939291906119d1565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610224919061163a565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906119bd565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a091906117e0565b90506102aa611541565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b919061163a565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906119bd565b60606040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b691906118db565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016119bd565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104399190611954565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016119bd565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd9190611954565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016119bd565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611954565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016119bd565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190611954565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016119bd565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190611954565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906119bd565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc9190611954565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016119bd565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610760919061196c565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610836919061163a565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906119bd565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906117e0565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016119bd565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109349190611954565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190611954565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190611954565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611954565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b29611561565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba919061163a565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906119bd565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3591906117c5565b9050610c408161146f565b909e50929c50909a5098509650610c568161149a565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061163a565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061168e565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611574565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d9190810190611739565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611088919061163a565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906119bd565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110491906117e0565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b8919061163a565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061168e565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611574565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114d6565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906119bd565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e91906117e0565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b49190810190611739565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b6000610100821060405180604001604052806002815260200161373760f01b815250906114335760405162461bcd60e51b815260040161142a9190611a70565b60405180910390fd5b506000608083049050608083069250826002026001018460000151826002811061145957fe5b60200201516001911c1615159150505b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114ea611561565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b604051806040016040528061155461158c565b8152602001600081525090565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b60405180604001604052806002906020820280368337509192915050565b805161146981611bbd565b6000602082840312156115c6578081fd5b6115d06020611b66565b9151825250919050565b80516001600160801b038116811461146957600080fd5b805164ffffffffff8116811461146957600080fd5b805160ff8116811461146957600080fd5b600060208284031215611628578081fd5b813561163381611bbd565b9392505050565b60006020828403121561164b578081fd5b815161163381611bbd565b60008060408385031215611668578081fd5b823561167381611bbd565b9150602083013561168381611bbd565b809150509250929050565b600060208083850312156116a0578182fd5b825167ffffffffffffffff808211156116b7578384fd5b818501915085601f8301126116ca578384fd5b8151818111156116d8578485fd5b83810291506116e8848301611b66565b8181528481019084860184860187018a1015611702578788fd5b8795505b8386101561172c576117188a826115aa565b835260019590950194918601918601611706565b5098975050505050505050565b60006020828403121561174a578081fd5b815167ffffffffffffffff80821115611761578283fd5b818401915084601f830112611774578283fd5b815181811115611782578384fd5b611795601f8201601f1916602001611b66565b91508082528560208285010111156117ab578384fd5b6117bc816020840160208601611b8d565b50949350505050565b6000602082840312156117d6578081fd5b61163383836115b5565b60006101808083850312156117f3578182fd5b6117fc81611b66565b905061180884846115b5565b815261181784602085016115da565b602082015261182984604085016115da565b604082015261183b84606085016115da565b606082015261184d84608085016115da565b608082015261185f8460a085016115da565b60a08201526118718460c085016115f1565b60c08201526118838460e085016115aa565b60e0820152610100611897858286016115aa565b908201526101206118aa858583016115aa565b908201526101406118bd858583016115aa565b908201526101606118d085858301611606565b908201529392505050565b6000606082840312156118ec578081fd5b6118f66040611b66565b83601f840112611904578182fd5b61190e6040611b66565b80846040860187811115611920578586fd5b855b6002811015611941578251855260209485019490920191600101611922565b5091845250516020830152509392505050565b600060208284031215611965578081fd5b5051919050565b60006020828403121561197d578081fd5b815164ffffffffff81168114611633578182fd5b600081518084526119a9816020860160208601611b8d565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015611a6257888303603f1901855281518051878552611a3c88860182611991565b918901516001600160a01b03169489019490945294870194925090860190600101611a18565b509098975050505050505050565b6000602082526116336020830184611991565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611b8557600080fd5b604052919050565b60005b83811015611ba8578181015183820152602001611b90565b83811115611bb7576000848401525b50505050565b6001600160a01b0381168114611bd257600080fd5b5056fea2646970667358221220341c5b77055e6f2cf12f2feb0feac4b3f3c6d3407b1a0212a04b42805916877c64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906119bd565b60405180910390f35b6100b36100ae366004611656565b61017d565b60405161009799989796959493929190611b1e565b6100db6100d6366004611617565b61078e565b6040516100979a99989796959493929190611ad2565b6101046100ff366004611617565b610b12565b6040516100979a99989796959493929190611a83565b610122610c75565b60405161009791906119f4565b61014261013d366004611617565b610fea565b604051610097939291906119d1565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610224919061163a565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906119bd565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a091906117e0565b90506102aa611541565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b919061163a565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906119bd565b60606040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b691906118db565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016119bd565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104399190611954565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016119bd565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd9190611954565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016119bd565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611954565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016119bd565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190611954565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016119bd565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106499190611954565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906119bd565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc9190611954565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016119bd565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610760919061196c565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610836919061163a565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906119bd565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906117e0565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016119bd565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109349190611954565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190611954565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190611954565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190611954565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b29611561565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba919061163a565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906119bd565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3591906117c5565b9050610c408161146f565b909e50929c50909a5098509650610c568161149a565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a919061163a565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061168e565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611574565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d9190810190611739565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611088919061163a565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906119bd565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110491906117e0565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b8919061163a565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061168e565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611574565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114d6565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906119bd565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e91906117e0565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b49190810190611739565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b6000610100821060405180604001604052806002815260200161373760f01b815250906114335760405162461bcd60e51b815260040161142a9190611a70565b60405180910390fd5b506000608083049050608083069250826002026001018460000151826002811061145957fe5b60200201516001911c1615159150505b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114ea611561565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b604051806040016040528061155461158c565b8152602001600081525090565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b60405180604001604052806002906020820280368337509192915050565b805161146981611bbd565b6000602082840312156115c6578081fd5b6115d06020611b66565b9151825250919050565b80516001600160801b038116811461146957600080fd5b805164ffffffffff8116811461146957600080fd5b805160ff8116811461146957600080fd5b600060208284031215611628578081fd5b813561163381611bbd565b9392505050565b60006020828403121561164b578081fd5b815161163381611bbd565b60008060408385031215611668578081fd5b823561167381611bbd565b9150602083013561168381611bbd565b809150509250929050565b600060208083850312156116a0578182fd5b825167ffffffffffffffff808211156116b7578384fd5b818501915085601f8301126116ca578384fd5b8151818111156116d8578485fd5b83810291506116e8848301611b66565b8181528481019084860184860187018a1015611702578788fd5b8795505b8386101561172c576117188a826115aa565b835260019590950194918601918601611706565b5098975050505050505050565b60006020828403121561174a578081fd5b815167ffffffffffffffff80821115611761578283fd5b818401915084601f830112611774578283fd5b815181811115611782578384fd5b611795601f8201601f1916602001611b66565b91508082528560208285010111156117ab578384fd5b6117bc816020840160208601611b8d565b50949350505050565b6000602082840312156117d6578081fd5b61163383836115b5565b60006101808083850312156117f3578182fd5b6117fc81611b66565b905061180884846115b5565b815261181784602085016115da565b602082015261182984604085016115da565b604082015261183b84606085016115da565b606082015261184d84608085016115da565b608082015261185f8460a085016115da565b60a08201526118718460c085016115f1565b60c08201526118838460e085016115aa565b60e0820152610100611897858286016115aa565b908201526101206118aa858583016115aa565b908201526101406118bd858583016115aa565b908201526101606118d085858301611606565b908201529392505050565b6000606082840312156118ec578081fd5b6118f66040611b66565b83601f840112611904578182fd5b61190e6040611b66565b80846040860187811115611920578586fd5b855b6002811015611941578251855260209485019490920191600101611922565b5091845250516020830152509392505050565b600060208284031215611965578081fd5b5051919050565b60006020828403121561197d578081fd5b815164ffffffffff81168114611633578182fd5b600081518084526119a9816020860160208601611b8d565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015611a6257888303603f1901855281518051878552611a3c88860182611991565b918901516001600160a01b03169489019490945294870194925090860190600101611a18565b509098975050505050505050565b6000602082526116336020830184611991565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611b8557600080fd5b604052919050565b60005b83811015611ba8578181015183820152602001611b90565b83811115611bb7576000848401525b50505050565b6001600160a01b0381168114611bd257600080fd5b5056fea2646970667358221220341c5b77055e6f2cf12f2feb0feac4b3f3c6d3407b1a0212a04b42805916877c64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
