{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockPoolInherited",
  "sourceName": "contracts/mocks/helpers/MockPool.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "backer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        }
      ],
      "name": "BackUnbacked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum DataTypes.InterestRateMode",
          "name": "interestRateMode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowRate",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "Borrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum DataTypes.InterestRateMode",
          "name": "interestRateMode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "premium",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "FlashLoan",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalDebt",
          "type": "uint256"
        }
      ],
      "name": "IsolationModeTotalDebtUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "collateralAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "debtAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "debtToCover",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidatedCollateralAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "receiveAToken",
          "type": "bool"
        }
      ],
      "name": "LiquidationCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "MintUnbacked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountMinted",
          "type": "uint256"
        }
      ],
      "name": "MintedToTreasury",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "RebalanceStableBorrowRate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "repayer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "useATokens",
          "type": "bool"
        }
      ],
      "name": "Repay",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidityRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stableBorrowRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "variableBorrowRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidityIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "variableBorrowIndex",
          "type": "uint256"
        }
      ],
      "name": "ReserveDataUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "ReserveUsedAsCollateralDisabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "ReserveUsedAsCollateralEnabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "Supply",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "enum DataTypes.InterestRateMode",
          "name": "interestRateMode",
          "type": "uint8"
        }
      ],
      "name": "SwapBorrowRateMode",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "categoryId",
          "type": "uint8"
        }
      ],
      "name": "UserEModeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "reserve",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ADDRESSES_PROVIDER",
      "outputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_PROTOCOL_FEE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FLASHLOAN_PREMIUM_TOTAL",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FLASHLOAN_PREMIUM_TO_PROTOCOL",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_NUMBER_RESERVES",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_STABLE_RATE_BORROW_SIZE_PERCENT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL_REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        }
      ],
      "name": "backUnbacked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRateMode",
          "type": "uint256"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "borrow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "ltv",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "liquidationThreshold",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "liquidationBonus",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "priceSource",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "label",
              "type": "string"
            }
          ],
          "internalType": "struct DataTypes.EModeCategory",
          "name": "category",
          "type": "tuple"
        }
      ],
      "name": "configureEModeCategory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "dropReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balanceFromBefore",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balanceToBefore",
          "type": "uint256"
        }
      ],
      "name": "finalizeTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiverAddress",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "interestRateModes",
          "type": "uint256[]"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "flashLoan",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiverAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "flashLoanSimple",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getConfiguration",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "data",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.ReserveConfigurationMap",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        }
      ],
      "name": "getEModeCategoryData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "ltv",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "liquidationThreshold",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "liquidationBonus",
              "type": "uint16"
            },
            {
              "internalType": "address",
              "name": "priceSource",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "label",
              "type": "string"
            }
          ],
          "internalType": "struct DataTypes.EModeCategory",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "id",
          "type": "uint16"
        }
      ],
      "name": "getReserveAddressById",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getReserveData",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "data",
                  "type": "uint256"
                }
              ],
              "internalType": "struct DataTypes.ReserveConfigurationMap",
              "name": "configuration",
              "type": "tuple"
            },
            {
              "internalType": "uint128",
              "name": "liquidityIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "currentLiquidityRate",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "variableBorrowIndex",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "currentVariableBorrowRate",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "currentStableBorrowRate",
              "type": "uint128"
            },
            {
              "internalType": "uint40",
              "name": "lastUpdateTimestamp",
              "type": "uint40"
            },
            {
              "internalType": "uint16",
              "name": "id",
              "type": "uint16"
            },
            {
              "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": "uint128",
              "name": "accruedToTreasury",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "unbacked",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "isolationModeTotalDebt",
              "type": "uint128"
            }
          ],
          "internalType": "struct DataTypes.ReserveData",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getReserveNormalizedIncome",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getReserveNormalizedVariableDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReservesList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserAccountData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalCollateralBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalDebtBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "availableBorrowsBase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentLiquidationThreshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "ltv",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "healthFactor",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserConfiguration",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "data",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.UserConfigurationMap",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getUserEMode",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "aTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "stableDebtAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "variableDebtAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "interestRateStrategyAddress",
          "type": "address"
        }
      ],
      "name": "initReserve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IPoolAddressesProvider",
          "name": "provider",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "collateralAsset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "debtAsset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "debtToCover",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "receiveAToken",
          "type": "bool"
        }
      ],
      "name": "liquidationCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        }
      ],
      "name": "mintToTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "mintUnbacked",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "rebalanceStableBorrowRate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRateMode",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "repay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRateMode",
          "type": "uint256"
        }
      ],
      "name": "repayWithATokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRateMode",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "permitV",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "permitR",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "permitS",
          "type": "bytes32"
        }
      ],
      "name": "repayWithPermit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rescueTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "resetIsolationModeTotalDebt",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "data",
              "type": "uint256"
            }
          ],
          "internalType": "struct DataTypes.ReserveConfigurationMap",
          "name": "configuration",
          "type": "tuple"
        }
      ],
      "name": "setConfiguration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "newMaxNumberOfReserves",
          "type": "uint16"
        }
      ],
      "name": "setMaxNumberOfReserves",
      "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": "uint8",
          "name": "categoryId",
          "type": "uint8"
        }
      ],
      "name": "setUserEMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "useAsCollateral",
          "type": "bool"
        }
      ],
      "name": "setUserUseReserveAsCollateral",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "supply",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "permitV",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "permitR",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "permitS",
          "type": "bytes32"
        }
      ],
      "name": "supplyWithPermit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "interestRateMode",
          "type": "uint256"
        }
      ],
      "name": "swapBorrowRateMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "protocolFee",
          "type": "uint256"
        }
      ],
      "name": "updateBridgeProtocolFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint128",
          "name": "flashLoanPremiumTotal",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "flashLoanPremiumToProtocol",
          "type": "uint128"
        }
      ],
      "name": "updateFlashloanPremiums",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405260008055603b805461ffff60501b19166a80000000000000000000001790553480156200003057600080fd5b50604051620056dc380380620056dc833981016040819052620000539162000065565b6001600160a01b031660805262000097565b6000602082840312156200007857600080fd5b81516001600160a01b03811681146200009057600080fd5b9392505050565b6080516155c7620001156000396000818161036101528181610bd201528181610cc4015281816111c7015281816117ea01528181611b14015281816122390152818161230a0152818161255d0152818161285801528181612ab9015281816131300152818161372d015281816138d40152613a6101526155c76000f3fe608060405234801561001057600080fd5b50600436106103145760003560e01c80636c6f6ae1116101a7578063d15e0053116100ee578063e82fec2f11610097578063ee3e210b11610071578063ee3e210b14610ad8578063f51e435b14610aeb578063f8119d5114610afe57600080fd5b8063e82fec2f14610a8d578063e8eda9df14610736578063eddf1b7914610a9f57600080fd5b8063d5ed3933116100c8578063d5ed393314610a54578063d65dc7a114610a67578063e43e88a114610a7a57600080fd5b8063d15e005314610a19578063d1946dbc14610a2c578063d579ea7d14610a4157600080fd5b8063bcb6e52211610150578063c4d66de81161012a578063c4d66de8146109e0578063cd112382146109f3578063cea9d26f14610a0657600080fd5b8063bcb6e5221461093e578063bf92857c14610951578063c44b11f71461099157600080fd5b80639cd19996116101815780639cd1999614610905578063a415bcad14610918578063ab9c4b5d1461092b57600080fd5b80636c6f6ae1146108bf5780637a708e92146108df57806394ba89a2146108f257600080fd5b8063386497fd1161026b5780635a3b74b91161021457806369328dec116101ee57806369328dec1461086b57806369a933a51461087e5780636a99c0361461089157600080fd5b80635a3b74b914610723578063617ba0371461073657806363c9b8601461074957600080fd5b806352751797116102455780635275179714610685578063573ade81146106bf57806357c68dc4146106d257600080fd5b8063386497fd1461060157806342b0b77c146106145780634417a5831461062757600080fd5b80631d2118f9116102cd5780632dad97d4116102a75780632dad97d41461040d5780633036b4391461042057806335ea6a751461043357600080fd5b80631d2118f9146103df578063272d9072146103f257806328530a47146103fa57600080fd5b806302c205f0116102fe57806302c205f0146103495780630542975c1461035c578063074b2e43146103a857600080fd5b8062a718a9146103195780630148170e1461032e575b600080fd5b61032c610327366004613f39565b610b26565b005b610336600181565b6040519081526020015b60405180910390f35b61032c610357366004613fc4565b610da1565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610340565b603a546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff9091168152602001610340565b61032c6103ed366004614043565b610f51565b603954610336565b61032c61040836600461407c565b61113f565b61033661041b366004614097565b61131e565b61032c61042e3660046140cc565b611462565b6105f46104413660046140e5565b604080516102008101825260006101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091525073ffffffffffffffffffffffffffffffffffffffff90811660009081526034602090815260409182902082516102008101845281546101e08201908152815260018201546fffffffffffffffffffffffffffffffff80821694830194909452700100000000000000000000000000000000908190048416948201949094526002820154808416606083015284900483166080820152600382015480841660a083015284810464ffffffffff1660c08301527501000000000000000000000000000000000000000000900461ffff1660e0820152600482015485166101008201526005820154851661012082015260068201548516610140820152600782015490941661016085015260088101548083166101808601529290920481166101a0840152600990910154166101c082015290565b6040516103409190614102565b61033661060f3660046140e5565b61146f565b61032c6106223660046142c8565b6114a3565b6106766106353660046140e5565b604080516020808201835260009182905273ffffffffffffffffffffffffffffffffffffffff93909316815260358352819020815192830190915254815290565b60405190518152602001610340565b61038361069336600461434a565b61ffff1660009081526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6103366106cd366004614365565b61161d565b61032c6106e036600461434a565b603b805461ffff9092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff909216919091179055565b61032c6107313660046143af565b611776565b61032c6107443660046143dd565b61194b565b61032c6107573660046140e5565b73ffffffffffffffffffffffffffffffffffffffff1660008181526034602081815260408084206003810180547501000000000000000000000000000000000000000000900461ffff1686526036845291852080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915595855292909152828255600182018390556002820183905580547fffffffffffffffffff0000000000000000000000000000000000000000000000169055600481018054841690556005810180548416905560068101805484169055600781018054909316909255600882015560090180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055565b61033661087936600461442e565b611a4e565b61032c61088c3660046143dd565b611c6d565b603a5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166103be565b6108d26108cd36600461407c565b611d1a565b60405161034091906144db565b61032c6108ed36600461453e565b611e54565b61032c6109003660046145a1565b611ff4565b61032c610913366004614612565b612075565b61032c610926366004614654565b6120ca565b61032c610939366004614693565b6123b0565b61032c61094c3660046147ad565b612769565b61096461095f3660046140e5565b6127a0565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610340565b61067661099f3660046140e5565b604080516020808201835260009182905273ffffffffffffffffffffffffffffffffffffffff93909316815260348352819020815192830190915254815290565b61032c6109ee3660046140e5565b6129cf565b61032c610a01366004614043565b612bd5565b61032c610a143660046147e0565b612c5e565b610336610a273660046140e5565b612d0b565b610a34612d39565b6040516103409190614821565b61032c610a4f366004614922565b612e75565b61032c610a62366004614a5a565b612fe1565b610336610a75366004614097565b613268565b61032c610a883660046140e5565b613308565b603b5467ffffffffffffffff16610336565b610336610aad3660046140e5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526038602052604090205460ff1690565b610336610ae6366004614abf565b61337d565b61032c610af9366004614b05565b613558565b603b546a0100000000000000000000900461ffff1660405161ffff9091168152602001610340565b73__$f598c634f2d943205ac23f707b80075cbb$__6383c1087d6034603660356037604051806101200160405280603b60089054906101000a900461ffff1661ffff1681526020018981526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff16815260200188151581526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f9190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528b81166000908152603860209081526040918290205460ff168185015281517f5eb88d3d000000000000000000000000000000000000000000000000000000008152825192909401937f000000000000000000000000000000000000000000000000000000000000000090931692635eb88d3d92600480830193928290030181865afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d319190614b64565b73ffffffffffffffffffffffffffffffffffffffff168152506040518663ffffffff1660e01b8152600401610d6a959493929190614b81565b60006040518083038186803b158015610d8257600080fd5b505af4158015610d96573d6000803e3d6000fd5b505050505050505050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9060e401600060405180830381600087803b158015610e3357600080fd5b505af1158015610e47573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff86811660008181526035602090815260409182902082516080810184528d861681529182018c815282840194855261ffff8b81166060850190815294517f1913f16100000000000000000000000000000000000000000000000000000000815260346004820152603660248201526044810193909352925186166064830152516084820152925190931660a48301525190911660c482015273__$db79717e66442ee197e8271d032a066e34$__90631913f1619060e40160006040518083038186803b158015610f2f57600080fd5b505af4158015610f43573d6000803e3d6000fd5b505050505050505050505050565b610f59613714565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8316610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b60405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020600301547501000000000000000000000000000000000000000000900461ffff1615158061107a57506000805260366020527f4cb2b152c1b54ce671907a93c300fd5aa72383a9d4ec19a81e3333632ae92e005473ffffffffffffffffffffffffffffffffffffffff8381169116145b6040518060400160405280600281526020017f3832000000000000000000000000000000000000000000000000000000000000815250906110e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff918216600090815260346020526040902060070180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73__$e4b9550ff526a295e1233dea02821b9004$__635d5dc3136034603660376038603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405280603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190614b64565b73ffffffffffffffffffffffffffffffffffffffff1681526020018960ff168152506040518763ffffffff1660e01b81526004016112eb9695949392919095865260208087019590955260408087019490945260608601929092526080850152805160a08501529182015173ffffffffffffffffffffffffffffffffffffffff1660c0840152015160ff1660e08201526101000190565b60006040518083038186803b15801561130357600080fd5b505af4158015611317573d6000803e3d6000fd5b5050505050565b600073__$c3724b8d563dc83a94e797176cddecb3b9$__6340e95de660346036603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018860028111156113bc576113bc614c75565b60028111156113cd576113cd614c75565b81523360208201526001604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526114179493929190600401614cdf565b602060405180830381865af4158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190614d52565b90505b9392505050565b61146a613714565b603955565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260346020526040812061149d90613842565b92915050565b60006040518060e001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505061ffff8516602080840191909152603a546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116604080870191909152911660609094019390935273ffffffffffffffffffffffffffffffffffffffff8a1682526034905281902090517fa1fe0e8d00000000000000000000000000000000000000000000000000000000815291925073__$d5ddd09ae98762b8929dd85e54b218e259$__9163a1fe0e8d916115e4918590600401614d6b565b60006040518083038186803b1580156115fc57600080fd5b505af4158015611610573d6000803e3d6000fd5b5050505050505050505050565b600073__$c3724b8d563dc83a94e797176cddecb3b9$__6340e95de660346036603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018960028111156116bb576116bb614c75565b60028111156116cc576116cc614c75565b815273ffffffffffffffffffffffffffffffffffffffff891660208201526000604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815261172c9493929190600401614cdf565b602060405180830381865af4158015611749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176d9190614d52565b95945050505050565b73__$db79717e66442ee197e8271d032a066e34$__63bf697a26603460366037603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208787603b60089054906101000a900461ffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190614b64565b336000908152603860205260409081902054905160e08b901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019990995260248901979097526044880195909552606487019390935273ffffffffffffffffffffffffffffffffffffffff9182166084870152151560a486015261ffff90911660c48501521660e483015260ff16610104820152610124015b60006040518083038186803b15801561192f57600080fd5b505af4158015611943573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603560209081526040918290208251608081018452898616815291820188815282840194855261ffff8781166060850190815294517f1913f16100000000000000000000000000000000000000000000000000000000815260346004820152603660248201526044810193909352925186166064830152516084820152925190931660a48301525190911660c482015273__$db79717e66442ee197e8271d032a066e34$__90631913f1619060e4015b60006040518083038186803b158015611a3057600080fd5b505af4158015611a44573d6000803e3d6000fd5b5050505050505050565b600073__$db79717e66442ee197e8271d032a066e34$__63186dea44603460366037603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff168152602001603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba19190614b64565b73ffffffffffffffffffffffffffffffffffffffff9081168252336000908152603860209081526040918290205460ff90811694820194909452815160e08b901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260048101999099526024890197909752604488019590955260648701939093528151831660848701529381015160a486015291820151811660c4850152606082015160e485015260808201511661010484015260a001511661012482015261014401611417565b611c756138d2565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603560205260409081902090517f0413c86f0000000000000000000000000000000000000000000000000000000081526034600482015260366024820152604481019190915291861660648301526084820185905260a482015261ffff821660c482015273__$b06080f092f400a43662c3f835a4d9baa8$__90630413c86f9060e401611a18565b6040805160a081018252600080825260208201819052918101829052606080820192909252608081019190915260ff8216600090815260376020908152604091829020825160a081018452815461ffff8082168352620100008204811694830194909452640100000000810490931693810193909352660100000000000090910473ffffffffffffffffffffffffffffffffffffffff166060830152600181018054608084019190611dcb90614df6565b80601f0160208091040260200160405190810160405280929190818152602001828054611df790614df6565b8015611e445780601f10611e1957610100808354040283529160200191611e44565b820191906000526020600020905b815481529060010190602001808311611e2757829003601f168201915b5050505050815250509050919050565b611e5c613714565b73__$563c746fa3df0f1858d85f6ef4258864be$__6369fc1bdf603460366040518060e001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001603b60089054906101000a900461ffff1661ffff168152602001611f47603b5461ffff6a01000000000000000000009091041690565b61ffff168152506040518463ffffffff1660e01b8152600401611f6c93929190614e44565b602060405180830381865af4158015611f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fad9190614ed4565b1561131757603b805468010000000000000000900461ffff16906008611fd283614f20565b91906101000a81548161ffff021916908361ffff160217905550505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460209081526040808320338452603590925290912073__$c3724b8d563dc83a94e797176cddecb3b9$__9163eac4d703918585600281111561205657612056614c75565b6040518563ffffffff1660e01b81526004016119179493929190614f42565b6040517f48c2ca8c00000000000000000000000000000000000000000000000000000000815273__$563c746fa3df0f1858d85f6ef4258864be$__906348c2ca8c906119179060349086908690600401614f79565b73__$c3724b8d563dc83a94e797176cddecb3b9$__631e6473f9603460366037603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061018001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a60028111156121a1576121a1614c75565b60028111156121b2576121b2614c75565b815261ffff808b166020808401919091526001604080850191909152603b5467ffffffffffffffff81166060860152680100000000000000009004909216608084015281517ffca513a8000000000000000000000000000000000000000000000000000000008152915160a09093019273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263fca513a89260048083019391928290030181865afa158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528981166000908152603860209081526040918290205460ff168185015281517f5eb88d3d000000000000000000000000000000000000000000000000000000008152825192909401937f000000000000000000000000000000000000000000000000000000000000000090931692635eb88d3d92600480830193928290030181865afa158015612353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123779190614b64565b73ffffffffffffffffffffffffffffffffffffffff168152506040518663ffffffff1660e01b8152600401610d6a959493929190614fde565b6000604051806101c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d9182918501908490808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b91829185019084908082843760009201919091525050509082525073ffffffffffffffffffffffffffffffffffffffff871660208083019190915260408051601f88018390048302810183018252878152920191908790879081908401838280828437600092018290525093855250505061ffff808616602080850191909152603a546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811660408088019190915291166060860152603b5467ffffffffffffffff8116608087015268010000000000000000900490921660a085015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660c08601819052908b16845260388252928290205460ff1660e085015281517f707cd71600000000000000000000000000000000000000000000000000000000815291516101009094019363707cd7169260048082019392918290030181865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614b64565b6040517ffa50f29700000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063fa50f29790602401602060405180830381865afa158015612680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a49190614ed4565b1515905273ffffffffffffffffffffffffffffffffffffffff86166000908152603560205260409081902090517f2e7263ea00000000000000000000000000000000000000000000000000000000815291925073__$d5ddd09ae98762b8929dd85e54b218e259$__91632e7263ea9161272b91603491603691603791908890600401615187565b60006040518083038186803b15801561274357600080fd5b505af4158015612757573d6000803e3d6000fd5b50505050505050505050505050505050565b612771613714565b6fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617603a55565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815285822060c0860187525460a086019081528552603b5468010000000000000000900461ffff16818601528486019290925284517ffca513a8000000000000000000000000000000000000000000000000000000008152945190948594859485948594859473__$563c746fa3df0f1858d85f6ef4258864be$__946326ec273f9460349460369460379460608501937f0000000000000000000000000000000000000000000000000000000000000000169263fca513a8926004808401938290030181865afa15801561289e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c29190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528e81166000908152603860209081526040918290205460ff90811694820194909452815160e08a901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019890985260248801969096526044870194909452825151606487015293820151608486015291810151831660a4850152606081015190921660c48401526080909101511660e48201526101040160c060405180830381865af4158015612997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bb919061532d565b949c939b5091995097509550909350915050565b60015460039060ff16806129e25750303b155b806129ee575060005481115b612a7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a65640000000000000000000000000000000000006064820152608401610fdb565b60015460ff16158015612ab757600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f313200000000000000000000000000000000000000000000000000000000000081525090612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b50603b80547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166109c41790558015612bd057600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b505050565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603460205260409081902090517f6973f74400000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152908216604482015273__$c3724b8d563dc83a94e797176cddecb3b9$__90636973f74490606401611917565b612c66613a5f565b6040517f87b322b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152831660248201526044810182905273__$563c746fa3df0f1858d85f6ef4258864be$__906387b322b29060640160006040518083038186803b158015612cee57600080fd5b505af4158015612d02573d6000803e3d6000fd5b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260346020526040812061149d90613bec565b603b5460609068010000000000000000900461ffff166000808267ffffffffffffffff811115612d6b57612d6b61487b565b604051908082528060200260200182016040528015612d94578160200160208202803683370190505b50905060005b83811015612e6b5760008181526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612e4b5760008181526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1682612dfc8584615377565b81518110612e0c57612e0c61538e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e59565b82612e55816153bd565b9350505b80612e63816153bd565b915050612d9a565b5091038152919050565b612e7d613714565b60408051808201909152600281527f3136000000000000000000000000000000000000000000000000000000000000602082015260ff8316612eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5060ff8216600090815260376020908152604091829020835181548386015194860151606087015173ffffffffffffffffffffffffffffffffffffffff166601000000000000027fffffffffffff0000000000000000000000000000000000000000ffffffffffff61ffff92831664010000000002167fffffffffffff00000000000000000000000000000000000000000000ffffffff97831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416929094169190911791909117949094161792909217825560808301518051849392611317926001850192910190613e60565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260346020908152604091829020600401548251808401909352600283527f313100000000000000000000000000000000000000000000000000000000000091830191909152909116331461307f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073__$db79717e66442ee197e8271d032a066e34$__638a5dadd160346036603760356040518061012001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a8152602001898152602001888152602001603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd9190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528d166000908152603860209081526040918290205460ff16920191909152517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526132309594939291906004016153f6565b60006040518083038186803b15801561324857600080fd5b505af415801561325c573d6000803e3d6000fd5b50505050505050505050565b60006132726138d2565b73ffffffffffffffffffffffffffffffffffffffff84166000818152603460205260409081902060395491517f8e743248000000000000000000000000000000000000000000000000000000008152600481019190915260248101929092526044820185905260648201849052608482015273__$b06080f092f400a43662c3f835a4d9baa8$__90638e7432489060a401611417565b613310613714565b6040517f1e3b41450000000000000000000000000000000000000000000000000000000081526034600482015273ffffffffffffffffffffffffffffffffffffffff8216602482015273__$563c746fa3df0f1858d85f6ef4258864be$__90631e3b4145906044016112eb565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810185905260ff8416608482015260a4810183905260c4810182905260009073ffffffffffffffffffffffffffffffffffffffff8a169063d505accf9060e401600060405180830381600087803b15801561341257600080fd5b505af1158015613426573d6000803e3d6000fd5b5050505060006040518060a001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189600281111561346b5761346b614c75565b600281111561347c5761347c614c75565b815273ffffffffffffffffffffffffffffffffffffffff89166020808301829052600060409384018190529182526035905281902090517f40e95de600000000000000000000000000000000000000000000000000000000815291925073__$c3724b8d563dc83a94e797176cddecb3b9$__916340e95de691613509916034916036918790600401614cdf565b602060405180830381865af4158015613526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354a9190614d52565b9a9950505050505050505050565b613560613714565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff83166135e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020600301547501000000000000000000000000000000000000000000900461ffff1615158061367857506000805260366020527f4cb2b152c1b54ce671907a93c300fd5aa72383a9d4ec19a81e3333632ae92e005473ffffffffffffffffffffffffffffffffffffffff8381169116145b6040518060400160405280600281526020017f3832000000000000000000000000000000000000000000000000000000000000815250906136e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260346020526040902090359055565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663631adfca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ba9190614b64565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f31300000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b50565b6003810154600090700100000000000000000000000000000000900464ffffffffff1642811415613888575050600201546fffffffffffffffffffffffffffffffff1690565b600283015461145b906fffffffffffffffffffffffffffffffff808216916138c6917001000000000000000000000000000000009091041684613c70565b90613c7d565b50919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190614b64565b6040517f726600ce00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063726600ce90602401602060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f19190614ed4565b6040518060400160405280600181526020017f36000000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aee9190614b64565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9190911690637be53ca190602401602060405180830381865afa158015613b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7e9190614ed4565b6040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b6003810154600090700100000000000000000000000000000000900464ffffffffff1642811415613c32575050600101546fffffffffffffffffffffffffffffffff1690565b600183015461145b906fffffffffffffffffffffffffffffffff808216916138c6917001000000000000000000000000000000009091041684613cd4565b600061145b838342613d19565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517613cb257600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600080613ce864ffffffffff841642615377565b613cf290856154d2565b6301e1338090049050613d11816b033b2e3c9fd0803ce800000061553e565b949350505050565b600080613d2d64ffffffffff851684615377565b905080613d49576b033b2e3c9fd0803ce800000091505061145b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81016000808060028511613d7f576000613d84565b600285035b925066038882915c4000613d988a80613c7d565b81613da557613da561550f565b0491506301e13380613db7838b613c7d565b81613dc457613dc461550f565b049050600082613dd486886154d2565b613dde91906154d2565b60029004905060008285613df2888a6154d2565b613dfc91906154d2565b613e0691906154d2565b60069004905080826301e13380613e1d8a8f6154d2565b613e279190615556565b613e3d906b033b2e3c9fd0803ce800000061553e565b613e47919061553e565b613e51919061553e565b9b9a5050505050505050505050565b828054613e6c90614df6565b90600052602060002090601f016020900481019282613e8e5760008555613ed4565b82601f10613ea757805160ff1916838001178555613ed4565b82800160010185558215613ed4579182015b82811115613ed4578251825591602001919060010190613eb9565b50613ee0929150613ee4565b5090565b5b80821115613ee05760008155600101613ee5565b73ffffffffffffffffffffffffffffffffffffffff8116811461383f57600080fd5b8035613f2681613ef9565b919050565b801515811461383f57600080fd5b600080600080600060a08688031215613f5157600080fd5b8535613f5c81613ef9565b94506020860135613f6c81613ef9565b93506040860135613f7c81613ef9565b9250606086013591506080860135613f9381613f2b565b809150509295509295909350565b803561ffff81168114613f2657600080fd5b803560ff81168114613f2657600080fd5b600080600080600080600080610100898b031215613fe157600080fd5b8835613fec81613ef9565b975060208901359650604089013561400381613ef9565b955061401160608a01613fa1565b94506080890135935061402660a08a01613fb3565b925060c0890135915060e089013590509295985092959890939650565b6000806040838503121561405657600080fd5b823561406181613ef9565b9150602083013561407181613ef9565b809150509250929050565b60006020828403121561408e57600080fd5b61145b82613fb3565b6000806000606084860312156140ac57600080fd5b83356140b781613ef9565b95602085013595506040909401359392505050565b6000602082840312156140de57600080fd5b5035919050565b6000602082840312156140f757600080fd5b813561145b81613ef9565b81515181526101e08101602083015161412f60208401826fffffffffffffffffffffffffffffffff169052565b50604083015161415360408401826fffffffffffffffffffffffffffffffff169052565b50606083015161417760608401826fffffffffffffffffffffffffffffffff169052565b50608083015161419b60808401826fffffffffffffffffffffffffffffffff169052565b5060a08301516141bf60a08401826fffffffffffffffffffffffffffffffff169052565b5060c08301516141d860c084018264ffffffffff169052565b5060e08301516141ee60e084018261ffff169052565b506101008381015173ffffffffffffffffffffffffffffffffffffffff9081169184019190915261012080850151821690840152610140808501518216908401526101608085015190911690830152610180808401516fffffffffffffffffffffffffffffffff908116918401919091526101a0808501518216908401526101c09384015116929091019190915290565b60008083601f84011261429157600080fd5b50813567ffffffffffffffff8111156142a957600080fd5b6020830191508360208285010111156142c157600080fd5b9250929050565b60008060008060008060a087890312156142e157600080fd5b86356142ec81613ef9565b955060208701356142fc81613ef9565b945060408701359350606087013567ffffffffffffffff81111561431f57600080fd5b61432b89828a0161427f565b909450925061433e905060808801613fa1565b90509295509295509295565b60006020828403121561435c57600080fd5b61145b82613fa1565b6000806000806080858703121561437b57600080fd5b843561438681613ef9565b9350602085013592506040850135915060608501356143a481613ef9565b939692955090935050565b600080604083850312156143c257600080fd5b82356143cd81613ef9565b9150602083013561407181613f2b565b600080600080608085870312156143f357600080fd5b84356143fe81613ef9565b935060208501359250604085013561441581613ef9565b915061442360608601613fa1565b905092959194509250565b60008060006060848603121561444357600080fd5b833561444e81613ef9565b925060208401359150604084013561446581613ef9565b809150509250925092565b6000815180845260005b818110156144965760208185018101518683018201520161447a565b818111156144a8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061ffff8084511660208401528060208501511660408401528060408501511660608401525073ffffffffffffffffffffffffffffffffffffffff6060840151166080830152608083015160a080840152613d1160c0840182614470565b600080600080600060a0868803121561455657600080fd5b853561456181613ef9565b9450602086013561457181613ef9565b9350604086013561458181613ef9565b9250606086013561459181613ef9565b91506080860135613f9381613ef9565b600080604083850312156145b457600080fd5b82356145bf81613ef9565b946020939093013593505050565b60008083601f8401126145df57600080fd5b50813567ffffffffffffffff8111156145f757600080fd5b6020830191508360208260051b85010111156142c157600080fd5b6000806020838503121561462557600080fd5b823567ffffffffffffffff81111561463c57600080fd5b614648858286016145cd565b90969095509350505050565b600080600080600060a0868803121561466c57600080fd5b853561467781613ef9565b9450602086013593506040860135925061459160608701613fa1565b600080600080600080600080600080600060e08c8e0312156146b457600080fd5b6146bd8c613f1b565b9a5067ffffffffffffffff8060208e013511156146d957600080fd5b6146e98e60208f01358f016145cd565b909b50995060408d01358110156146ff57600080fd5b61470f8e60408f01358f016145cd565b909950975060608d013581101561472557600080fd5b6147358e60608f01358f016145cd565b909750955061474660808e01613f1b565b94508060a08e0135111561475957600080fd5b5061476a8d60a08e01358e0161427f565b909350915061477b60c08d01613fa1565b90509295989b509295989b9093969950565b80356fffffffffffffffffffffffffffffffff81168114613f2657600080fd5b600080604083850312156147c057600080fd5b6147c98361478d565b91506147d76020840161478d565b90509250929050565b6000806000606084860312156147f557600080fd5b833561480081613ef9565b9250602084013561481081613ef9565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561486f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161483d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156148cd576148cd61487b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561491a5761491a61487b565b604052919050565b6000806040838503121561493557600080fd5b61493e83613fb3565b915060208084013567ffffffffffffffff8082111561495c57600080fd5b9085019060a0828803121561497057600080fd5b6149786148aa565b61498183613fa1565b815261498e848401613fa1565b8482015261499e60408401613fa1565b604082015260608301356149b181613ef9565b60608201526080830135828111156149c857600080fd5b80840193505087601f8401126149dd57600080fd5b8235828111156149ef576149ef61487b565b614a1f857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016148d3565b92508083528885828601011115614a3557600080fd5b8085850186850137600085828501015250816080820152809450505050509250929050565b60008060008060008060c08789031215614a7357600080fd5b8635614a7e81613ef9565b95506020870135614a8e81613ef9565b94506040870135614a9e81613ef9565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080610100898b031215614adc57600080fd5b8835614ae781613ef9565b97506020890135965060408901359550606089013561401181613ef9565b6000808284036040811215614b1957600080fd5b8335614b2481613ef9565b925060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614b5657600080fd5b506020830190509250929050565b600060208284031215614b7657600080fd5b815161145b81613ef9565b60006101a08201905086825285602083015284604083015283606083015282516080830152602083015160a0830152604083015173ffffffffffffffffffffffffffffffffffffffff80821660c08501528060608601511660e085015250506080830151610100614c098185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a0850151151561012085015260c085015173ffffffffffffffffffffffffffffffffffffffff90811661014086015260e086015160ff166101608601529085015190811661018085015290505b509695505050505050565b60208152600061145b6020830184614470565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110614cdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101008201905085825284602083015283604083015273ffffffffffffffffffffffffffffffffffffffff808451166060840152602084015160808401526040840151614d3160a0850182614ca4565b5060608401511660c0830152608090920151151560e0909101529392505050565b600060208284031215614d6457600080fd5b5051919050565b82815260406020820152600073ffffffffffffffffffffffffffffffffffffffff8084511660408401528060208501511660608401525060408301516080830152606083015160e060a0840152614dc6610120840182614470565b905061ffff60808501511660c084015260a084015160e084015260c0840151610100840152809150509392505050565b600181811c90821680614e0a57607f821691505b602082108114156138cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006101208201905084825283602083015273ffffffffffffffffffffffffffffffffffffffff8084511660408401528060208501511660608401528060408501511660808401528060608501511660a08401528060808501511660c08401525060a0830151614eba60e084018261ffff169052565b5060c083015161ffff811661010084015250949350505050565b600060208284031215614ee657600080fd5b815161145b81613f2b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681811415614f3857614f38614ef1565b6001019392505050565b8481526020810184905273ffffffffffffffffffffffffffffffffffffffff831660408201526080810161176d6060830184614ca4565b83815260406020808301829052908201839052600090849060608401835b86811015614fd2578335614faa81613ef9565b73ffffffffffffffffffffffffffffffffffffffff1682529282019290820190600101614f97565b50979650505050505050565b858152602081018590526040810184905260608101839052815173ffffffffffffffffffffffffffffffffffffffff1660808201526102008101602083015173ffffffffffffffffffffffffffffffffffffffff811660a084015250604083015173ffffffffffffffffffffffffffffffffffffffff811660c084015250606083015160e0830152608083015161010061507a81850183614ca4565b60a085015191506101206150938186018461ffff169052565b60c086015192506101406150aa8187018515159052565b60e087015161016087810191909152928701516101808701529086015173ffffffffffffffffffffffffffffffffffffffff9081166101a08701529086015160ff166101c0860152908501519081166101e08501529050614c57565b600081518084526020808501945080840160005b8381101561514c57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161511a565b509495945050505050565b600081518084526020808501945080840160005b8381101561514c5781518752958201959082019060010161516b565b85815284602082015283604082015282606082015260a060808201526151c660a08201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516101c08060c08501526151e4610260850183615106565b915060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808685030160e08701526152208483615157565b93506060870151915061010081878603018188015261523f8584615157565b94506080880151925061012061526c8189018573ffffffffffffffffffffffffffffffffffffffff169052565b60a089015193506101408389880301818a01526152898786614470565b965060c08a0151945061016093506152a6848a018661ffff169052565b60e08a0151945061018085818b0152838b015195506101a0935085848b0152828b0151878b0152818b01516101e08b0152848b015196506153006102008b018873ffffffffffffffffffffffffffffffffffffffff169052565b8a015160ff81166102208b01529550615317915050565b8701518015156102408801529250614fd2915050565b60008060008060008060c0878903121561534657600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b60008282101561538957615389614ef1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156153ef576153ef614ef1565b5060010190565b60006101a08201905086825285602083015284604083015283606083015273ffffffffffffffffffffffffffffffffffffffff8084511660808401528060208501511660a084015250604083015161546660c084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160e08301526080830151610100818185015260a085015161012085015260c085015161014085015260e085015191506154be61016085018373ffffffffffffffffffffffffffffffffffffffff169052565b84015160ff81166101808501529050614c57565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550a5761550a614ef1565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561555157615551614ef1565b500190565b60008261558c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212205fd7f295292baebc1c9db4ed6520d269495fbc821e20ec0c9e748a8f54f37f9c64736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103145760003560e01c80636c6f6ae1116101a7578063d15e0053116100ee578063e82fec2f11610097578063ee3e210b11610071578063ee3e210b14610ad8578063f51e435b14610aeb578063f8119d5114610afe57600080fd5b8063e82fec2f14610a8d578063e8eda9df14610736578063eddf1b7914610a9f57600080fd5b8063d5ed3933116100c8578063d5ed393314610a54578063d65dc7a114610a67578063e43e88a114610a7a57600080fd5b8063d15e005314610a19578063d1946dbc14610a2c578063d579ea7d14610a4157600080fd5b8063bcb6e52211610150578063c4d66de81161012a578063c4d66de8146109e0578063cd112382146109f3578063cea9d26f14610a0657600080fd5b8063bcb6e5221461093e578063bf92857c14610951578063c44b11f71461099157600080fd5b80639cd19996116101815780639cd1999614610905578063a415bcad14610918578063ab9c4b5d1461092b57600080fd5b80636c6f6ae1146108bf5780637a708e92146108df57806394ba89a2146108f257600080fd5b8063386497fd1161026b5780635a3b74b91161021457806369328dec116101ee57806369328dec1461086b57806369a933a51461087e5780636a99c0361461089157600080fd5b80635a3b74b914610723578063617ba0371461073657806363c9b8601461074957600080fd5b806352751797116102455780635275179714610685578063573ade81146106bf57806357c68dc4146106d257600080fd5b8063386497fd1461060157806342b0b77c146106145780634417a5831461062757600080fd5b80631d2118f9116102cd5780632dad97d4116102a75780632dad97d41461040d5780633036b4391461042057806335ea6a751461043357600080fd5b80631d2118f9146103df578063272d9072146103f257806328530a47146103fa57600080fd5b806302c205f0116102fe57806302c205f0146103495780630542975c1461035c578063074b2e43146103a857600080fd5b8062a718a9146103195780630148170e1461032e575b600080fd5b61032c610327366004613f39565b610b26565b005b610336600181565b6040519081526020015b60405180910390f35b61032c610357366004613fc4565b610da1565b6103837f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610340565b603a546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff9091168152602001610340565b61032c6103ed366004614043565b610f51565b603954610336565b61032c61040836600461407c565b61113f565b61033661041b366004614097565b61131e565b61032c61042e3660046140cc565b611462565b6105f46104413660046140e5565b604080516102008101825260006101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091525073ffffffffffffffffffffffffffffffffffffffff90811660009081526034602090815260409182902082516102008101845281546101e08201908152815260018201546fffffffffffffffffffffffffffffffff80821694830194909452700100000000000000000000000000000000908190048416948201949094526002820154808416606083015284900483166080820152600382015480841660a083015284810464ffffffffff1660c08301527501000000000000000000000000000000000000000000900461ffff1660e0820152600482015485166101008201526005820154851661012082015260068201548516610140820152600782015490941661016085015260088101548083166101808601529290920481166101a0840152600990910154166101c082015290565b6040516103409190614102565b61033661060f3660046140e5565b61146f565b61032c6106223660046142c8565b6114a3565b6106766106353660046140e5565b604080516020808201835260009182905273ffffffffffffffffffffffffffffffffffffffff93909316815260358352819020815192830190915254815290565b60405190518152602001610340565b61038361069336600461434a565b61ffff1660009081526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6103366106cd366004614365565b61161d565b61032c6106e036600461434a565b603b805461ffff9092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff909216919091179055565b61032c6107313660046143af565b611776565b61032c6107443660046143dd565b61194b565b61032c6107573660046140e5565b73ffffffffffffffffffffffffffffffffffffffff1660008181526034602081815260408084206003810180547501000000000000000000000000000000000000000000900461ffff1686526036845291852080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915595855292909152828255600182018390556002820183905580547fffffffffffffffffff0000000000000000000000000000000000000000000000169055600481018054841690556005810180548416905560068101805484169055600781018054909316909255600882015560090180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055565b61033661087936600461442e565b611a4e565b61032c61088c3660046143dd565b611c6d565b603a5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166103be565b6108d26108cd36600461407c565b611d1a565b60405161034091906144db565b61032c6108ed36600461453e565b611e54565b61032c6109003660046145a1565b611ff4565b61032c610913366004614612565b612075565b61032c610926366004614654565b6120ca565b61032c610939366004614693565b6123b0565b61032c61094c3660046147ad565b612769565b61096461095f3660046140e5565b6127a0565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610340565b61067661099f3660046140e5565b604080516020808201835260009182905273ffffffffffffffffffffffffffffffffffffffff93909316815260348352819020815192830190915254815290565b61032c6109ee3660046140e5565b6129cf565b61032c610a01366004614043565b612bd5565b61032c610a143660046147e0565b612c5e565b610336610a273660046140e5565b612d0b565b610a34612d39565b6040516103409190614821565b61032c610a4f366004614922565b612e75565b61032c610a62366004614a5a565b612fe1565b610336610a75366004614097565b613268565b61032c610a883660046140e5565b613308565b603b5467ffffffffffffffff16610336565b610336610aad3660046140e5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526038602052604090205460ff1690565b610336610ae6366004614abf565b61337d565b61032c610af9366004614b05565b613558565b603b546a0100000000000000000000900461ffff1660405161ffff9091168152602001610340565b73__$f598c634f2d943205ac23f707b80075cbb$__6383c1087d6034603660356037604051806101200160405280603b60089054906101000a900461ffff1661ffff1681526020018981526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff16815260200188151581526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f9190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528b81166000908152603860209081526040918290205460ff168185015281517f5eb88d3d000000000000000000000000000000000000000000000000000000008152825192909401937f000000000000000000000000000000000000000000000000000000000000000090931692635eb88d3d92600480830193928290030181865afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d319190614b64565b73ffffffffffffffffffffffffffffffffffffffff168152506040518663ffffffff1660e01b8152600401610d6a959493929190614b81565b60006040518083038186803b158015610d8257600080fd5b505af4158015610d96573d6000803e3d6000fd5b505050505050505050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9060e401600060405180830381600087803b158015610e3357600080fd5b505af1158015610e47573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff86811660008181526035602090815260409182902082516080810184528d861681529182018c815282840194855261ffff8b81166060850190815294517f1913f16100000000000000000000000000000000000000000000000000000000815260346004820152603660248201526044810193909352925186166064830152516084820152925190931660a48301525190911660c482015273__$db79717e66442ee197e8271d032a066e34$__90631913f1619060e40160006040518083038186803b158015610f2f57600080fd5b505af4158015610f43573d6000803e3d6000fd5b505050505050505050505050565b610f59613714565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8316610fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b60405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020600301547501000000000000000000000000000000000000000000900461ffff1615158061107a57506000805260366020527f4cb2b152c1b54ce671907a93c300fd5aa72383a9d4ec19a81e3333632ae92e005473ffffffffffffffffffffffffffffffffffffffff8381169116145b6040518060400160405280600281526020017f3832000000000000000000000000000000000000000000000000000000000000815250906110e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff918216600090815260346020526040902060070180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b73__$e4b9550ff526a295e1233dea02821b9004$__635d5dc3136034603660376038603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405280603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190614b64565b73ffffffffffffffffffffffffffffffffffffffff1681526020018960ff168152506040518763ffffffff1660e01b81526004016112eb9695949392919095865260208087019590955260408087019490945260608601929092526080850152805160a08501529182015173ffffffffffffffffffffffffffffffffffffffff1660c0840152015160ff1660e08201526101000190565b60006040518083038186803b15801561130357600080fd5b505af4158015611317573d6000803e3d6000fd5b5050505050565b600073__$c3724b8d563dc83a94e797176cddecb3b9$__6340e95de660346036603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018860028111156113bc576113bc614c75565b60028111156113cd576113cd614c75565b81523360208201526001604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526114179493929190600401614cdf565b602060405180830381865af4158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190614d52565b90505b9392505050565b61146a613714565b603955565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260346020526040812061149d90613842565b92915050565b60006040518060e001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505061ffff8516602080840191909152603a546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116604080870191909152911660609094019390935273ffffffffffffffffffffffffffffffffffffffff8a1682526034905281902090517fa1fe0e8d00000000000000000000000000000000000000000000000000000000815291925073__$d5ddd09ae98762b8929dd85e54b218e259$__9163a1fe0e8d916115e4918590600401614d6b565b60006040518083038186803b1580156115fc57600080fd5b505af4158015611610573d6000803e3d6000fd5b5050505050505050505050565b600073__$c3724b8d563dc83a94e797176cddecb3b9$__6340e95de660346036603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060a001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018960028111156116bb576116bb614c75565b60028111156116cc576116cc614c75565b815273ffffffffffffffffffffffffffffffffffffffff891660208201526000604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815261172c9493929190600401614cdf565b602060405180830381865af4158015611749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176d9190614d52565b95945050505050565b73__$db79717e66442ee197e8271d032a066e34$__63bf697a26603460366037603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208787603b60089054906101000a900461ffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190614b64565b336000908152603860205260409081902054905160e08b901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019990995260248901979097526044880195909552606487019390935273ffffffffffffffffffffffffffffffffffffffff9182166084870152151560a486015261ffff90911660c48501521660e483015260ff16610104820152610124015b60006040518083038186803b15801561192f57600080fd5b505af4158015611943573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603560209081526040918290208251608081018452898616815291820188815282840194855261ffff8781166060850190815294517f1913f16100000000000000000000000000000000000000000000000000000000815260346004820152603660248201526044810193909352925186166064830152516084820152925190931660a48301525190911660c482015273__$db79717e66442ee197e8271d032a066e34$__90631913f1619060e4015b60006040518083038186803b158015611a3057600080fd5b505af4158015611a44573d6000803e3d6000fd5b5050505050505050565b600073__$db79717e66442ee197e8271d032a066e34$__63186dea44603460366037603560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff168152602001603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba19190614b64565b73ffffffffffffffffffffffffffffffffffffffff9081168252336000908152603860209081526040918290205460ff90811694820194909452815160e08b901b7fffffffff0000000000000000000000000000000000000000000000000000000016815260048101999099526024890197909752604488019590955260648701939093528151831660848701529381015160a486015291820151811660c4850152606082015160e485015260808201511661010484015260a001511661012482015261014401611417565b611c756138d2565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603560205260409081902090517f0413c86f0000000000000000000000000000000000000000000000000000000081526034600482015260366024820152604481019190915291861660648301526084820185905260a482015261ffff821660c482015273__$b06080f092f400a43662c3f835a4d9baa8$__90630413c86f9060e401611a18565b6040805160a081018252600080825260208201819052918101829052606080820192909252608081019190915260ff8216600090815260376020908152604091829020825160a081018452815461ffff8082168352620100008204811694830194909452640100000000810490931693810193909352660100000000000090910473ffffffffffffffffffffffffffffffffffffffff166060830152600181018054608084019190611dcb90614df6565b80601f0160208091040260200160405190810160405280929190818152602001828054611df790614df6565b8015611e445780601f10611e1957610100808354040283529160200191611e44565b820191906000526020600020905b815481529060010190602001808311611e2757829003601f168201915b5050505050815250509050919050565b611e5c613714565b73__$563c746fa3df0f1858d85f6ef4258864be$__6369fc1bdf603460366040518060e001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001603b60089054906101000a900461ffff1661ffff168152602001611f47603b5461ffff6a01000000000000000000009091041690565b61ffff168152506040518463ffffffff1660e01b8152600401611f6c93929190614e44565b602060405180830381865af4158015611f89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fad9190614ed4565b1561131757603b805468010000000000000000900461ffff16906008611fd283614f20565b91906101000a81548161ffff021916908361ffff160217905550505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460209081526040808320338452603590925290912073__$c3724b8d563dc83a94e797176cddecb3b9$__9163eac4d703918585600281111561205657612056614c75565b6040518563ffffffff1660e01b81526004016119179493929190614f42565b6040517f48c2ca8c00000000000000000000000000000000000000000000000000000000815273__$563c746fa3df0f1858d85f6ef4258864be$__906348c2ca8c906119179060349086908690600401614f79565b73__$c3724b8d563dc83a94e797176cddecb3b9$__631e6473f9603460366037603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061018001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a60028111156121a1576121a1614c75565b60028111156121b2576121b2614c75565b815261ffff808b166020808401919091526001604080850191909152603b5467ffffffffffffffff81166060860152680100000000000000009004909216608084015281517ffca513a8000000000000000000000000000000000000000000000000000000008152915160a09093019273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263fca513a89260048083019391928290030181865afa158015612281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a59190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528981166000908152603860209081526040918290205460ff168185015281517f5eb88d3d000000000000000000000000000000000000000000000000000000008152825192909401937f000000000000000000000000000000000000000000000000000000000000000090931692635eb88d3d92600480830193928290030181865afa158015612353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123779190614b64565b73ffffffffffffffffffffffffffffffffffffffff168152506040518663ffffffff1660e01b8152600401610d6a959493929190614fde565b6000604051806101c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c8c808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d9182918501908490808284376000920191909152505050908252506040805160208a810282810182019093528a82529283019290918b918b91829185019084908082843760009201919091525050509082525073ffffffffffffffffffffffffffffffffffffffff871660208083019190915260408051601f88018390048302810183018252878152920191908790879081908401838280828437600092018290525093855250505061ffff808616602080850191909152603a546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811660408088019190915291166060860152603b5467ffffffffffffffff8116608087015268010000000000000000900490921660a085015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660c08601819052908b16845260388252928290205460ff1660e085015281517f707cd71600000000000000000000000000000000000000000000000000000000815291516101009094019363707cd7169260048082019392918290030181865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614b64565b6040517ffa50f29700000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063fa50f29790602401602060405180830381865afa158015612680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a49190614ed4565b1515905273ffffffffffffffffffffffffffffffffffffffff86166000908152603560205260409081902090517f2e7263ea00000000000000000000000000000000000000000000000000000000815291925073__$d5ddd09ae98762b8929dd85e54b218e259$__91632e7263ea9161272b91603491603691603791908890600401615187565b60006040518083038186803b15801561274357600080fd5b505af4158015612757573d6000803e3d6000fd5b50505050505050505050505050505050565b612771613714565b6fffffffffffffffffffffffffffffffff90811670010000000000000000000000000000000002911617603a55565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815285822060c0860187525460a086019081528552603b5468010000000000000000900461ffff16818601528486019290925284517ffca513a8000000000000000000000000000000000000000000000000000000008152945190948594859485948594859473__$563c746fa3df0f1858d85f6ef4258864be$__946326ec273f9460349460369460379460608501937f0000000000000000000000000000000000000000000000000000000000000000169263fca513a8926004808401938290030181865afa15801561289e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c29190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528e81166000908152603860209081526040918290205460ff90811694820194909452815160e08a901b7fffffffff00000000000000000000000000000000000000000000000000000000168152600481019890985260248801969096526044870194909452825151606487015293820151608486015291810151831660a4850152606081015190921660c48401526080909101511660e48201526101040160c060405180830381865af4158015612997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bb919061532d565b949c939b5091995097509550909350915050565b60015460039060ff16806129e25750303b155b806129ee575060005481115b612a7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a65640000000000000000000000000000000000006064820152608401610fdb565b60015460ff16158015612ab757600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168117905560008290555b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f313200000000000000000000000000000000000000000000000000000000000081525090612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b50603b80547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166109c41790558015612bd057600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b505050565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152603460205260409081902090517f6973f74400000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152908216604482015273__$c3724b8d563dc83a94e797176cddecb3b9$__90636973f74490606401611917565b612c66613a5f565b6040517f87b322b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8085166004830152831660248201526044810182905273__$563c746fa3df0f1858d85f6ef4258864be$__906387b322b29060640160006040518083038186803b158015612cee57600080fd5b505af4158015612d02573d6000803e3d6000fd5b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260346020526040812061149d90613bec565b603b5460609068010000000000000000900461ffff166000808267ffffffffffffffff811115612d6b57612d6b61487b565b604051908082528060200260200182016040528015612d94578160200160208202803683370190505b50905060005b83811015612e6b5760008181526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612e4b5760008181526036602052604090205473ffffffffffffffffffffffffffffffffffffffff1682612dfc8584615377565b81518110612e0c57612e0c61538e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e59565b82612e55816153bd565b9350505b80612e63816153bd565b915050612d9a565b5091038152919050565b612e7d613714565b60408051808201909152600281527f3136000000000000000000000000000000000000000000000000000000000000602082015260ff8316612eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5060ff8216600090815260376020908152604091829020835181548386015194860151606087015173ffffffffffffffffffffffffffffffffffffffff166601000000000000027fffffffffffff0000000000000000000000000000000000000000ffffffffffff61ffff92831664010000000002167fffffffffffff00000000000000000000000000000000000000000000ffffffff97831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416929094169190911791909117949094161792909217825560808301518051849392611317926001850192910190613e60565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260346020908152604091829020600401548251808401909352600283527f313100000000000000000000000000000000000000000000000000000000000091830191909152909116331461307f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073__$db79717e66442ee197e8271d032a066e34$__638a5dadd160346036603760356040518061012001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a8152602001898152602001888152602001603b60089054906101000a900461ffff1661ffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd9190614b64565b73ffffffffffffffffffffffffffffffffffffffff90811682528d166000908152603860209081526040918290205460ff16920191909152517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526132309594939291906004016153f6565b60006040518083038186803b15801561324857600080fd5b505af415801561325c573d6000803e3d6000fd5b50505050505050505050565b60006132726138d2565b73ffffffffffffffffffffffffffffffffffffffff84166000818152603460205260409081902060395491517f8e743248000000000000000000000000000000000000000000000000000000008152600481019190915260248101929092526044820185905260648201849052608482015273__$b06080f092f400a43662c3f835a4d9baa8$__90638e7432489060a401611417565b613310613714565b6040517f1e3b41450000000000000000000000000000000000000000000000000000000081526034600482015273ffffffffffffffffffffffffffffffffffffffff8216602482015273__$563c746fa3df0f1858d85f6ef4258864be$__90631e3b4145906044016112eb565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810185905260ff8416608482015260a4810183905260c4810182905260009073ffffffffffffffffffffffffffffffffffffffff8a169063d505accf9060e401600060405180830381600087803b15801561341257600080fd5b505af1158015613426573d6000803e3d6000fd5b5050505060006040518060a001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189600281111561346b5761346b614c75565b600281111561347c5761347c614c75565b815273ffffffffffffffffffffffffffffffffffffffff89166020808301829052600060409384018190529182526035905281902090517f40e95de600000000000000000000000000000000000000000000000000000000815291925073__$c3724b8d563dc83a94e797176cddecb3b9$__916340e95de691613509916034916036918790600401614cdf565b602060405180830381865af4158015613526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354a9190614d52565b9a9950505050505050505050565b613560613714565b60408051808201909152600281527f3737000000000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff83166135e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020600301547501000000000000000000000000000000000000000000900461ffff1615158061367857506000805260366020527f4cb2b152c1b54ce671907a93c300fd5aa72383a9d4ec19a81e3333632ae92e005473ffffffffffffffffffffffffffffffffffffffff8381169116145b6040518060400160405280600281526020017f3832000000000000000000000000000000000000000000000000000000000000815250906136e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260346020526040902090359055565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663631adfca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613796573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ba9190614b64565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600281526020017f31300000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b50565b6003810154600090700100000000000000000000000000000000900464ffffffffff1642811415613888575050600201546fffffffffffffffffffffffffffffffff1690565b600283015461145b906fffffffffffffffffffffffffffffffff808216916138c6917001000000000000000000000000000000009091041684613c70565b90613c7d565b50919050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139619190614b64565b6040517f726600ce00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063726600ce90602401602060405180830381865afa1580156139cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f19190614ed4565b6040518060400160405280600181526020017f36000000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015613aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aee9190614b64565b6040517f7be53ca100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9190911690637be53ca190602401602060405180830381865afa158015613b5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7e9190614ed4565b6040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152509061383f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdb9190614c62565b6003810154600090700100000000000000000000000000000000900464ffffffffff1642811415613c32575050600101546fffffffffffffffffffffffffffffffff1690565b600183015461145b906fffffffffffffffffffffffffffffffff808216916138c6917001000000000000000000000000000000009091041684613cd4565b600061145b838342613d19565b600081157ffffffffffffffffffffffffffffffffffffffffffe6268e1b017bfe18bffffff83900484111517613cb257600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600080613ce864ffffffffff841642615377565b613cf290856154d2565b6301e1338090049050613d11816b033b2e3c9fd0803ce800000061553e565b949350505050565b600080613d2d64ffffffffff851684615377565b905080613d49576b033b2e3c9fd0803ce800000091505061145b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81016000808060028511613d7f576000613d84565b600285035b925066038882915c4000613d988a80613c7d565b81613da557613da561550f565b0491506301e13380613db7838b613c7d565b81613dc457613dc461550f565b049050600082613dd486886154d2565b613dde91906154d2565b60029004905060008285613df2888a6154d2565b613dfc91906154d2565b613e0691906154d2565b60069004905080826301e13380613e1d8a8f6154d2565b613e279190615556565b613e3d906b033b2e3c9fd0803ce800000061553e565b613e47919061553e565b613e51919061553e565b9b9a5050505050505050505050565b828054613e6c90614df6565b90600052602060002090601f016020900481019282613e8e5760008555613ed4565b82601f10613ea757805160ff1916838001178555613ed4565b82800160010185558215613ed4579182015b82811115613ed4578251825591602001919060010190613eb9565b50613ee0929150613ee4565b5090565b5b80821115613ee05760008155600101613ee5565b73ffffffffffffffffffffffffffffffffffffffff8116811461383f57600080fd5b8035613f2681613ef9565b919050565b801515811461383f57600080fd5b600080600080600060a08688031215613f5157600080fd5b8535613f5c81613ef9565b94506020860135613f6c81613ef9565b93506040860135613f7c81613ef9565b9250606086013591506080860135613f9381613f2b565b809150509295509295909350565b803561ffff81168114613f2657600080fd5b803560ff81168114613f2657600080fd5b600080600080600080600080610100898b031215613fe157600080fd5b8835613fec81613ef9565b975060208901359650604089013561400381613ef9565b955061401160608a01613fa1565b94506080890135935061402660a08a01613fb3565b925060c0890135915060e089013590509295985092959890939650565b6000806040838503121561405657600080fd5b823561406181613ef9565b9150602083013561407181613ef9565b809150509250929050565b60006020828403121561408e57600080fd5b61145b82613fb3565b6000806000606084860312156140ac57600080fd5b83356140b781613ef9565b95602085013595506040909401359392505050565b6000602082840312156140de57600080fd5b5035919050565b6000602082840312156140f757600080fd5b813561145b81613ef9565b81515181526101e08101602083015161412f60208401826fffffffffffffffffffffffffffffffff169052565b50604083015161415360408401826fffffffffffffffffffffffffffffffff169052565b50606083015161417760608401826fffffffffffffffffffffffffffffffff169052565b50608083015161419b60808401826fffffffffffffffffffffffffffffffff169052565b5060a08301516141bf60a08401826fffffffffffffffffffffffffffffffff169052565b5060c08301516141d860c084018264ffffffffff169052565b5060e08301516141ee60e084018261ffff169052565b506101008381015173ffffffffffffffffffffffffffffffffffffffff9081169184019190915261012080850151821690840152610140808501518216908401526101608085015190911690830152610180808401516fffffffffffffffffffffffffffffffff908116918401919091526101a0808501518216908401526101c09384015116929091019190915290565b60008083601f84011261429157600080fd5b50813567ffffffffffffffff8111156142a957600080fd5b6020830191508360208285010111156142c157600080fd5b9250929050565b60008060008060008060a087890312156142e157600080fd5b86356142ec81613ef9565b955060208701356142fc81613ef9565b945060408701359350606087013567ffffffffffffffff81111561431f57600080fd5b61432b89828a0161427f565b909450925061433e905060808801613fa1565b90509295509295509295565b60006020828403121561435c57600080fd5b61145b82613fa1565b6000806000806080858703121561437b57600080fd5b843561438681613ef9565b9350602085013592506040850135915060608501356143a481613ef9565b939692955090935050565b600080604083850312156143c257600080fd5b82356143cd81613ef9565b9150602083013561407181613f2b565b600080600080608085870312156143f357600080fd5b84356143fe81613ef9565b935060208501359250604085013561441581613ef9565b915061442360608601613fa1565b905092959194509250565b60008060006060848603121561444357600080fd5b833561444e81613ef9565b925060208401359150604084013561446581613ef9565b809150509250925092565b6000815180845260005b818110156144965760208185018101518683018201520161447a565b818111156144a8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061ffff8084511660208401528060208501511660408401528060408501511660608401525073ffffffffffffffffffffffffffffffffffffffff6060840151166080830152608083015160a080840152613d1160c0840182614470565b600080600080600060a0868803121561455657600080fd5b853561456181613ef9565b9450602086013561457181613ef9565b9350604086013561458181613ef9565b9250606086013561459181613ef9565b91506080860135613f9381613ef9565b600080604083850312156145b457600080fd5b82356145bf81613ef9565b946020939093013593505050565b60008083601f8401126145df57600080fd5b50813567ffffffffffffffff8111156145f757600080fd5b6020830191508360208260051b85010111156142c157600080fd5b6000806020838503121561462557600080fd5b823567ffffffffffffffff81111561463c57600080fd5b614648858286016145cd565b90969095509350505050565b600080600080600060a0868803121561466c57600080fd5b853561467781613ef9565b9450602086013593506040860135925061459160608701613fa1565b600080600080600080600080600080600060e08c8e0312156146b457600080fd5b6146bd8c613f1b565b9a5067ffffffffffffffff8060208e013511156146d957600080fd5b6146e98e60208f01358f016145cd565b909b50995060408d01358110156146ff57600080fd5b61470f8e60408f01358f016145cd565b909950975060608d013581101561472557600080fd5b6147358e60608f01358f016145cd565b909750955061474660808e01613f1b565b94508060a08e0135111561475957600080fd5b5061476a8d60a08e01358e0161427f565b909350915061477b60c08d01613fa1565b90509295989b509295989b9093969950565b80356fffffffffffffffffffffffffffffffff81168114613f2657600080fd5b600080604083850312156147c057600080fd5b6147c98361478d565b91506147d76020840161478d565b90509250929050565b6000806000606084860312156147f557600080fd5b833561480081613ef9565b9250602084013561481081613ef9565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561486f57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010161483d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156148cd576148cd61487b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561491a5761491a61487b565b604052919050565b6000806040838503121561493557600080fd5b61493e83613fb3565b915060208084013567ffffffffffffffff8082111561495c57600080fd5b9085019060a0828803121561497057600080fd5b6149786148aa565b61498183613fa1565b815261498e848401613fa1565b8482015261499e60408401613fa1565b604082015260608301356149b181613ef9565b60608201526080830135828111156149c857600080fd5b80840193505087601f8401126149dd57600080fd5b8235828111156149ef576149ef61487b565b614a1f857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016148d3565b92508083528885828601011115614a3557600080fd5b8085850186850137600085828501015250816080820152809450505050509250929050565b60008060008060008060c08789031215614a7357600080fd5b8635614a7e81613ef9565b95506020870135614a8e81613ef9565b94506040870135614a9e81613ef9565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080610100898b031215614adc57600080fd5b8835614ae781613ef9565b97506020890135965060408901359550606089013561401181613ef9565b6000808284036040811215614b1957600080fd5b8335614b2481613ef9565b925060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614b5657600080fd5b506020830190509250929050565b600060208284031215614b7657600080fd5b815161145b81613ef9565b60006101a08201905086825285602083015284604083015283606083015282516080830152602083015160a0830152604083015173ffffffffffffffffffffffffffffffffffffffff80821660c08501528060608601511660e085015250506080830151610100614c098185018373ffffffffffffffffffffffffffffffffffffffff169052565b60a0850151151561012085015260c085015173ffffffffffffffffffffffffffffffffffffffff90811661014086015260e086015160ff166101608601529085015190811661018085015290505b509695505050505050565b60208152600061145b6020830184614470565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110614cdb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60006101008201905085825284602083015283604083015273ffffffffffffffffffffffffffffffffffffffff808451166060840152602084015160808401526040840151614d3160a0850182614ca4565b5060608401511660c0830152608090920151151560e0909101529392505050565b600060208284031215614d6457600080fd5b5051919050565b82815260406020820152600073ffffffffffffffffffffffffffffffffffffffff8084511660408401528060208501511660608401525060408301516080830152606083015160e060a0840152614dc6610120840182614470565b905061ffff60808501511660c084015260a084015160e084015260c0840151610100840152809150509392505050565b600181811c90821680614e0a57607f821691505b602082108114156138cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006101208201905084825283602083015273ffffffffffffffffffffffffffffffffffffffff8084511660408401528060208501511660608401528060408501511660808401528060608501511660a08401528060808501511660c08401525060a0830151614eba60e084018261ffff169052565b5060c083015161ffff811661010084015250949350505050565b600060208284031215614ee657600080fd5b815161145b81613f2b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff80831681811415614f3857614f38614ef1565b6001019392505050565b8481526020810184905273ffffffffffffffffffffffffffffffffffffffff831660408201526080810161176d6060830184614ca4565b83815260406020808301829052908201839052600090849060608401835b86811015614fd2578335614faa81613ef9565b73ffffffffffffffffffffffffffffffffffffffff1682529282019290820190600101614f97565b50979650505050505050565b858152602081018590526040810184905260608101839052815173ffffffffffffffffffffffffffffffffffffffff1660808201526102008101602083015173ffffffffffffffffffffffffffffffffffffffff811660a084015250604083015173ffffffffffffffffffffffffffffffffffffffff811660c084015250606083015160e0830152608083015161010061507a81850183614ca4565b60a085015191506101206150938186018461ffff169052565b60c086015192506101406150aa8187018515159052565b60e087015161016087810191909152928701516101808701529086015173ffffffffffffffffffffffffffffffffffffffff9081166101a08701529086015160ff166101c0860152908501519081166101e08501529050614c57565b600081518084526020808501945080840160005b8381101561514c57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161511a565b509495945050505050565b600081518084526020808501945080840160005b8381101561514c5781518752958201959082019060010161516b565b85815284602082015283604082015282606082015260a060808201526151c660a08201835173ffffffffffffffffffffffffffffffffffffffff169052565b600060208301516101c08060c08501526151e4610260850183615106565b915060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60808685030160e08701526152208483615157565b93506060870151915061010081878603018188015261523f8584615157565b94506080880151925061012061526c8189018573ffffffffffffffffffffffffffffffffffffffff169052565b60a089015193506101408389880301818a01526152898786614470565b965060c08a0151945061016093506152a6848a018661ffff169052565b60e08a0151945061018085818b0152838b015195506101a0935085848b0152828b0151878b0152818b01516101e08b0152848b015196506153006102008b018873ffffffffffffffffffffffffffffffffffffffff169052565b8a015160ff81166102208b01529550615317915050565b8701518015156102408801529250614fd2915050565b60008060008060008060c0878903121561534657600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b60008282101561538957615389614ef1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156153ef576153ef614ef1565b5060010190565b60006101a08201905086825285602083015284604083015283606083015273ffffffffffffffffffffffffffffffffffffffff8084511660808401528060208501511660a084015250604083015161546660c084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015160e08301526080830151610100818185015260a085015161012085015260c085015161014085015260e085015191506154be61016085018373ffffffffffffffffffffffffffffffffffffffff169052565b84015160ff81166101808501529050614c57565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561550a5761550a614ef1565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561555157615551614ef1565b500190565b60008261558c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212205fd7f295292baebc1c9db4ed6520d269495fbc821e20ec0c9e748a8f54f37f9c64736f6c634300080a0033",
  "linkReferences": {
    "contracts/protocol/libraries/logic/BorrowLogic.sol": {
      "BorrowLogic": [
        {
          "length": 20,
          "start": 5175
        },
        {
          "length": 20,
          "start": 5942
        },
        {
          "length": 20,
          "start": 8510
        },
        {
          "length": 20,
          "start": 8673
        },
        {
          "length": 20,
          "start": 11601
        },
        {
          "length": 20,
          "start": 13808
        }
      ]
    },
    "contracts/protocol/libraries/logic/BridgeLogic.sol": {
      "BridgeLogic": [
        {
          "length": 20,
          "start": 7693
        },
        {
          "length": 20,
          "start": 13307
        }
      ]
    },
    "contracts/protocol/libraries/logic/EModeLogic.sol": {
      "EModeLogic": [
        {
          "length": 20,
          "start": 4694
        }
      ]
    },
    "contracts/protocol/libraries/logic/FlashLoanLogic.sol": {
      "FlashLoanLogic": [
        {
          "length": 20,
          "start": 5841
        },
        {
          "length": 20,
          "start": 10254
        }
      ]
    },
    "contracts/protocol/libraries/logic/LiquidationLogic.sol": {
      "LiquidationLogic": [
        {
          "length": 20,
          "start": 3133
        }
      ]
    },
    "contracts/protocol/libraries/logic/PoolLogic.sol": {
      "PoolLogic": [
        {
          "length": 20,
          "start": 8051
        },
        {
          "length": 20,
          "start": 8626
        },
        {
          "length": 20,
          "start": 10563
        },
        {
          "length": 20,
          "start": 11726
        },
        {
          "length": 20,
          "start": 13424
        }
      ]
    },
    "contracts/protocol/libraries/logic/SupplyLogic.sol": {
      "SupplyLogic": [
        {
          "length": 20,
          "start": 4111
        },
        {
          "length": 20,
          "start": 6285
        },
        {
          "length": 20,
          "start": 6927
        },
        {
          "length": 20,
          "start": 7015
        },
        {
          "length": 20,
          "start": 12695
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/protocol/libraries/logic/BorrowLogic.sol": {
      "BorrowLogic": [
        {
          "length": 20,
          "start": 4898
        },
        {
          "length": 20,
          "start": 5665
        },
        {
          "length": 20,
          "start": 8233
        },
        {
          "length": 20,
          "start": 8396
        },
        {
          "length": 20,
          "start": 11324
        },
        {
          "length": 20,
          "start": 13531
        }
      ]
    },
    "contracts/protocol/libraries/logic/BridgeLogic.sol": {
      "BridgeLogic": [
        {
          "length": 20,
          "start": 7416
        },
        {
          "length": 20,
          "start": 13030
        }
      ]
    },
    "contracts/protocol/libraries/logic/EModeLogic.sol": {
      "EModeLogic": [
        {
          "length": 20,
          "start": 4417
        }
      ]
    },
    "contracts/protocol/libraries/logic/FlashLoanLogic.sol": {
      "FlashLoanLogic": [
        {
          "length": 20,
          "start": 5564
        },
        {
          "length": 20,
          "start": 9977
        }
      ]
    },
    "contracts/protocol/libraries/logic/LiquidationLogic.sol": {
      "LiquidationLogic": [
        {
          "length": 20,
          "start": 2856
        }
      ]
    },
    "contracts/protocol/libraries/logic/PoolLogic.sol": {
      "PoolLogic": [
        {
          "length": 20,
          "start": 7774
        },
        {
          "length": 20,
          "start": 8349
        },
        {
          "length": 20,
          "start": 10286
        },
        {
          "length": 20,
          "start": 11449
        },
        {
          "length": 20,
          "start": 13147
        }
      ]
    },
    "contracts/protocol/libraries/logic/SupplyLogic.sol": {
      "SupplyLogic": [
        {
          "length": 20,
          "start": 3834
        },
        {
          "length": 20,
          "start": 6008
        },
        {
          "length": 20,
          "start": 6650
        },
        {
          "length": 20,
          "start": 6738
        },
        {
          "length": 20,
          "start": 12418
        }
      ]
    }
  }
}
