{
  "_format": "hh-sol-artifact-1",
  "contractName": "UiPoolDataProvider",
  "sourceName": "contracts/misc/UiPoolDataProvider.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "_incentivesController",
          "type": "address"
        },
        {
          "internalType": "contract IPriceOracleGetter",
          "name": "_oracle",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "MOCK_USD_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILendingPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getReservesData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "name",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "symbol",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "decimals",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "baseLTVasCollateral",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveLiquidationThreshold",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveLiquidationBonus",
              "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"
            },
            {
              "internalType": "uint128",
              "name": "liquidityIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "variableBorrowIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "liquidityRate",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "variableBorrowRate",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "stableBorrowRate",
              "type": "uint128"
            },
            {
              "internalType": "uint40",
              "name": "lastUpdateTimestamp",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "aTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stableDebtTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "variableDebtTokenAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "interestRateStrategyAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "availableLiquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalPrincipalStableDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "averageStableRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stableDebtLastUpdateTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "totalScaledVariableDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "priceInEth",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "variableRateSlope1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "variableRateSlope2",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stableRateSlope1",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stableRateSlope2",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "aEmissionPerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vEmissionPerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sEmissionPerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "aIncentivesLastUpdateTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vIncentivesLastUpdateTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sIncentivesLastUpdateTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "aTokenIncentivesIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vTokenIncentivesIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sTokenIncentivesIndex",
              "type": "uint256"
            }
          ],
          "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "underlyingAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "scaledATokenBalance",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "usageAsCollateralEnabledOnUser",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "stableBorrowRate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "scaledVariableDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "principalStableDebt",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "stableBorrowLastUpdateTimestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "aTokenincentivesUserIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "vTokenincentivesUserIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "sTokenincentivesUserIndex",
              "type": "uint256"
            }
          ],
          "internalType": "struct IUiPoolDataProvider.UserReserveData[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "incentivesController",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oracle",
      "outputs": [
        {
          "internalType": "contract IPriceOracleGetter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200216a3803806200216a833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c6120606200010a6000398060a45280610487528061106d5250806107d9528061081b52806108da52806109995280610a555280610a7c5280610b3b5280610bfb528061111d52806111ce52506120606000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637dc0d1d01461005157806387e40db71461006f578063af1df25514610092578063b8c0a5b11461009a575b600080fd5b6100596100a2565b6040516100669190611e9b565b60405180910390f35b61008261007d3660046118b0565b6100c6565b6040516100669493929190611ec9565b6100596111cc565b6100596111f0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060806000806000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010757600080fd5b505afa15801561011b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013f91906117e2565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017c57600080fd5b505afa158015610190573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b89190810190611805565b90506101c26114fb565b604051634417a58360e01b81526001600160a01b03841690634417a583906101ee908b90600401611e9b565b60206040518083038186803b15801561020657600080fd5b505afa15801561021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023e9190611a6f565b90506060825167ffffffffffffffff8111801561025a57600080fd5b5060405190808252806020026020018201604052801561029457816020015b61028161150e565b8152602001906001900390816102795790505b50905060606001600160a01b038a166102ae5760006102b1565b83515b67ffffffffffffffff811180156102c757600080fd5b5060405190808252806020026020018201604052801561030157816020015b6102ee6116ac565b8152602001906001900390816102e65790505b50905060005b84518110156110685761031861150e565b83828151811061032457fe5b6020026020010151905085828151811061033a57fe5b60209081029190910101516001600160a01b0316815261035861170a565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a75916103859190600401611e9b565b6101806040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190611974565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916104ba91600401611e9b565b60206040518083038186803b1580156104d257600080fd5b505afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a9190611acc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a082319161054391600401611e9b565b60206040518083038186803b15801561055b57600080fd5b505afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611acc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190611ae4565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611acc565b826103600181815250508161026001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106f557600080fd5b505afa158015610709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073191908101906118e8565b604080840191909152805160208082019092526000815290830152805161075790611208565b60e0870152606086015260c085015260a08401526080830152805161077b90611233565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516107b79061126f565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a3c57610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161084f9190600401611e9b565b60606040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190611a8a565b6104e08501526001600160801b0390811661048085015216610420830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161090e9190600401611e9b565b60606040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190611a8a565b6105208501526001600160801b039081166104c0850152166104608301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916109cd9190600401611e9b565b60606040518083038186803b1580156109e557600080fd5b505afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611a8a565b6105008501526001600160801b039081166104a0850152166104408301525b6001600160a01b038d161561105e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610cba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401610acd929190611eaf565b60206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190611acc565b848481518110610b2957fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b8152600401610b8c929190611eaf565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611acc565b848481518110610be857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b8152600401610c4c929190611eaf565b60206040518083038186803b158015610c6457600080fd5b505afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190611acc565b848481518110610ca857fe5b60200260200101516101200181815250505b8160000151848481518110610ccb57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610d209190611e9b565b60206040518083038186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190611acc565b848481518110610d7c57fe5b6020908102919091018101510152610d948684611448565b848481518110610da057fe5b6020908102919091010151901515604090910152610dbe86846114aa565b1561105e57816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610df49190611e9b565b60206040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611acc565b848481518110610e5057fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b8152600401610e919190611e9b565b60206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee19190611acc565b848481518110610eed57fe5b602002602001015160a0018181525050838381518110610f0957fe5b602002602001015160a0015160001461105e578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b8152600401610f4d9190611e9b565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611acc565b848481518110610fa957fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b8152600401610fea9190611e9b565b60206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611b24565b64ffffffffff1684848151811061104d57fe5b602002602001015160c00181815250505b5050600101610307565b5081817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b81526004016110cb9190611e9b565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190611acc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663198fa81e8e6040518263ffffffff1660e01b81526004016111679190611e9b565b60206040518083038186803b15801561117f57600080fd5b505afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611acc565b929e919d509b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190611acc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113579190611acc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190611acc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611acc565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b815250906114905760405162461bcd60e51b81526004016114879190611f77565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906114e95760405162461bcd60e51b81526004016114879190611f77565b50509051600160029092021c16151590565b6040518060200160405280600081525090565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610180016040528061171e6114fb565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b80516114a481611fea565b600060208284031215611791578081fd5b61179b6020611f8a565b9151825250919050565b80516001600160801b03811681146114a457600080fd5b805164ffffffffff811681146114a457600080fd5b805160ff811681146114a457600080fd5b6000602082840312156117f3578081fd5b81516117fe81611fea565b9392505050565b60006020808385031215611817578182fd5b825167ffffffffffffffff8082111561182e578384fd5b818501915085601f830112611841578384fd5b81518181111561184f578485fd5b838102915061185f848301611f8a565b8181528481019084860184860187018a1015611879578788fd5b8795505b838610156118a35761188f8a82611775565b83526001959095019491860191860161187d565b5098975050505050505050565b600080604083850312156118c2578081fd5b82356118cd81611fea565b915060208301356118dd81611fea565b809150509250929050565b6000602082840312156118f9578081fd5b815167ffffffffffffffff80821115611910578283fd5b818401915084601f830112611923578283fd5b815181811115611931578384fd5b611944601f8201601f1916602001611f8a565b915080825285602082850101111561195a578384fd5b61196b816020840160208601611fba565b50949350505050565b6000610180808385031215611987578182fd5b61199081611f8a565b905061199c8484611780565b81526119ab84602085016117a5565b60208201526119bd84604085016117a5565b60408201526119cf84606085016117a5565b60608201526119e184608085016117a5565b60808201526119f38460a085016117a5565b60a0820152611a058460c085016117bc565b60c0820152611a178460e08501611775565b60e0820152610100611a2b85828601611775565b90820152610120611a3e85858301611775565b90820152610140611a5185858301611775565b90820152610160611a64858583016117d1565b908201529392505050565b600060208284031215611a80578081fd5b6117fe8383611780565b600080600060608486031215611a9e578081fd5b8351611aa981612002565b6020850151909350611aba81612002565b80925050604084015190509250925092565b600060208284031215611add578081fd5b5051919050565b60008060008060808587031215611af9578081fd5b8451935060208501519250604085015191506060850151611b1981612017565b939692955090935050565b600060208284031215611b35578081fd5b81516117fe81612017565b6000610540611b50848451611e44565b6020830151816020860152611b6782860182611e57565b91505060408301518482036040860152611b818282611e57565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611bc982870182611e51565b505061012080840151611bde82870182611e51565b505061014080840151611bf382870182611e51565b505061016080840151611c0882870182611e51565b505061018080840151611c1d82870182611e51565b50506101a080840151611c3282870182611e83565b50506101c080840151611c4782870182611e83565b50506101e080840151611c5c82870182611e83565b505061020080840151611c7182870182611e83565b505061022080840151611c8682870182611e83565b505061024080840151611c9b82870182611e90565b505061026080840151611cb082870182611e44565b505061028080840151611cc582870182611e44565b50506102a080840151611cda82870182611e44565b50506102c080840151611cef82870182611e44565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151908501526104c080840151908501526104e0808401519085015261050080840151908501526105209283015192909301919091525090565b6000611dd7838351611e44565b602082015160208401526040820151611df36040850182611e51565b5050606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012090810151908201526101400190565b6001600160a01b03169052565b15159052565b60008151808452611e6f816020860160208601611fba565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b60006080820160808352808751611ee08184611fb1565b915081925060208082028301818b01865b84811015611f1b578683038652611f09838351611b40565b95840195925090830190600101611ef1565b50508681038288015280945089519350611f358482611fb1565b9450508089019150845b83811015611f6057611f52858451611dca565b945091810191600101611f3f565b505050506040830194909452506060015292915050565b6000602082526117fe6020830184611e57565b60405181810167ffffffffffffffff81118282101715611fa957600080fd5b604052919050565b90815260200190565b60005b83811015611fd5578181015183820152602001611fbd565b83811115611fe4576000848401525b50505050565b6001600160a01b0381168114611fff57600080fd5b50565b6001600160801b0381168114611fff57600080fd5b64ffffffffff81168114611fff57600080fdfea2646970667358221220e724b03f0d15876a50ba0854d713d950bc4c89e60ceae0604da1a4ff2903d0ab64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80637dc0d1d01461005157806387e40db71461006f578063af1df25514610092578063b8c0a5b11461009a575b600080fd5b6100596100a2565b6040516100669190611e9b565b60405180910390f35b61008261007d3660046118b0565b6100c6565b6040516100669493929190611ec9565b6100596111cc565b6100596111f0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060806000806000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010757600080fd5b505afa15801561011b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013f91906117e2565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017c57600080fd5b505afa158015610190573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b89190810190611805565b90506101c26114fb565b604051634417a58360e01b81526001600160a01b03841690634417a583906101ee908b90600401611e9b565b60206040518083038186803b15801561020657600080fd5b505afa15801561021a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023e9190611a6f565b90506060825167ffffffffffffffff8111801561025a57600080fd5b5060405190808252806020026020018201604052801561029457816020015b61028161150e565b8152602001906001900390816102795790505b50905060606001600160a01b038a166102ae5760006102b1565b83515b67ffffffffffffffff811180156102c757600080fd5b5060405190808252806020026020018201604052801561030157816020015b6102ee6116ac565b8152602001906001900390816102e65790505b50905060005b84518110156110685761031861150e565b83828151811061032457fe5b6020026020010151905085828151811061033a57fe5b60209081029190910101516001600160a01b0316815261035861170a565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a75916103859190600401611e9b565b6101806040518083038186803b15801561039e57600080fd5b505afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190611974565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916104ba91600401611e9b565b60206040518083038186803b1580156104d257600080fd5b505afa1580156104e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050a9190611acc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a082319161054391600401611e9b565b60206040518083038186803b15801561055b57600080fd5b505afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611acc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b1580156105db57600080fd5b505afa1580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106139190611ae4565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190611acc565b826103600181815250508161026001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106f557600080fd5b505afa158015610709573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261073191908101906118e8565b604080840191909152805160208082019092526000815290830152805161075790611208565b60e0870152606086015260c085015260a08401526080830152805161077b90611233565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516107b79061126f565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a3c57610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161084f9190600401611e9b565b60606040518083038186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190611a8a565b6104e08501526001600160801b0390811661048085015216610420830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161090e9190600401611e9b565b60606040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190611a8a565b6105208501526001600160801b039081166104c0850152166104608301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916109cd9190600401611e9b565b60606040518083038186803b1580156109e557600080fd5b505afa1580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190611a8a565b6105008501526001600160801b039081166104a0850152166104408301525b6001600160a01b038d161561105e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610cba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401610acd929190611eaf565b60206040518083038186803b158015610ae557600080fd5b505afa158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190611acc565b848481518110610b2957fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b8152600401610b8c929190611eaf565b60206040518083038186803b158015610ba457600080fd5b505afa158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190611acc565b848481518110610be857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b8152600401610c4c929190611eaf565b60206040518083038186803b158015610c6457600080fd5b505afa158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190611acc565b848481518110610ca857fe5b60200260200101516101200181815250505b8160000151848481518110610ccb57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610d209190611e9b565b60206040518083038186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190611acc565b848481518110610d7c57fe5b6020908102919091018101510152610d948684611448565b848481518110610da057fe5b6020908102919091010151901515604090910152610dbe86846114aa565b1561105e57816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b8152600401610df49190611e9b565b60206040518083038186803b158015610e0c57600080fd5b505afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190611acc565b848481518110610e5057fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b8152600401610e919190611e9b565b60206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee19190611acc565b848481518110610eed57fe5b602002602001015160a0018181525050838381518110610f0957fe5b602002602001015160a0015160001461105e578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b8152600401610f4d9190611e9b565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190611acc565b848481518110610fa957fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b8152600401610fea9190611e9b565b60206040518083038186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611b24565b64ffffffffff1684848151811061104d57fe5b602002602001015160c00181815250505b5050600101610307565b5081817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b81526004016110cb9190611e9b565b60206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b9190611acc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663198fa81e8e6040518263ffffffff1660e01b81526004016111679190611e9b565b60206040518083038186803b15801561117f57600080fd5b505afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611acc565b929e919d509b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190611acc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113579190611acc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190611acc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114399190611acc565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b815250906114905760405162461bcd60e51b81526004016114879190611f77565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906114e95760405162461bcd60e51b81526004016114879190611f77565b50509051600160029092021c16151590565b6040518060200160405280600081525090565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610180016040528061171e6114fb565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b80516114a481611fea565b600060208284031215611791578081fd5b61179b6020611f8a565b9151825250919050565b80516001600160801b03811681146114a457600080fd5b805164ffffffffff811681146114a457600080fd5b805160ff811681146114a457600080fd5b6000602082840312156117f3578081fd5b81516117fe81611fea565b9392505050565b60006020808385031215611817578182fd5b825167ffffffffffffffff8082111561182e578384fd5b818501915085601f830112611841578384fd5b81518181111561184f578485fd5b838102915061185f848301611f8a565b8181528481019084860184860187018a1015611879578788fd5b8795505b838610156118a35761188f8a82611775565b83526001959095019491860191860161187d565b5098975050505050505050565b600080604083850312156118c2578081fd5b82356118cd81611fea565b915060208301356118dd81611fea565b809150509250929050565b6000602082840312156118f9578081fd5b815167ffffffffffffffff80821115611910578283fd5b818401915084601f830112611923578283fd5b815181811115611931578384fd5b611944601f8201601f1916602001611f8a565b915080825285602082850101111561195a578384fd5b61196b816020840160208601611fba565b50949350505050565b6000610180808385031215611987578182fd5b61199081611f8a565b905061199c8484611780565b81526119ab84602085016117a5565b60208201526119bd84604085016117a5565b60408201526119cf84606085016117a5565b60608201526119e184608085016117a5565b60808201526119f38460a085016117a5565b60a0820152611a058460c085016117bc565b60c0820152611a178460e08501611775565b60e0820152610100611a2b85828601611775565b90820152610120611a3e85858301611775565b90820152610140611a5185858301611775565b90820152610160611a64858583016117d1565b908201529392505050565b600060208284031215611a80578081fd5b6117fe8383611780565b600080600060608486031215611a9e578081fd5b8351611aa981612002565b6020850151909350611aba81612002565b80925050604084015190509250925092565b600060208284031215611add578081fd5b5051919050565b60008060008060808587031215611af9578081fd5b8451935060208501519250604085015191506060850151611b1981612017565b939692955090935050565b600060208284031215611b35578081fd5b81516117fe81612017565b6000610540611b50848451611e44565b6020830151816020860152611b6782860182611e57565b91505060408301518482036040860152611b818282611e57565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611bc982870182611e51565b505061012080840151611bde82870182611e51565b505061014080840151611bf382870182611e51565b505061016080840151611c0882870182611e51565b505061018080840151611c1d82870182611e51565b50506101a080840151611c3282870182611e83565b50506101c080840151611c4782870182611e83565b50506101e080840151611c5c82870182611e83565b505061020080840151611c7182870182611e83565b505061022080840151611c8682870182611e83565b505061024080840151611c9b82870182611e90565b505061026080840151611cb082870182611e44565b505061028080840151611cc582870182611e44565b50506102a080840151611cda82870182611e44565b50506102c080840151611cef82870182611e44565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151908501526104c080840151908501526104e0808401519085015261050080840151908501526105209283015192909301919091525090565b6000611dd7838351611e44565b602082015160208401526040820151611df36040850182611e51565b5050606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012090810151908201526101400190565b6001600160a01b03169052565b15159052565b60008151808452611e6f816020860160208601611fba565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b60006080820160808352808751611ee08184611fb1565b915081925060208082028301818b01865b84811015611f1b578683038652611f09838351611b40565b95840195925090830190600101611ef1565b50508681038288015280945089519350611f358482611fb1565b9450508089019150845b83811015611f6057611f52858451611dca565b945091810191600101611f3f565b505050506040830194909452506060015292915050565b6000602082526117fe6020830184611e57565b60405181810167ffffffffffffffff81118282101715611fa957600080fd5b604052919050565b90815260200190565b60005b83811015611fd5578181015183820152602001611fbd565b83811115611fe4576000848401525b50505050565b6001600160a01b0381168114611fff57600080fd5b50565b6001600160801b0381168114611fff57600080fd5b64ffffffffff81168114611fff57600080fdfea2646970667358221220e724b03f0d15876a50ba0854d713d950bc4c89e60ceae0604da1a4ff2903d0ab64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
