{
  "contractName": "DolomiteMargin",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint64",
              "name": "marginRatioMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "earningsRateMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "marginPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "interestRateMax",
              "type": "uint96"
            },
            {
              "internalType": "uint128",
              "name": "minBorrowedValueMax",
              "type": "uint128"
            }
          ],
          "internalType": "struct Storage.RiskLimits",
          "name": "riskLimits",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginRatio",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpread",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRate",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "minBorrowedValue",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "accountMaxNumberOfMarketsWithBalances",
          "type": "uint256"
        },
        {
          "internalType": "contract IOracleSentinel",
          "name": "oracleSentinel",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "callbackGasLimit",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "trusted",
          "type": "bool"
        }
      ],
      "name": "LogOperatorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountBalances",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "value",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.Par[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getAccountMarketWithBalanceAtIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAccountMaxNumberOfMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountNumberOfMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountNumberOfMarketsWithDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getAccountPar",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "value",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.Par",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountRiskOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginRatioOverride",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpreadOverride",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "accountOwner",
          "type": "address"
        }
      ],
      "name": "getAccountRiskOverrideSetterByAccountOwner",
      "outputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountStatus",
      "outputs": [
        {
          "internalType": "enum Account.Status",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountValues",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getAccountWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAdjustedAccountValues",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCallbackGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDefaultAccountRiskOverrideSetter",
      "outputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEarningsRate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "autoTrader",
          "type": "address"
        }
      ],
      "name": "getIsAutoTraderSpecial",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getIsBorrowAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getIsGlobalOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getIsLiquidationAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getIsLocalOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLiquidationSpread",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "heldMarketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedMarketId",
          "type": "uint256"
        }
      ],
      "name": "getLiquidationSpreadForAccountAndPair",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "heldMarketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedMarketId",
          "type": "uint256"
        }
      ],
      "name": "getLiquidationSpreadForPair",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getLiquidationSpreadOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMarginRatio",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getMarginRatioForAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getMarginRatioOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarket",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "isClosing",
              "type": "bool"
            },
            {
              "components": [
                {
                  "internalType": "uint128",
                  "name": "borrow",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "supply",
                  "type": "uint128"
                }
              ],
              "internalType": "struct Types.TotalPar",
              "name": "totalPar",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint112",
                  "name": "borrow",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "supply",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "lastUpdate",
                  "type": "uint32"
                }
              ],
              "internalType": "struct Interest.Index",
              "name": "index",
              "type": "tuple"
            },
            {
              "internalType": "contract IPriceOracle",
              "name": "priceOracle",
              "type": "address"
            },
            {
              "internalType": "contract IInterestSetter",
              "name": "interestSetter",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "marginPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "liquidationSpreadPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxSupplyWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxBorrowWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "earningsRateOverride",
              "type": "tuple"
            }
          ],
          "internalType": "struct Storage.Market",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketBorrowInterestRateApr",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketBorrowInterestRatePerSecond",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketCachedIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketCurrentIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketEarningsRateOverride",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getMarketIdByTokenAddress",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketInterestRate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketInterestSetter",
      "outputs": [
        {
          "internalType": "contract IInterestSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketIsClosing",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketLiquidationSpreadPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMarginPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxBorrowWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxSupplyWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketPriceOracle",
      "outputs": [
        {
          "internalType": "contract IPriceOracle",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketSpreadPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketSupplyInterestRateApr",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTotalPar",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "borrow",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "supply",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.TotalPar",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTotalWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "borrow",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "supply",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.TotalWei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketWithInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "isClosing",
              "type": "bool"
            },
            {
              "components": [
                {
                  "internalType": "uint128",
                  "name": "borrow",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "supply",
                  "type": "uint128"
                }
              ],
              "internalType": "struct Types.TotalPar",
              "name": "totalPar",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint112",
                  "name": "borrow",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "supply",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "lastUpdate",
                  "type": "uint32"
                }
              ],
              "internalType": "struct Interest.Index",
              "name": "index",
              "type": "tuple"
            },
            {
              "internalType": "contract IPriceOracle",
              "name": "priceOracle",
              "type": "address"
            },
            {
              "internalType": "contract IInterestSetter",
              "name": "interestSetter",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "marginPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "liquidationSpreadPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxSupplyWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxBorrowWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "earningsRateOverride",
              "type": "tuple"
            }
          ],
          "internalType": "struct Storage.Market",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Price",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMinBorrowedValue",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getNumExcessTokens",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNumMarkets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getOracleSentinel",
      "outputs": [
        {
          "internalType": "contract IOracleSentinel",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRiskLimits",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint64",
              "name": "marginRatioMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "earningsRateMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "marginPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "interestRateMax",
              "type": "uint96"
            },
            {
              "internalType": "uint128",
              "name": "minBorrowedValueMax",
              "type": "uint128"
            }
          ],
          "internalType": "struct Storage.RiskLimits",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info[]",
          "name": "accounts",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "enum Actions.ActionType",
              "name": "actionType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "accountId",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "enum Types.AssetDenomination",
                  "name": "denomination",
                  "type": "uint8"
                },
                {
                  "internalType": "enum Types.AssetReference",
                  "name": "ref",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.AssetAmount",
              "name": "amount",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "primaryMarketId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "secondaryMarketId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "otherAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "otherAccountId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Actions.ActionArgs[]",
          "name": "actions",
          "type": "tuple[]"
        }
      ],
      "name": "operate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "contract IPriceOracle",
          "name": "priceOracle",
          "type": "address"
        },
        {
          "internalType": "contract IInterestSetter",
          "name": "interestSetter",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginPremium",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "spreadPremium",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "maxSupplyWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxBorrowWei",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRateOverride",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "isClosing",
          "type": "bool"
        }
      ],
      "name": "ownerAddMarket",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "accountMaxNumberOfMarketsWithBalances",
          "type": "uint256"
        }
      ],
      "name": "ownerSetAccountMaxNumberOfMarketsWithBalances",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "accountOwner",
          "type": "address"
        },
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "accountRiskOverrideSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetAccountRiskOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "autoTrader",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "special",
          "type": "bool"
        }
      ],
      "name": "ownerSetAutoTraderSpecial",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "callbackGasLimit",
          "type": "uint256"
        }
      ],
      "name": "ownerSetCallbackGasLimit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "accountRiskOverrideSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetDefaultAccountRiskOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRate",
          "type": "tuple"
        }
      ],
      "name": "ownerSetEarningsRate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRateOverride",
          "type": "tuple"
        }
      ],
      "name": "ownerSetEarningsRateOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ownerSetGlobalOperator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "contract IInterestSetter",
          "name": "interestSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetInterestSetter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isClosing",
          "type": "bool"
        }
      ],
      "name": "ownerSetIsClosing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "spread",
          "type": "tuple"
        }
      ],
      "name": "ownerSetLiquidationSpread",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpreadPremium",
          "type": "tuple"
        }
      ],
      "name": "ownerSetLiquidationSpreadPremium",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginPremium",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMarginPremium",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "ratio",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMarginRatio",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxBorrowWei",
          "type": "uint256"
        }
      ],
      "name": "ownerSetMaxBorrowWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxSupplyWei",
          "type": "uint256"
        }
      ],
      "name": "ownerSetMaxSupplyWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "minBorrowedValue",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMinBorrowedValue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IOracleSentinel",
          "name": "oracleSentinel",
          "type": "address"
        }
      ],
      "name": "ownerSetOracleSentinel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "contract IPriceOracle",
          "name": "priceOracle",
          "type": "address"
        }
      ],
      "name": "ownerSetPriceOracle",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ownerWithdrawExcessTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ownerWithdrawUnsupportedTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "internalType": "struct Types.OperatorArg[]",
          "name": "args",
          "type": "tuple[]"
        }
      ],
      "name": "setOperators",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"interestRateMax\",\"type\":\"uint96\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"riskLimits\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"accountMaxNumberOfMarketsWithBalances\",\"type\":\"uint256\"},{\"internalType\":\"contract IOracleSentinel\",\"name\":\"oracleSentinel\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"callbackGasLimit\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"name\":\"LogOperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getAccountMarketWithBalanceAtIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAccountMaxNumberOfMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountNumberOfMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountNumberOfMarketsWithDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountPar\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountRiskOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatioOverride\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadOverride\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"}],\"name\":\"getAccountRiskOverrideSetterByAccountOwner\",\"outputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"internalType\":\"enum Account.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAdjustedAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCallbackGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getDefaultAccountRiskOverrideSetter\",\"outputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEarningsRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"}],\"name\":\"getIsAutoTraderSpecial\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getIsBorrowAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsGlobalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getIsLiquidationAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsLocalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationSpread\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForAccountAndPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getLiquidationSpreadOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMarginRatio\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getMarginRatioForAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getMarginRatioOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarket\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxSupplyWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxBorrowWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketBorrowInterestRateApr\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketBorrowInterestRatePerSecond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCachedIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCurrentIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketEarningsRateOverride\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getMarketIdByTokenAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestSetter\",\"outputs\":[{\"internalType\":\"contract IInterestSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsClosing\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketLiquidationSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMarginPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxBorrowWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxSupplyWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPriceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSupplyInterestRateApr\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalPar\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalWei\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalWei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketWithInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxSupplyWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxBorrowWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinBorrowedValue\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getNumExcessTokens\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumMarkets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOracleSentinel\",\"outputs\":[{\"internalType\":\"contract IOracleSentinel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"interestRateMax\",\"type\":\"uint96\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info[]\",\"name\":\"accounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"actions\",\"type\":\"tuple[]\"}],\"name\":\"operate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"maxSupplyWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBorrowWei\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerAddMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"accountMaxNumberOfMarketsWithBalances\",\"type\":\"uint256\"}],\"name\":\"ownerSetAccountMaxNumberOfMarketsWithBalances\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"accountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"ownerSetAccountRiskOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"special\",\"type\":\"bool\"}],\"name\":\"ownerSetAutoTraderSpecial\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"callbackGasLimit\",\"type\":\"uint256\"}],\"name\":\"ownerSetCallbackGasLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"accountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"ownerSetDefaultAccountRiskOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRateOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ownerSetGlobalOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"}],\"name\":\"ownerSetInterestSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerSetIsClosing\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spread\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpread\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpreadPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"ratio\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginRatio\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBorrowWei\",\"type\":\"uint256\"}],\"name\":\"ownerSetMaxBorrowWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSupplyWei\",\"type\":\"uint256\"}],\"name\":\"ownerSetMaxSupplyWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"name\":\"ownerSetMinBorrowedValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IOracleSentinel\",\"name\":\"oracleSentinel\",\"type\":\"address\"}],\"name\":\"ownerSetOracleSentinel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"ownerSetPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawExcessTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawUnsupportedTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorArg[]\",\"name\":\"args\",\"type\":\"tuple[]\"}],\"name\":\"setOperators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"dYdX * Main contract that inherits from other contracts\",\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"params\":{\"accounts\":\"A list of all accounts that will be used in this operation. Cannot contain                  duplicates. In each action, the relevant account will be referred-to by its                  index in the list.\",\"actions\":\"An ordered list of all actions that will be taken in this operation. The                  actions will be processed in order.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setOperators((address,bool)[])\":{\"params\":{\"args\":\"A list of OperatorArgs which have an address and a boolean. The boolean value              denotes whether to approve (true) or revoke approval (false) for that address.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"DolomiteMargin\"},\"userdoc\":{\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"notice\":\"The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \\\"operation\\\". Account collateralization is ensured only after the completion of the entire operation.\"},\"setOperators((address,bool)[])\":{\"notice\":\"Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts.     * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol\":\"DolomiteMargin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Admin.sol\":{\"keccak256\":\"0x48f1ed90f4affb2868cc8929149fd6467ffffddbb7e5f44293a7b3ce3b69daeb\",\"urls\":[\"bzz-raw://d1825beb03620ace4ae67175f7e17a7ca6a9120c669dff04ad1b9796f8ec02c8\",\"dweb:/ipfs/QmX7c9kMPyoHKjmu5iDV36iXca1BYenSG1uRwbzB4xv3VH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol\":{\"keccak256\":\"0x1ae9619291f1c133eb30ec6d59cd85c5f956e358208bf0f7e4b5e1c4ace8cc38\",\"urls\":[\"bzz-raw://634300fc49a5feb10a4207ea878659a1666317a88ab1fa590a9abd5e6d4cf23e\",\"dweb:/ipfs/QmRbnfoqo9QoPCcgenRhhLSphREQpApW5y4GWJYtQ8NfGn\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Getters.sol\":{\"keccak256\":\"0x38b53eac1a00cdfa28c9492105f6fac5afa919c7b8d6695f25e4338cfc3f33fd\",\"urls\":[\"bzz-raw://a843d1c49aa49a9cfbca882a1aa3e7652a0bf72e382cf6e19158713c759b8bca\",\"dweb:/ipfs/QmSyrWniDHPAtvpXuJhi4VG5ZYMQmFpCRY7ygdyWa1vDuQ\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/HasState.sol\":{\"keccak256\":\"0x5b3ef0033e519ea3f2a7877f659d653465e51f944ee5bb1957c8a089a151f609\",\"urls\":[\"bzz-raw://0f7e2c3b46ea904552e101c7bfffb647afc56408960814bab1989f2c05a34092\",\"dweb:/ipfs/QmWP3jVoYx9UYajjbDdUTBjkJT84gdJXoxaq7npTR4qVb3\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Operation.sol\":{\"keccak256\":\"0x7ba8838ee5773c34b6c11b175f6f31d33b6fe54cb83b815e01ea94be5009ea55\",\"urls\":[\"bzz-raw://776f2e7e207eb0f34d06f15093bf5e59bee5d527a4926f81e7849ccb78032118\",\"dweb:/ipfs/QmZDp8qnbDswHgZV99ZnXKFz7Bsb93cTqkgPW6hbTTRf6f\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Permission.sol\":{\"keccak256\":\"0x157aabb0fe4711f828790ef35a507d44c427c48b5f01b01eacbefe7a0a7815a7\",\"urls\":[\"bzz-raw://3eb031d9e809cb032dc52d5f197a70387aee9a7d5e02d27fd3f1c00451aefb32\",\"dweb:/ipfs/QmVnYud1bJ9BmRQnpQEGvnmFWTixmBZQBHbCxFy8UMo8ZK\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol\":{\"keccak256\":\"0xe0e67a0da08bac8f60cf3c800c1d462a7046ff6959ff9ba0399f3d754931f672\",\"urls\":[\"bzz-raw://0441193eb7bcb8610dc9044827272d51b5be3294c1bb3f61828e0abc18e4226f\",\"dweb:/ipfs/QmZzpg6mbxu1MZgPHKZnkFfJsFU6Cnk9LNJ5Nu8JaGTVie\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/CallImpl.sol\":{\"keccak256\":\"0x868f8c2ed6dfdf4714505719fc12839df3010f4e83d14daa3b068013e4bd8cca\",\"urls\":[\"bzz-raw://1ad15cf77619f7f2830de1dc1e2278fd4184da7100937b5ad46903a08b1e4e94\",\"dweb:/ipfs/QmYaGB1xqfDLHbWQRASWR6Yt7CxKM2da3QkCU9NZwb1fhB\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol\":{\"keccak256\":\"0x07eaed8d56d7b57a9b0ee9a76918a087d08ae10c999ffc12c7368ab5e8551fb4\",\"urls\":[\"bzz-raw://19f5a6045092355b4a2eca6a67118a737b2ff66f95e8ba816535c719b0479407\",\"dweb:/ipfs/QmZQVZKSCuk6C437jwnx8PX51xcDEZeM1aTJ5YcaViNQw4\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/GettersImpl.sol\":{\"keccak256\":\"0xd22d90a50b968bd9c5a9ead2bb7dff3563c4a932fe0863bf7077a80e878de890\",\"urls\":[\"bzz-raw://42bd9cba27af1cf6926a0ce1f3cac296a23461ecf3b5df193ff27624c2ee860a\",\"dweb:/ipfs/QmWkstrUhRqGgakt539NvgAcQ8Z9PLizcagdWpdWPAJEC5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xc05fd822f0991a652f6c9bc0328370bb15ff5eb3ba89cbc1d9140e4835004e7a\",\"urls\":[\"bzz-raw://842e9c896073941e69fbdc32b21b50f873a8bb57c38c810ef70e7b64ee0c3ff7\",\"dweb:/ipfs/QmRBY47DUJQ3KQ7yKvCimv6vstkk6i3fFUQPtWXfG2mXHg\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0xbdd0cdd00dd22d00e26fe3bfea01bfe67ebfa960e50cfdd205dce6bbd988716e\",\"urls\":[\"bzz-raw://c3aa4b12cc57bb1766b97041440b8970f0f2d477f0333609f71e3a7ba864624b\",\"dweb:/ipfs/QmSCmEcnfEqPduWKNdSeNz5DVVXePDRrDQen7jUhBpHb1X\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/TradeImpl.sol\":{\"keccak256\":\"0xa4b8a68b42ce6d5294832f77f30a289f6068c89b2cb3601c2894bf62cf597e91\",\"urls\":[\"bzz-raw://c0474a10ef5e0376ba068e2773e9f7807ded4fd787a6e3db3948288bd43c6fc9\",\"dweb:/ipfs/QmSxWWkbB2Gem27V1Kpbevy8eurr9e1jeA4JaeRZ7sRwsr\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/TransferImpl.sol\":{\"keccak256\":\"0x21ca9d8697802f9e023ecabbce9e9c544c3dd1d6040f5eefb3466e672563b280\",\"urls\":[\"bzz-raw://3b773cb3b8334005070518d6044b555cec9ce79eb99fcc2cfb9d577ce6bf6def\",\"dweb:/ipfs/QmSnMbrerGz8h25Ms2K6pDNpaj8iVUCAGSjLhh6SqHU6zC\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/WithdrawalImpl.sol\":{\"keccak256\":\"0x74c7497bc89d75c0719f98181aed2a63719f6e1d9235679c0e6b5582a772bf8b\",\"urls\":[\"bzz-raw://dcf6492d9b36ded7e109823c126875f0f792c56b2138b088d1f12532e29b8957\",\"dweb:/ipfs/QmSQLsgjUgKqEYA975jV9WjUAEH342F9wtASmmBnE7NjE7\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x123b5d92696b180c60a838d3117a9fd571851911f37c78212969015e169e14fc\",\"urls\":[\"bzz-raw://cd5d9aeb5b4e3de18ac8a51a3b2320f3e7a247b959defa9c289ee6aaf2bfc348\",\"dweb:/ipfs/QmPdjeya5BDYHEUMuz6jiwZrKJa8p2uN1vumLAJ7nhG5cN\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol\":{\"keccak256\":\"0xd8134eac006b0a59b71cbcca82dfce7ce092a57c13a8383ebf0e8bc90c0df3e7\",\"urls\":[\"bzz-raw://ccead8bdcc71402ae7b1d8fb9bc1527081a5eb14f98a5157f5c6f27f21f8ad31\",\"dweb:/ipfs/QmdnDvTiX3EDm93ahjnZabNNgoyQzGtKpfbQUNtJe7t8Ts\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x9369468538c371057c907f84d438cec6b47673711fe289cc3779f8671314e06b\",\"urls\":[\"bzz-raw://0f59a670f4bc5cf1bd3dd58bdf6c31723d9d84d9da7d9283d6860cdf5f33b7c5\",\"dweb:/ipfs/QmTGuvD5WQD2z56GH35HoPJivKPeeEpbXidJVcbXZyT23C\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x5952f2f78aa0adb88980d9eeec5626fecbec79103038841c3ad9e4f2c4ac556b\",\"urls\":[\"bzz-raw://2a358a8370fa8abba24db2a3337f5b397e51a686d84facaf70ced9cc32d65235\",\"dweb:/ipfs/QmY4vPNq3SMu176LL4XRxFPtDQf8QEztQNxerWvmoEALsR\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/SafeExternalCallback.sol\":{\"keccak256\":\"0xd308a1ab320de20780f7041ea5efd9568f8692e1ed6cf512b967ab63c791a8ff\",\"urls\":[\"bzz-raw://4a904b056f094be598396a90a5ba5297213934cfc2816848a494469ce249edd4\",\"dweb:/ipfs/QmcmeezMFPntDLNS1EY4j5THgRJUeyscgLv55WwxbFoiaY\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"@openzeppelin/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzz-raw://bed15b3f35ed05505efc8fb5cb01d06c52230fbcaadf4ed24a85b1ac2f15f33c\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620062583803806200625883398101604081905262000034916200064d565b6000620000496001600160e01b036200049116565b601380546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062006238833981519152908290a35060138054600160a01b60ff60a01b1990911617905587516010805460208b01516040808d015160608e01516001600160401b03199485166001600160401b0397881617600160401b600160801b03191668010000000000000000948816850217600160801b600160c01b031916600160801b92881692909202919091176001600160c01b0316600160c01b918716919091021790935560808c01516011805460a08f015194169190951617600160401b600160a01b0319166001600160601b03909216021790915560c0890151601280546001600160801b0319166001600160801b0390921691909117905551632a6e9a8b60e11b815273__AdminImpl_____________________________906354dd351690620001ac906000908b90600401620007cf565b60006040518083038186803b158015620001c557600080fd5b505af4158015620001da573d6000803e3d6000fd5b50506040516303d139af60e21b815273__AdminImpl_____________________________9250630f44e6bc91506200021a906000908a90600401620007cf565b60006040518083038186803b1580156200023357600080fd5b505af415801562000248573d6000803e3d6000fd5b5050604051630311401d60e41b815273__AdminImpl_____________________________925063311401d0915062000288906000908990600401620007cf565b60006040518083038186803b158015620002a157600080fd5b505af4158015620002b6573d6000803e3d6000fd5b5050604051633e72b31360e21b815273__AdminImpl_____________________________925063f9cacc4c9150620002f6906000908890600401620007cf565b60006040518083038186803b1580156200030f57600080fd5b505af415801562000324573d6000803e3d6000fd5b5050604051631c2d854760e21b815273__AdminImpl_____________________________92506370b6151c915062000364906000908790600401620007ee565b60006040518083038186803b1580156200037d57600080fd5b505af415801562000392573d6000803e3d6000fd5b5050604051632e5c853560e11b815273__AdminImpl_____________________________9250635cb90a6a9150620003d2906000908690600401620007a9565b60006040518083038186803b158015620003eb57600080fd5b505af415801562000400573d6000803e3d6000fd5b50506040516301cf9adf60e31b815273__AdminImpl_____________________________9250630e7cd6f8915062000440906000908590600401620007ee565b60006040518083038186803b1580156200045957600080fd5b505af41580156200046e573d6000803e3d6000fd5b5050505062000483326200049560201b60201c565b5050505050505050620008d0565b3390565b6001600160a01b038116620004c75760405162461bcd60e51b8152600401620004be9062000797565b60405180910390fd5b6013546040516001600160a01b038084169216906000805160206200623883398151915290600090a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b80516200051f816200088a565b92915050565b6000602082840312156200053857600080fd5b6200054460206200080d565b9050600062000554848462000626565b82525092915050565b600060e082840312156200057057600080fd5b6200057c60e06200080d565b905060006200058c848462000633565b82525060206200059f8484830162000633565b6020830152506040620005b58482850162000633565b6040830152506060620005cb8482850162000633565b6060830152506080620005e18482850162000633565b60808301525060a0620005f78482850162000640565b60a08301525060c06200060d8482850162000619565b60c08301525092915050565b80516200051f81620008a4565b80516200051f81620008af565b80516200051f81620008ba565b80516200051f81620008c5565b6000806000806000806000806101c0898b0312156200066b57600080fd5b6000620006798b8b6200055d565b98505060e06200068c8b828c0162000525565b975050610100620006a08b828c0162000525565b965050610120620006b48b828c0162000525565b955050610140620006c88b828c0162000525565b945050610160620006dc8b828c0162000626565b935050610180620006f08b828c0162000512565b9250506101a0620007048b828c0162000626565b9150509295985092959890939650565b6200071f816200084a565b82525050565b60006200073460268362000834565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b805160208301906200078284826200078c565b50505050565b9052565b6200071f816200086f565b602080825281016200051f8162000725565b60408101620007b9828562000788565b620007c8602083018462000714565b9392505050565b60408101620007df828562000788565b620007c860208301846200076f565b60408101620007fe828562000788565b620007c860208301846200078c565b6040518181016001600160401b03811182821017156200082c57600080fd5b604052919050565b90815260200190565b60006200051f8262000863565b60006200051f826200083d565b6001600160801b031690565b6001600160a01b031690565b90565b6001600160401b031690565b6001600160601b031690565b62000895816200084a565b8114620008a157600080fd5b50565b620008958162000857565b62000895816200086f565b620008958162000872565b62000895816200087e565b61595880620008e06000396000f3fe608060405234801561001057600080fd5b50600436106105ac5760003560e01c80638da5cb5b116102ed578063deec053d11610191578063ec6e3987116100ee578063f2385be3116100a2578063f94160521161007c578063f941605214610bcb578063fd04b60614610bde578063fd47eda614610956576105ac565b8063f2385be314610b9d578063f2901ae214610ba5578063f2fde38b14610bb8576105ac565b8063ed4d6f5c116100d3578063ed4d6f5c14610b64578063ef6957d014610b77578063f1061ba814610b8a576105ac565b8063ec6e398714610b3e578063ecef481f14610b51576105ac565b8063e56659fc11610145578063e8e72f751161012a578063e8e72f7514610af6578063eb1c6e6b14610b09578063eb44fdd314610b1e576105ac565b8063e56659fc14610ad0578063e5e23ef214610ae3576105ac565b8063e51bfcb411610176578063e51bfcb414610a95578063e52828c714610ab5578063e552022814610ac8576105ac565b8063deec053d14610a6f578063e0e48d1914610a82576105ac565b8063ba77ea671161024a578063cb04a34c116101fe578063d93c9591116101d8578063d93c959114610796578063dc6d784614610a54578063de8be8e714610a67576105ac565b8063cb04a34c14610a0e578063d24c48bc14610a2e578063d5ecf7c514610a41576105ac565b8063c0e044fc1161022f578063c0e044fc146109eb578063c1460942146109f3578063c190c2ec146109fb576105ac565b8063ba77ea67146109c5578063c0bb72b7146109d8576105ac565b8063ac7bb20b116102a1578063b306e4f811610286578063b306e4f81461097c578063b548b8921461098f578063b64e31ea146109b2576105ac565b8063ac7bb20b14610956578063b0dc49f814610969576105ac565b80638f6bc659116102d25780638f6bc6591461091d5780638fae3be114610930578063a67a6a4514610943576105ac565b80638da5cb5b1461090d5780638f32d59b14610915576105ac565b8063384027621161045457806356ea84b2116103b15780636a8194e7116103655780637e9eaf411161033f5780637e9eaf41146108df57806385b53fc8146108e75780638928378e146108fa576105ac565b80636a8194e7146108ac578063715018a6146108cf578063770e43e0146108d7576105ac565b80635d3c0ce8116103965780635d3c0ce81461087357806363ae56b31461088657806366411ff414610899576105ac565b806356ea84b2146108405780635ac7d17c14610860576105ac565b80634be87414116104085780634e634067116103ed5780634e6340671461081d5780634f3c1542146108255780634f4d66f61461082d576105ac565b80634be87414146108025780634db90d5214610815576105ac565b80633a031bf0116104395780633a031bf0146107bc57806347d1b53c146107cf57806348e648ee146107ef576105ac565b80633840276214610796578063387a498a146107a9576105ac565b806317b505251161050d57806320945e26116104c15780632e822af31161049b5780632e822af3146107705780633063bce2146107835780633305e5bb14610709576105ac565b806320945e2614610742578063295c39a5146107555780632a5608451461075d576105ac565b80631a7777bb116104f25780631a7777bb146107095780631ae4ec521461071c5780631eb120761461072f576105ac565b806317b50525146106d6578063197f0f05146106f6576105ac565b80630f47fab011610564578063121fb72f11610549578063121fb72f14610682578063124f914c1461069557806313368364146106b6576105ac565b80630f47fab014610642578063105de10c14610662576105ac565b80630781d820116105955780630781d820146105fa57806307af15681461060f5780630b28fa3e1461062f576105ac565b8063052f72d7146105b1578063062bd3e9146105da575b600080fd5b6105c46105bf3660046144af565b610bf1565b6040516105d191906152c8565b60405180910390f35b6105ed6105e8366004614a5f565b610c9e565b6040516105d19190615237565b61060d610608366004614a5f565b610d43565b005b61062261061d366004614a5f565b610e3f565b6040516105d19190615692565b61060d61063d366004614af8565b610ee9565b6106556106503660046148d4565b610fdf565b6040516105d19190615260565b6106756106703660046148d4565b6110a7565b6040516105d19190615322565b61060d610690366004614ad9565b611152565b6106a86106a33660046148d4565b611201565b6040516105d1929190615330565b6106c96106c4366004614a5f565b6112bc565b6040516105d191906152d6565b6106e96106e43660046148d4565b611361565b6040516105d191906156a0565b6106c9610704366004614a5f565b611406565b610675610717366004614a5f565b61145b565b61060d61072a366004614b28565b6114b6565b61067561073d366004614922565b611565565b6106756107503660046148d4565b61161e565b6106e9611679565b6106e961076b3660046144eb565b611721565b61060d61077e36600461484a565b61183d565b61060d61079136600461484a565b6118ea565b6106226107a4366004614a5f565b611997565b61060d6107b736600461484a565b6119f2565b6105c46107ca3660046144eb565b611a9f565b6107e26107dd3660046148f2565b611b4f565b6040516105d191906153a1565b6106c96107fd3660046144af565b611bfb565b61060d610810366004614af8565b611c50565b6105c4611cff565b6105c4611da2565b610675611df5565b6106e961083b3660046148d4565b611e9e565b61085361084e366004614a5f565b611ef3565b6040516105d1919061534b565b6105c461086e366004614a5f565b611f9e565b6106756108813660046148d4565b611ff3565b61060d610894366004614a5f565b61204e565b61060d6108a73660046147f0565b6120fb565b6108bf6108ba3660046148d4565b6121a8565b6040516105d19493929190615271565b61060d612269565b6106c96122fc565b61067561239f565b61060d6108f53660046146a8565b6123f8565b610675610908366004614a5f565b6124cf565b6105ed61252a565b6105c4612546565b6106e961092b366004614a9b565b612586565b6106e961093e3660046144af565b612637565b61060d610951366004614649565b61268c565b610675610964366004614a5f565b612717565b61060d610977366004614555565b612772565b61060d61098a366004614b28565b612821565b6109a261099d366004614a5f565b6128d0565b6040516105d19493929190615368565b6106756109c0366004614a5f565b612994565b6106a86109d33660046148d4565b6129ef565b61060d6109e636600461484a565b612aab565b6106e9612b58565b610675612bab565b610622610a093660046148f2565b612c04565b610a21610a1c366004614a5f565b612cb0565b6040516105d19190615684565b610675610a3c366004614b28565b612d5a565b610622610a4f366004614a5f565b612e2d565b610a21610a62366004614a5f565b612e88565b6106e9612ee3565b610853610a7d366004614a5f565b612f36565b6106e9610a903660046148f2565b612f91565b610aa8610aa33660046148d4565b613038565b6040516105d191906152e4565b610675610ac3366004614a5f565b6130dd565b610675613138565b61060d610ade3660046147f0565b613191565b61060d610af1366004614af8565b61323e565b61060d610b04366004614ad9565b6132ed565b610b1161339c565b6040516105d191906153af565b610b31610b2c366004614a5f565b613445565b6040516105d19190615359565b61060d610b4c366004614525565b6134f1565b610675610b5f366004614a5f565b6135a0565b61060d610b72366004614585565b6135fb565b61060d610b85366004614aba565b613706565b6105c4610b983660046144af565b6137b5565b6106c961380a565b61060d610bb3366004614525565b61385d565b61060d610bc63660046144af565b61390c565b6106a8610bd93660046148d4565b61393c565b610675610bec366004614a5f565b61399f565b6040517f288afc6200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063288afc6290610c4690849086906004016153cb565b60206040518083038186803b158015610c5e57600080fd5b505af4158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906147d2565b90505b919050565b6040517fa2169a3a00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a2169a3a90610cf390849086906004016155c8565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906144cd565b610d4b612546565b610d705760405162461bcd60e51b8152600401610d6790615302565b60405180910390fd5b601354600160a01b900460ff16610d995760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f70b6151c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906370b6151c90610df99060009085906004016155c8565b60006040518083038186803b158015610e1157600080fd5b505af4158015610e25573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b179055505050565b610e47613abf565b6040517f7462482a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90637462482a90610e9a9060009086906004016155c8565b604080518083038186803b158015610eb157600080fd5b505af4158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a41565b610ef1612546565b610f0d5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16610f365760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f1c90d82400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90631c90d82490610f989060009086908690600401615634565b60006040518083038186803b158015610fb057600080fd5b505af4158015610fc4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b17905550505050565b6040517fbbf7039800000000000000000000000000000000000000000000000000000000815260609073__GettersImpl___________________________9063bbf7039890611035906000908690600401615550565b60006040518083038186803b15801561104d57600080fd5b505af4158015611061573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c9691908101906146dd565b6110af613ad6565b6040517fc61f66b400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c61f66b490611102906000908690600401615550565b60206040518083038186803b15801561111a57600080fd5b505af415801561112e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614868565b61115a612546565b6111765760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661119f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610f989060009086908690600401615619565b611209613ad6565b611211613ad6565b6040517fddc7c6f000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ddc7c6f090611264906000908790600401615550565b604080518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112b39190810190614886565b91509150915091565b6040517fa18862fc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a18862fc9061131190849086906004016155c8565b60206040518083038186803b15801561132957600080fd5b505af415801561133d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061480e565b6040517f6a0e643300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636a0e6433906113b69084908690600401615550565b60206040518083038186803b1580156113ce57600080fd5b505af41580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a7d565b6040517f35b5d1f600000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906335b5d1f69061131190849086906004016155c8565b611463613ad6565b6040517f063bf37300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063063bf373906111029060009086906004016155c8565b6114be612546565b6114da5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166115035760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3ea4188300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633ea4188390610f98906000908690869060040161565c565b61156d613ad6565b6040517ffef3d3cb00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063fef3d3cb906115c490600090889088908890600401615593565b60206040518083038186803b1580156115dc57600080fd5b505af41580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116149190810190614868565b90505b9392505050565b611626613ad6565b6040517f62f8e1b300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906362f8e1b390611102906000908690600401615550565b6040517fe99388d300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e99388d3906116cc9084906004016153bd565b60206040518083038186803b1580156116e457600080fd5b505af41580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a7d565b905090565b600061172b612546565b6117475760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166117705760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a906117d290600090879087906004016153e6565b60206040518083038186803b1580156117ea57600080fd5b505af41580156117fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118229190810190614a7d565b90506013805460ff60a01b1916600160a01b17905592915050565b611845612546565b6118615760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661188a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610df9906000908590600401615542565b6118f2612546565b61190e5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166119375760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610df9906000908590600401615542565b61199f613abf565b6040517fc641ccd100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c641ccd190610e9a9060009086906004016155c8565b6119fa612546565b611a165760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611a3f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610df9906000908590600401615542565b6040517f75bcaa4800000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906375bcaa4890611af6908490879087906004016153e6565b60206040518083038186803b158015611b0e57600080fd5b505af4158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906147d2565b90505b92915050565b611b57613abf565b6040517f787f772700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063787f772790611bac906000908790879060040161556b565b604080518083038186803b158015611bc357600080fd5b505af4158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906149e7565b6040517f2e19a6ea00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90632e19a6ea9061131190849086906004016153cb565b611c58612546565b611c745760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611c9d5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610f989060009086908690600401615634565b6040517f83fe9e1400000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906383fe9e1490611d529084906004016153bd565b60206040518083038186803b158015611d6a57600080fd5b505af4158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c91908101906147d2565b6040517f6861138d00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636861138d90611d529084906004016153bd565b611dfd613ad6565b6040517f4f820bd600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634f820bd690611e4e906000906004016153bd565b60206040518083038186803b158015611e6657600080fd5b505af4158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614868565b6040517fe647a68700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e647a687906113b69084908690600401615550565b611efb613ae9565b6040517fd23406b600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d23406b690611f4e9060009086906004016155c8565b60606040518083038186803b158015611f6657600080fd5b505af4158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906148b6565b6040517fd09657e100000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063d09657e190610c4690849086906004016155c8565b611ffb613ad6565b6040517f58105e3500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906358105e3590611102906000908690600401615550565b612056612546565b6120725760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661209b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0e7cd6f800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630e7cd6f890610df99060009085906004016155c8565b612103612546565b61211f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166121485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fa289756d00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063a289756d90610df9906000908590600401615527565b60608060608073__GettersImpl___________________________63edf9c1ec6000876040518363ffffffff1660e01b81526004016121e8929190615550565b60006040518083038186803b15801561220057600080fd5b505af4158015612214573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261225a9190810190614712565b93509350935093509193509193565b612271612546565b61228d5760405162461bcd60e51b8152600401610d6790615302565b60135460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6040517f5ebcae4c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90635ebcae4c9061234f9084906004016153bd565b60206040518083038186803b15801561236757600080fd5b505af415801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c919081019061480e565b6123a7613ad6565b6040517f136a1dc700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063136a1dc790611e4e906000906004016153bd565b805160005b818110156124ca57600083828151811061241357fe5b6020026020010151600001519050600084838151811061242f57fe5b60200260200101516020015190508061244957600261244c565b60015b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529081902060ff9390931690925590517f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327906124b89085908590615245565b60405180910390a250506001016123fd565b505050565b6124d7613ad6565b6040517f8828244f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638828244f906111029060009086906004016155c8565b60135473ffffffffffffffffffffffffffffffffffffffff1690565b60135460009073ffffffffffffffffffffffffffffffffffffffff1661256a6139fa565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000612590612546565b6125ac5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166125d55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e0906117d290600090879087906004016155e3565b6040517f92108b1e00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906392108b1e906113b690849086906004016153cb565b601354600160a01b900460ff166126b55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610f9890600090869086906004016154f3565b61271f613ad6565b6040517f2bdf1cf200000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90632bdf1cf2906111029060009086906004016155c8565b61277a612546565b6127965760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166127bf5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdf7ff36300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063df7ff36390610f989060009086908690600401615436565b612829612546565b6128455760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661286e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f6f48141000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636f48141090610f98906000908690869060040161565c565b6128d8613b09565b6128e0613ae9565b6128e8613ad6565b6128f0613ad6565b6040517fba25f9d600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ba25f9d6906129439060009089906004016155c8565b6102a06040518083038186803b15801561295c57600080fd5b505af4158015612970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225a919081019061498e565b61299c613ad6565b6040517fa16184f600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a16184f6906111029060009086906004016155c8565b6129f7613ad6565b6129ff613ad6565b6040517fd933f84400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d933f84490612a52906000908790600401615550565b604080518083038186803b158015612a6957600080fd5b505af4158015612a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aa19190810190614886565b9094909350915050565b612ab3612546565b612acf5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16612af85760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610df9906000908590600401615542565b6040517f4a451be200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634a451be2906116cc9084906004016153bd565b612bb3613ad6565b6040517f8339c50f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638339c50f90611e4e906000906004016153bd565b612c0c613abf565b6040517f634c50ce00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063634c50ce90612c61906000908790879060040161556b565b604080518083038186803b158015612c7857600080fd5b505af4158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a41565b612cb8613abf565b6040517f055369d700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063055369d790612d0b9060009086906004016155c8565b604080518083038186803b158015612d2257600080fd5b505af4158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a23565b612d62613ad6565b612d6a613abf565b5060408051808201825260008082526020820181905291517ffef3d3cb000000000000000000000000000000000000000000000000000000008152909173__GettersImpl___________________________9163fef3d3cb91612dd591859089908990600401615593565b60206040518083038186803b158015612ded57600080fd5b505af4158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e259190810190614868565b949350505050565b612e35613abf565b6040517fd2c9ee0000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d2c9ee0090610e9a9060009086906004016155c8565b612e90613abf565b6040517f485df94f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063485df94f90612d0b9060009086906004016155c8565b6040517f10b9711c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310b9711c906116cc9084906004016153bd565b612f3e613ae9565b6040517f4aaee58500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634aaee58590611f4e9060009086906004016155c8565b6040517f99c4c00900000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906399c4c00990612fe89084908790879060040161556b565b60206040518083038186803b15801561300057600080fd5b505af4158015613014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a7d565b6040517f4af71ebc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634af71ebc9061308d9084908690600401615550565b60206040518083038186803b1580156130a557600080fd5b505af41580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061482c565b6130e5613ad6565b6040517f041f229400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063041f2294906111029060009086906004016155c8565b613140613ad6565b6040517f22ef216100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906322ef216190611e4e906000906004016153bd565b613199612546565b6131b55760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166131de5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f5cb90a6a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90635cb90a6a90610df9906000908590600401615527565b613246612546565b6132625760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661328b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f6928084500000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636928084590610f989060009086908690600401615634565b6132f5612546565b6133115760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661333a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610f989060009086908690600401615619565b6133a4613b8a565b6040517f8b19f9e800000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638b19f9e8906133f5906000906004016153bd565b60e06040518083038186803b15801561340d57600080fd5b505af4158015613421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a05565b61344d613b09565b6040517f0b48557f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90630b48557f906134a09060009086906004016155c8565b6102006040518083038186803b1580156134b957600080fd5b505af41580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061496f565b6134f9612546565b6135155760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661353e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610f98906000908690869060040161540e565b6135a8613ad6565b6040517fdb32b3ca00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063db32b3ca906111029060009086906004016155c8565b613603612546565b61361f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166136485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbc54053f00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063bc54053f906136b8906000908d908d908d908d908d908d908d908d908d9060040161545e565b60006040518083038186803b1580156136d057600080fd5b505af41580156136e4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b1790555050505050505050505050565b61370e612546565b61372a5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166137535760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610f9890600090869086906004016155fe565b6040517f3808f21700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90633808f21790610c4690849086906004016153cb565b6040517f10f1b88c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310f1b88c9061234f9084906004016153bd565b613865612546565b6138815760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166138aa5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610f98906000908690869060040161540e565b613914612546565b6139305760405162461bcd60e51b8152600401610d6790615302565b613939816139fe565b50565b613944613ad6565b61394c613ad6565b6040517febec2e6c00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ebec2e6c90611264906000908790600401615550565b6139a7613ad6565b6040517fa335f47a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a335f47a906111029060009086906004016155c8565b3390565b73ffffffffffffffffffffffffffffffffffffffff8116613a315760405162461bcd60e51b8152600401610d67906152f2565b60135460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b604080518082019091526000808252602082015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516101608101825260008082526020820152908101613b29613abf565b8152602001613b36613ae9565b81526000602082018190526040820152606001613b51613ad6565b8152602001613b5e613ad6565b8152602001613b6b613abf565b8152602001613b78613abf565b8152602001613b85613ad6565b905290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b8035611b4981615892565b8051611b4981615892565b600082601f830112613bed57600080fd5b8151613c00613bfb826156d5565b6156ae565b91508181835260208401935060208101905083856020840282011115613c2557600080fd5b60005b83811015613c515781613c3b8882613bd1565b8452506020928301929190910190600101613c28565b5050505092915050565b600082601f830112613c6c57600080fd5b8135613c7a613bfb826156d5565b81815260209384019390925082018360005b83811015613c515781358601613ca28882613f8c565b8452506020928301929190910190600101613c8c565b600082601f830112613cc957600080fd5b8135613cd7613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613cfc57600080fd5b60005b83811015613c515781613d12888261418f565b84525060209092019160409190910190600101613cff565b600082601f830112613d3b57600080fd5b8135613d49613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613d6e57600080fd5b60005b83811015613c515781613d8488826142dc565b84525060209092019160409190910190600101613d71565b600082601f830112613dad57600080fd5b8151613dbb613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613de057600080fd5b60005b83811015613c515781613df68882614317565b84525060209092019160409190910190600101613de3565b600082601f830112613e1f57600080fd5b8151613e2d613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613e5257600080fd5b60005b83811015613c515781613e688882614427565b84525060209092019160409190910190600101613e55565b600082601f830112613e9157600080fd5b8151613e9f613bfb826156d5565b91508181835260208401935060208101905083856020840282011115613ec457600080fd5b60005b83811015613c515781613eda8882614483565b8452506020928301929190910190600101613ec7565b8035611b49816158a6565b8051611b49816158a6565b600082601f830112613f1757600080fd5b8135613f25613bfb826156f6565b91508082526020830160208301858383011115613f4157600080fd5b613f4c838284615814565b50505092915050565b8035611b49816158af565b8051611b49816158af565b8035611b49816158b8565b8035611b49816158c5565b8051611b49816158d2565b60006101608284031215613f9f57600080fd5b613faa6101006156ae565b90506000613fb88484613f6b565b8252506020613fc984848301614478565b6020830152506040613fdd84828501614068565b60408301525060c0613ff184828501614478565b60608301525060e061400584828501614478565b60808301525061010061401a84828501613bc6565b60a08301525061012061402f84828501614478565b60c08301525061014082013567ffffffffffffffff81111561405057600080fd5b61405c84828501613f06565b60e08301525092915050565b60006080828403121561407a57600080fd5b61408460806156ae565b905060006140928484613ef0565b82525060206140a384848301613f76565b60208301525060406140b784828501613f76565b60408301525060606140cb84828501614478565b60608301525092915050565b6000602082840312156140e957600080fd5b6140f360206156ae565b905060006141018484614483565b82525092915050565b60006020828403121561411c57600080fd5b61412660206156ae565b905060006141018484614478565b60006060828403121561414657600080fd5b61415060606156ae565b9050600061415e8484614462565b825250602061416f84848301614462565b60208301525060406141838482850161448e565b60408301525092915050565b6000604082840312156141a157600080fd5b6141ab60406156ae565b905060006141b98484613bc6565b82525060206141ca84848301614478565b60208301525092915050565b600061020082840312156141e957600080fd5b6141f46101606156ae565b905060006142028484613bd1565b825250602061421384848301613efb565b6020830152506040614227848285016143fd565b604083015250608061423b84828501614134565b60608301525060e061424f84828501613f60565b60808301525061010061426484828501613f60565b60a083015250610120614279848285016140d7565b60c08301525061014061428e848285016140d7565b60e0830152506101606142a384828501614427565b610100830152506101a06142b984828501614427565b610120830152506101e06142cf848285016140d7565b6101408301525092915050565b6000604082840312156142ee57600080fd5b6142f860406156ae565b905060006143068484613bc6565b82525060206141ca84848301613ef0565b60006040828403121561432957600080fd5b61433360406156ae565b905060006143418484613efb565b82525060206141ca8484830161446d565b600060e0828403121561436457600080fd5b61436e60e06156ae565b9050600061437c8484614499565b825250602061438d84848301614499565b60208301525060406143a184828501614499565b60408301525060606143b584828501614499565b60608301525060806143c984828501614499565b60808301525060a06143dd848285016144a4565b60a08301525060c06143f18482850161446d565b60c08301525092915050565b60006040828403121561440f57600080fd5b61441960406156ae565b90506000614341848461446d565b60006040828403121561443957600080fd5b61444360406156ae565b905060006144518484613efb565b82525060206141ca84848301614483565b8051611b49816158df565b8051611b49816158e8565b8035611b49816158f1565b8051611b49816158f1565b8051611b49816158fa565b8051611b4981615903565b8051611b498161590c565b6000602082840312156144c157600080fd5b6000612e258484613bc6565b6000602082840312156144df57600080fd5b6000612e258484613bd1565b600080604083850312156144fe57600080fd5b600061450a8585613bc6565b925050602061451b85828601613bc6565b9150509250929050565b6000806040838503121561453857600080fd5b60006145448585613bc6565b925050602061451b85828601613ef0565b6000806040838503121561456857600080fd5b60006145748585613bc6565b925050602061451b85828601613f55565b60008060008060008060008060006101208a8c0312156145a457600080fd5b60006145b08c8c613bc6565b99505060206145c18c828d01613f55565b98505060406145d28c828d01613f55565b97505060606145e38c828d0161410a565b96505060806145f48c828d0161410a565b95505060a06146058c828d01614478565b94505060c06146168c828d01614478565b93505060e06146278c828d0161410a565b9250506101006146398c828d01613ef0565b9150509295985092959850929598565b6000806040838503121561465c57600080fd5b823567ffffffffffffffff81111561467357600080fd5b61467f85828601613cb8565b925050602083013567ffffffffffffffff81111561469c57600080fd5b61451b85828601613c5b565b6000602082840312156146ba57600080fd5b813567ffffffffffffffff8111156146d157600080fd5b612e2584828501613d2a565b6000602082840312156146ef57600080fd5b815167ffffffffffffffff81111561470657600080fd5b612e2584828501613e80565b6000806000806080858703121561472857600080fd5b845167ffffffffffffffff81111561473f57600080fd5b61474b87828801613e80565b945050602085015167ffffffffffffffff81111561476857600080fd5b61477487828801613bdc565b935050604085015167ffffffffffffffff81111561479157600080fd5b61479d87828801613d9c565b925050606085015167ffffffffffffffff8111156147ba57600080fd5b6147c687828801613e0e565b91505092959194509250565b6000602082840312156147e457600080fd5b6000612e258484613efb565b60006020828403121561480257600080fd5b6000612e258484613f55565b60006020828403121561482057600080fd5b6000612e258484613f60565b60006020828403121561483e57600080fd5b6000612e258484613f81565b60006020828403121561485c57600080fd5b6000612e25848461410a565b60006020828403121561487a57600080fd5b6000612e2584846140d7565b6000806040838503121561489957600080fd5b60006148a585856140d7565b925050602061451b858286016140d7565b6000606082840312156148c857600080fd5b6000612e258484614134565b6000604082840312156148e657600080fd5b6000612e25848461418f565b6000806060838503121561490557600080fd5b6000614911858561418f565b925050604061451b85828601614478565b60008060006080848603121561493757600080fd5b6000614943868661418f565b935050604061495486828701614478565b925050606061496586828701614478565b9150509250925092565b6000610200828403121561498257600080fd5b6000612e2584846141d6565b6000806000806102a085870312156149a557600080fd5b60006149b187876141d6565b9450506102006149c387828801614134565b9350506102606149d5878288016140d7565b9250506102806147c6878288016140d7565b6000604082840312156149f957600080fd5b6000612e258484614317565b600060e08284031215614a1757600080fd5b6000612e258484614352565b600060408284031215614a3557600080fd5b6000612e2584846143fd565b600060408284031215614a5357600080fd5b6000612e258484614427565b600060208284031215614a7157600080fd5b6000612e258484614478565b600060208284031215614a8f57600080fd5b6000612e258484614483565b60008060408385031215614aae57600080fd5b600061450a8585614478565b60008060408385031215614acd57600080fd5b60006145448585614478565b60008060408385031215614aec57600080fd5b60006145748585614478565b60008060408385031215614b0b57600080fd5b6000614b178585614478565b925050602061451b8582860161410a565b60008060408385031215614b3b57600080fd5b6000614b478585614478565b925050602061451b85828601614478565b6000614b648383614bb0565b505060200190565b6000611b468383614ef4565b6000614b848383615037565b505060400190565b6000614b848383615134565b6000614b8483836151f0565b6000614b648383615213565b614bb98161574f565b82525050565b6000614bca82615742565b614bd48185615746565b9350614bdf8361573c565b8060005b83811015614c0d578151614bf78882614b58565b9750614c028361573c565b925050600101614be3565b509495945050505050565b6000614c2382615742565b614c2d8185615746565b935083602082028501614c3f8561573c565b8060005b85811015614c795784840389528151614c5c8582614b6c565b9450614c678361573c565b60209a909a0199925050600101614c43565b5091979650505050505050565b6000614c9182615742565b614c9b8185615746565b9350614ca68361573c565b8060005b83811015614c0d578151614cbe8882614b78565b9750614cc98361573c565b925050600101614caa565b6000614cdf82615742565b614ce98185615746565b9350614cf48361573c565b8060005b83811015614c0d578151614d0c8882614b8c565b9750614d178361573c565b925050600101614cf8565b6000614d2d82615742565b614d378185615746565b9350614d428361573c565b8060005b83811015614c0d578151614d5a8882614b98565b9750614d658361573c565b925050600101614d46565b6000614d7b82615742565b614d858185615746565b9350614d908361573c565b8060005b83811015614c0d578151614da88882614ba4565b9750614db38361573c565b925050600101614d94565b614bb98161575a565b6000614dd282615742565b614ddc8185615746565b9350614dec818560208601615820565b614df58161584c565b9093019392505050565b614bb98161575f565b614bb9816157f3565b614bb9816157fe565b614bb981615809565b6000614e30602683615746565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614e8f602083615746565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000614ec8601f83615746565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190614f098582614e08565b506020830151614f1c6020860182615213565b506040830151614f2f6040860182614f9f565b506060830151614f4260c0860182615213565b506080830151614f5560e0860182615213565b5060a0830151614f69610100860182614bb0565b5060c0830151614f7d610120860182615213565b5060e0830151848203610140860152614f968282614dc7565b95945050505050565b80516080830190614fb08482614dbe565b506020820151614fc36020850182614e11565b506040820151614fd66040850182614e11565b506060820151614fe96060850182615213565b50505050565b80516020830190614fe98482615213565b805160608301906150118482615201565b5060208201516150246020850182615201565b506040820151614fe9604085018261521c565b805160408301906150488482614bb0565b506020820151614fe96020850182615213565b805161020083019061506d8482614bb0565b5060208201516150806020850182614dbe565b50604082015161509360408501826151df565b5060608201516150a66080850182615000565b5060808201516150b960e0850182614dff565b5060a08201516150cd610100850182614dff565b5060c08201516150e1610120850182614fef565b5060e08201516150f5610140850182614fef565b5061010082015161510a6101608501826151f0565b5061012082015161511f6101a08501826151f0565b50610140820151614fe96101e0850182614fef565b805160408301906151458482614dbe565b506020820151614fe9602085018261520a565b805160e08301906151698482615225565b50602082015161517c6020850182615225565b50604082015161518f6040850182615225565b5060608201516151a26060850182615225565b5060808201516151b56080850182615225565b5060a08201516151c860a085018261522e565b5060c0820151614fe960c085018261520a565b9052565b80516040830190615145848261520a565b805160408301906150488482614dbe565b614bb981615788565b614bb98161579b565b614bb9816157c9565b614bb9816157cc565b614bb9816157d5565b614bb9816157e2565b60208101611b498284614bb0565b604081016152538285614bb0565b6116176020830184614dbe565b60208082528101611b468184614d70565b608080825281016152828187614d70565b905081810360208301526152968186614bbf565b905081810360408301526152aa8185614cd4565b905081810360608301526152be8184614d22565b9695505050505050565b60208101611b498284614dbe565b60208101611b498284614dff565b60208101611b498284614e1a565b60208082528101610c9681614e23565b60208082528101610c9681614e82565b60208082528101610c9681614ebb565b60208101611b498284614fef565b6040810161533e8285614fef565b6116176020830184614fef565b60608101611b498284615000565b6102008101611b49828461505b565b6102a08101615377828761505b565b615385610200830186615000565b615393610260830185614fef565b614f96610280830184614fef565b60408101611b498284615134565b60e08101611b498284615158565b60208101611b4982846151db565b604081016153d982856151db565b6116176020830184614bb0565b606081016153f482866151db565b6154016020830185614bb0565b612e256040830184614bb0565b6060810161541c82866151db565b6154296020830185614bb0565b612e256040830184614dbe565b6060810161544482866151db565b6154516020830185614bb0565b612e256040830184614dff565b610140810161546d828d6151db565b61547a602083018c614bb0565b615487604083018b614dff565b615494606083018a614dff565b6154a16080830189614fef565b6154ae60a0830188614fef565b6154bb60c0830187615213565b6154c860e0830186615213565b6154d6610100830185614fef565b6154e4610120830184614dbe565b9b9a5050505050505050505050565b6060810161550182866151db565b81810360208301526155138185614c86565b90508181036040830152614f968184614c18565b6040810161553582856151db565b6116176020830184614dff565b6040810161533e82856151db565b6060810161555e82856151db565b6116176020830184615037565b6080810161557982866151db565b6155866020830185615037565b612e256060830184615213565b60a081016155a182876151db565b6155ae6020830186615037565b6155bb6060830185615213565b614f966080830184615213565b604081016155d682856151db565b6116176020830184615213565b606081016155f182866151db565b6154016020830185615213565b6060810161560c82866151db565b6154296020830185615213565b6060810161562782866151db565b6154516020830185615213565b6060810161564282866151db565b61564f6020830185615213565b612e256040830184614fef565b6060810161566a82866151db565b6156776020830185615213565b612e256040830184615213565b60408101611b4982846151df565b60408101611b4982846151f0565b60208101611b498284615213565b60405181810167ffffffffffffffff811182821017156156cd57600080fd5b604052919050565b600067ffffffffffffffff8211156156ec57600080fd5b5060209081020190565b600067ffffffffffffffff82111561570d57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610c96826157b0565b151590565b6000610c968261574f565b80610c9981615874565b80610c998161587e565b80610c9981615888565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610c968261576a565b6000610c9682615774565b6000610c968261577e565b82818337506000910152565b60005b8381101561583b578181015183820152602001615823565b83811115614fe95750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061393957fe5b6002811061393957fe5b6003811061393957fe5b61589b8161574f565b811461393957600080fd5b61589b8161575a565b61589b8161575f565b6009811061393957600080fd5b6002811061393957600080fd5b6003811061393957600080fd5b61589b81615788565b61589b8161579b565b61589b816157c9565b61589b816157cc565b61589b816157d5565b61589b816157e256fea365627a7a723158204d7c070f1fc79316c1f4230f26e287769ce104578c70b42d01aa409690bedc196c6578706572696d656e74616cf564736f6c634300051000408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106105ac5760003560e01c80638da5cb5b116102ed578063deec053d11610191578063ec6e3987116100ee578063f2385be3116100a2578063f94160521161007c578063f941605214610bcb578063fd04b60614610bde578063fd47eda614610956576105ac565b8063f2385be314610b9d578063f2901ae214610ba5578063f2fde38b14610bb8576105ac565b8063ed4d6f5c116100d3578063ed4d6f5c14610b64578063ef6957d014610b77578063f1061ba814610b8a576105ac565b8063ec6e398714610b3e578063ecef481f14610b51576105ac565b8063e56659fc11610145578063e8e72f751161012a578063e8e72f7514610af6578063eb1c6e6b14610b09578063eb44fdd314610b1e576105ac565b8063e56659fc14610ad0578063e5e23ef214610ae3576105ac565b8063e51bfcb411610176578063e51bfcb414610a95578063e52828c714610ab5578063e552022814610ac8576105ac565b8063deec053d14610a6f578063e0e48d1914610a82576105ac565b8063ba77ea671161024a578063cb04a34c116101fe578063d93c9591116101d8578063d93c959114610796578063dc6d784614610a54578063de8be8e714610a67576105ac565b8063cb04a34c14610a0e578063d24c48bc14610a2e578063d5ecf7c514610a41576105ac565b8063c0e044fc1161022f578063c0e044fc146109eb578063c1460942146109f3578063c190c2ec146109fb576105ac565b8063ba77ea67146109c5578063c0bb72b7146109d8576105ac565b8063ac7bb20b116102a1578063b306e4f811610286578063b306e4f81461097c578063b548b8921461098f578063b64e31ea146109b2576105ac565b8063ac7bb20b14610956578063b0dc49f814610969576105ac565b80638f6bc659116102d25780638f6bc6591461091d5780638fae3be114610930578063a67a6a4514610943576105ac565b80638da5cb5b1461090d5780638f32d59b14610915576105ac565b8063384027621161045457806356ea84b2116103b15780636a8194e7116103655780637e9eaf411161033f5780637e9eaf41146108df57806385b53fc8146108e75780638928378e146108fa576105ac565b80636a8194e7146108ac578063715018a6146108cf578063770e43e0146108d7576105ac565b80635d3c0ce8116103965780635d3c0ce81461087357806363ae56b31461088657806366411ff414610899576105ac565b806356ea84b2146108405780635ac7d17c14610860576105ac565b80634be87414116104085780634e634067116103ed5780634e6340671461081d5780634f3c1542146108255780634f4d66f61461082d576105ac565b80634be87414146108025780634db90d5214610815576105ac565b80633a031bf0116104395780633a031bf0146107bc57806347d1b53c146107cf57806348e648ee146107ef576105ac565b80633840276214610796578063387a498a146107a9576105ac565b806317b505251161050d57806320945e26116104c15780632e822af31161049b5780632e822af3146107705780633063bce2146107835780633305e5bb14610709576105ac565b806320945e2614610742578063295c39a5146107555780632a5608451461075d576105ac565b80631a7777bb116104f25780631a7777bb146107095780631ae4ec521461071c5780631eb120761461072f576105ac565b806317b50525146106d6578063197f0f05146106f6576105ac565b80630f47fab011610564578063121fb72f11610549578063121fb72f14610682578063124f914c1461069557806313368364146106b6576105ac565b80630f47fab014610642578063105de10c14610662576105ac565b80630781d820116105955780630781d820146105fa57806307af15681461060f5780630b28fa3e1461062f576105ac565b8063052f72d7146105b1578063062bd3e9146105da575b600080fd5b6105c46105bf3660046144af565b610bf1565b6040516105d191906152c8565b60405180910390f35b6105ed6105e8366004614a5f565b610c9e565b6040516105d19190615237565b61060d610608366004614a5f565b610d43565b005b61062261061d366004614a5f565b610e3f565b6040516105d19190615692565b61060d61063d366004614af8565b610ee9565b6106556106503660046148d4565b610fdf565b6040516105d19190615260565b6106756106703660046148d4565b6110a7565b6040516105d19190615322565b61060d610690366004614ad9565b611152565b6106a86106a33660046148d4565b611201565b6040516105d1929190615330565b6106c96106c4366004614a5f565b6112bc565b6040516105d191906152d6565b6106e96106e43660046148d4565b611361565b6040516105d191906156a0565b6106c9610704366004614a5f565b611406565b610675610717366004614a5f565b61145b565b61060d61072a366004614b28565b6114b6565b61067561073d366004614922565b611565565b6106756107503660046148d4565b61161e565b6106e9611679565b6106e961076b3660046144eb565b611721565b61060d61077e36600461484a565b61183d565b61060d61079136600461484a565b6118ea565b6106226107a4366004614a5f565b611997565b61060d6107b736600461484a565b6119f2565b6105c46107ca3660046144eb565b611a9f565b6107e26107dd3660046148f2565b611b4f565b6040516105d191906153a1565b6106c96107fd3660046144af565b611bfb565b61060d610810366004614af8565b611c50565b6105c4611cff565b6105c4611da2565b610675611df5565b6106e961083b3660046148d4565b611e9e565b61085361084e366004614a5f565b611ef3565b6040516105d1919061534b565b6105c461086e366004614a5f565b611f9e565b6106756108813660046148d4565b611ff3565b61060d610894366004614a5f565b61204e565b61060d6108a73660046147f0565b6120fb565b6108bf6108ba3660046148d4565b6121a8565b6040516105d19493929190615271565b61060d612269565b6106c96122fc565b61067561239f565b61060d6108f53660046146a8565b6123f8565b610675610908366004614a5f565b6124cf565b6105ed61252a565b6105c4612546565b6106e961092b366004614a9b565b612586565b6106e961093e3660046144af565b612637565b61060d610951366004614649565b61268c565b610675610964366004614a5f565b612717565b61060d610977366004614555565b612772565b61060d61098a366004614b28565b612821565b6109a261099d366004614a5f565b6128d0565b6040516105d19493929190615368565b6106756109c0366004614a5f565b612994565b6106a86109d33660046148d4565b6129ef565b61060d6109e636600461484a565b612aab565b6106e9612b58565b610675612bab565b610622610a093660046148f2565b612c04565b610a21610a1c366004614a5f565b612cb0565b6040516105d19190615684565b610675610a3c366004614b28565b612d5a565b610622610a4f366004614a5f565b612e2d565b610a21610a62366004614a5f565b612e88565b6106e9612ee3565b610853610a7d366004614a5f565b612f36565b6106e9610a903660046148f2565b612f91565b610aa8610aa33660046148d4565b613038565b6040516105d191906152e4565b610675610ac3366004614a5f565b6130dd565b610675613138565b61060d610ade3660046147f0565b613191565b61060d610af1366004614af8565b61323e565b61060d610b04366004614ad9565b6132ed565b610b1161339c565b6040516105d191906153af565b610b31610b2c366004614a5f565b613445565b6040516105d19190615359565b61060d610b4c366004614525565b6134f1565b610675610b5f366004614a5f565b6135a0565b61060d610b72366004614585565b6135fb565b61060d610b85366004614aba565b613706565b6105c4610b983660046144af565b6137b5565b6106c961380a565b61060d610bb3366004614525565b61385d565b61060d610bc63660046144af565b61390c565b6106a8610bd93660046148d4565b61393c565b610675610bec366004614a5f565b61399f565b6040517f288afc6200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063288afc6290610c4690849086906004016153cb565b60206040518083038186803b158015610c5e57600080fd5b505af4158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906147d2565b90505b919050565b6040517fa2169a3a00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a2169a3a90610cf390849086906004016155c8565b60206040518083038186803b158015610d0b57600080fd5b505af4158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906144cd565b610d4b612546565b610d705760405162461bcd60e51b8152600401610d6790615302565b60405180910390fd5b601354600160a01b900460ff16610d995760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f70b6151c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906370b6151c90610df99060009085906004016155c8565b60006040518083038186803b158015610e1157600080fd5b505af4158015610e25573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b179055505050565b610e47613abf565b6040517f7462482a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90637462482a90610e9a9060009086906004016155c8565b604080518083038186803b158015610eb157600080fd5b505af4158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a41565b610ef1612546565b610f0d5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16610f365760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f1c90d82400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90631c90d82490610f989060009086908690600401615634565b60006040518083038186803b158015610fb057600080fd5b505af4158015610fc4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b17905550505050565b6040517fbbf7039800000000000000000000000000000000000000000000000000000000815260609073__GettersImpl___________________________9063bbf7039890611035906000908690600401615550565b60006040518083038186803b15801561104d57600080fd5b505af4158015611061573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c9691908101906146dd565b6110af613ad6565b6040517fc61f66b400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c61f66b490611102906000908690600401615550565b60206040518083038186803b15801561111a57600080fd5b505af415801561112e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614868565b61115a612546565b6111765760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661119f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610f989060009086908690600401615619565b611209613ad6565b611211613ad6565b6040517fddc7c6f000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ddc7c6f090611264906000908790600401615550565b604080518083038186803b15801561127b57600080fd5b505af415801561128f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112b39190810190614886565b91509150915091565b6040517fa18862fc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a18862fc9061131190849086906004016155c8565b60206040518083038186803b15801561132957600080fd5b505af415801561133d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061480e565b6040517f6a0e643300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636a0e6433906113b69084908690600401615550565b60206040518083038186803b1580156113ce57600080fd5b505af41580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a7d565b6040517f35b5d1f600000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906335b5d1f69061131190849086906004016155c8565b611463613ad6565b6040517f063bf37300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063063bf373906111029060009086906004016155c8565b6114be612546565b6114da5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166115035760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3ea4188300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633ea4188390610f98906000908690869060040161565c565b61156d613ad6565b6040517ffef3d3cb00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063fef3d3cb906115c490600090889088908890600401615593565b60206040518083038186803b1580156115dc57600080fd5b505af41580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116149190810190614868565b90505b9392505050565b611626613ad6565b6040517f62f8e1b300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906362f8e1b390611102906000908690600401615550565b6040517fe99388d300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e99388d3906116cc9084906004016153bd565b60206040518083038186803b1580156116e457600080fd5b505af41580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a7d565b905090565b600061172b612546565b6117475760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166117705760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a906117d290600090879087906004016153e6565b60206040518083038186803b1580156117ea57600080fd5b505af41580156117fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118229190810190614a7d565b90506013805460ff60a01b1916600160a01b17905592915050565b611845612546565b6118615760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661188a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610df9906000908590600401615542565b6118f2612546565b61190e5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166119375760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610df9906000908590600401615542565b61199f613abf565b6040517fc641ccd100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c641ccd190610e9a9060009086906004016155c8565b6119fa612546565b611a165760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611a3f5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610df9906000908590600401615542565b6040517f75bcaa4800000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906375bcaa4890611af6908490879087906004016153e6565b60206040518083038186803b158015611b0e57600080fd5b505af4158015611b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906147d2565b90505b92915050565b611b57613abf565b6040517f787f772700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063787f772790611bac906000908790879060040161556b565b604080518083038186803b158015611bc357600080fd5b505af4158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b4691908101906149e7565b6040517f2e19a6ea00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90632e19a6ea9061131190849086906004016153cb565b611c58612546565b611c745760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16611c9d5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610f989060009086908690600401615634565b6040517f83fe9e1400000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906383fe9e1490611d529084906004016153bd565b60206040518083038186803b158015611d6a57600080fd5b505af4158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c91908101906147d2565b6040517f6861138d00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636861138d90611d529084906004016153bd565b611dfd613ad6565b6040517f4f820bd600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634f820bd690611e4e906000906004016153bd565b60206040518083038186803b158015611e6657600080fd5b505af4158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614868565b6040517fe647a68700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e647a687906113b69084908690600401615550565b611efb613ae9565b6040517fd23406b600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d23406b690611f4e9060009086906004016155c8565b60606040518083038186803b158015611f6657600080fd5b505af4158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9691908101906148b6565b6040517fd09657e100000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063d09657e190610c4690849086906004016155c8565b611ffb613ad6565b6040517f58105e3500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906358105e3590611102906000908690600401615550565b612056612546565b6120725760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661209b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f0e7cd6f800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630e7cd6f890610df99060009085906004016155c8565b612103612546565b61211f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166121485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fa289756d00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063a289756d90610df9906000908590600401615527565b60608060608073__GettersImpl___________________________63edf9c1ec6000876040518363ffffffff1660e01b81526004016121e8929190615550565b60006040518083038186803b15801561220057600080fd5b505af4158015612214573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261225a9190810190614712565b93509350935093509193509193565b612271612546565b61228d5760405162461bcd60e51b8152600401610d6790615302565b60135460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6040517f5ebcae4c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90635ebcae4c9061234f9084906004016153bd565b60206040518083038186803b15801561236757600080fd5b505af415801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c919081019061480e565b6123a7613ad6565b6040517f136a1dc700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063136a1dc790611e4e906000906004016153bd565b805160005b818110156124ca57600083828151811061241357fe5b6020026020010151600001519050600084838151811061242f57fe5b60200260200101516020015190508061244957600261244c565b60015b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529081902060ff9390931690925590517f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327906124b89085908590615245565b60405180910390a250506001016123fd565b505050565b6124d7613ad6565b6040517f8828244f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638828244f906111029060009086906004016155c8565b60135473ffffffffffffffffffffffffffffffffffffffff1690565b60135460009073ffffffffffffffffffffffffffffffffffffffff1661256a6139fa565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000612590612546565b6125ac5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166125d55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e0906117d290600090879087906004016155e3565b6040517f92108b1e00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906392108b1e906113b690849086906004016153cb565b601354600160a01b900460ff166126b55760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610f9890600090869086906004016154f3565b61271f613ad6565b6040517f2bdf1cf200000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90632bdf1cf2906111029060009086906004016155c8565b61277a612546565b6127965760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166127bf5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fdf7ff36300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063df7ff36390610f989060009086908690600401615436565b612829612546565b6128455760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661286e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f6f48141000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636f48141090610f98906000908690869060040161565c565b6128d8613b09565b6128e0613ae9565b6128e8613ad6565b6128f0613ad6565b6040517fba25f9d600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ba25f9d6906129439060009089906004016155c8565b6102a06040518083038186803b15801561295c57600080fd5b505af4158015612970573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061225a919081019061498e565b61299c613ad6565b6040517fa16184f600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a16184f6906111029060009086906004016155c8565b6129f7613ad6565b6129ff613ad6565b6040517fd933f84400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d933f84490612a52906000908790600401615550565b604080518083038186803b158015612a6957600080fd5b505af4158015612a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612aa19190810190614886565b9094909350915050565b612ab3612546565b612acf5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff16612af85760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610df9906000908590600401615542565b6040517f4a451be200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634a451be2906116cc9084906004016153bd565b612bb3613ad6565b6040517f8339c50f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638339c50f90611e4e906000906004016153bd565b612c0c613abf565b6040517f634c50ce00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063634c50ce90612c61906000908790879060040161556b565b604080518083038186803b158015612c7857600080fd5b505af4158015612c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a41565b612cb8613abf565b6040517f055369d700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063055369d790612d0b9060009086906004016155c8565b604080518083038186803b158015612d2257600080fd5b505af4158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c969190810190614a23565b612d62613ad6565b612d6a613abf565b5060408051808201825260008082526020820181905291517ffef3d3cb000000000000000000000000000000000000000000000000000000008152909173__GettersImpl___________________________9163fef3d3cb91612dd591859089908990600401615593565b60206040518083038186803b158015612ded57600080fd5b505af4158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e259190810190614868565b949350505050565b612e35613abf565b6040517fd2c9ee0000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d2c9ee0090610e9a9060009086906004016155c8565b612e90613abf565b6040517f485df94f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063485df94f90612d0b9060009086906004016155c8565b6040517f10b9711c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310b9711c906116cc9084906004016153bd565b612f3e613ae9565b6040517f4aaee58500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634aaee58590611f4e9060009086906004016155c8565b6040517f99c4c00900000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906399c4c00990612fe89084908790879060040161556b565b60206040518083038186803b15801561300057600080fd5b505af4158015613014573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b469190810190614a7d565b6040517f4af71ebc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634af71ebc9061308d9084908690600401615550565b60206040518083038186803b1580156130a557600080fd5b505af41580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061482c565b6130e5613ad6565b6040517f041f229400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063041f2294906111029060009086906004016155c8565b613140613ad6565b6040517f22ef216100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906322ef216190611e4e906000906004016153bd565b613199612546565b6131b55760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166131de5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f5cb90a6a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90635cb90a6a90610df9906000908590600401615527565b613246612546565b6132625760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661328b5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f6928084500000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636928084590610f989060009086908690600401615634565b6132f5612546565b6133115760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661333a5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610f989060009086908690600401615619565b6133a4613b8a565b6040517f8b19f9e800000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638b19f9e8906133f5906000906004016153bd565b60e06040518083038186803b15801561340d57600080fd5b505af4158015613421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061171c9190810190614a05565b61344d613b09565b6040517f0b48557f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90630b48557f906134a09060009086906004016155c8565b6102006040518083038186803b1580156134b957600080fd5b505af41580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c96919081019061496f565b6134f9612546565b6135155760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff1661353e5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610f98906000908690869060040161540e565b6135a8613ad6565b6040517fdb32b3ca00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063db32b3ca906111029060009086906004016155c8565b613603612546565b61361f5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166136485760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fbc54053f00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063bc54053f906136b8906000908d908d908d908d908d908d908d908d908d9060040161545e565b60006040518083038186803b1580156136d057600080fd5b505af41580156136e4573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b1790555050505050505050505050565b61370e612546565b61372a5760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166137535760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610f9890600090869086906004016155fe565b6040517f3808f21700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90633808f21790610c4690849086906004016153cb565b6040517f10f1b88c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310f1b88c9061234f9084906004016153bd565b613865612546565b6138815760405162461bcd60e51b8152600401610d6790615302565b601354600160a01b900460ff166138aa5760405162461bcd60e51b8152600401610d6790615312565b6013805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610f98906000908690869060040161540e565b613914612546565b6139305760405162461bcd60e51b8152600401610d6790615302565b613939816139fe565b50565b613944613ad6565b61394c613ad6565b6040517febec2e6c00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ebec2e6c90611264906000908790600401615550565b6139a7613ad6565b6040517fa335f47a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a335f47a906111029060009086906004016155c8565b3390565b73ffffffffffffffffffffffffffffffffffffffff8116613a315760405162461bcd60e51b8152600401610d67906152f2565b60135460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b604080518082019091526000808252602082015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516101608101825260008082526020820152908101613b29613abf565b8152602001613b36613ae9565b81526000602082018190526040820152606001613b51613ad6565b8152602001613b5e613ad6565b8152602001613b6b613abf565b8152602001613b78613abf565b8152602001613b85613ad6565b905290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b8035611b4981615892565b8051611b4981615892565b600082601f830112613bed57600080fd5b8151613c00613bfb826156d5565b6156ae565b91508181835260208401935060208101905083856020840282011115613c2557600080fd5b60005b83811015613c515781613c3b8882613bd1565b8452506020928301929190910190600101613c28565b5050505092915050565b600082601f830112613c6c57600080fd5b8135613c7a613bfb826156d5565b81815260209384019390925082018360005b83811015613c515781358601613ca28882613f8c565b8452506020928301929190910190600101613c8c565b600082601f830112613cc957600080fd5b8135613cd7613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613cfc57600080fd5b60005b83811015613c515781613d12888261418f565b84525060209092019160409190910190600101613cff565b600082601f830112613d3b57600080fd5b8135613d49613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613d6e57600080fd5b60005b83811015613c515781613d8488826142dc565b84525060209092019160409190910190600101613d71565b600082601f830112613dad57600080fd5b8151613dbb613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613de057600080fd5b60005b83811015613c515781613df68882614317565b84525060209092019160409190910190600101613de3565b600082601f830112613e1f57600080fd5b8151613e2d613bfb826156d5565b91508181835260208401935060208101905083856040840282011115613e5257600080fd5b60005b83811015613c515781613e688882614427565b84525060209092019160409190910190600101613e55565b600082601f830112613e9157600080fd5b8151613e9f613bfb826156d5565b91508181835260208401935060208101905083856020840282011115613ec457600080fd5b60005b83811015613c515781613eda8882614483565b8452506020928301929190910190600101613ec7565b8035611b49816158a6565b8051611b49816158a6565b600082601f830112613f1757600080fd5b8135613f25613bfb826156f6565b91508082526020830160208301858383011115613f4157600080fd5b613f4c838284615814565b50505092915050565b8035611b49816158af565b8051611b49816158af565b8035611b49816158b8565b8035611b49816158c5565b8051611b49816158d2565b60006101608284031215613f9f57600080fd5b613faa6101006156ae565b90506000613fb88484613f6b565b8252506020613fc984848301614478565b6020830152506040613fdd84828501614068565b60408301525060c0613ff184828501614478565b60608301525060e061400584828501614478565b60808301525061010061401a84828501613bc6565b60a08301525061012061402f84828501614478565b60c08301525061014082013567ffffffffffffffff81111561405057600080fd5b61405c84828501613f06565b60e08301525092915050565b60006080828403121561407a57600080fd5b61408460806156ae565b905060006140928484613ef0565b82525060206140a384848301613f76565b60208301525060406140b784828501613f76565b60408301525060606140cb84828501614478565b60608301525092915050565b6000602082840312156140e957600080fd5b6140f360206156ae565b905060006141018484614483565b82525092915050565b60006020828403121561411c57600080fd5b61412660206156ae565b905060006141018484614478565b60006060828403121561414657600080fd5b61415060606156ae565b9050600061415e8484614462565b825250602061416f84848301614462565b60208301525060406141838482850161448e565b60408301525092915050565b6000604082840312156141a157600080fd5b6141ab60406156ae565b905060006141b98484613bc6565b82525060206141ca84848301614478565b60208301525092915050565b600061020082840312156141e957600080fd5b6141f46101606156ae565b905060006142028484613bd1565b825250602061421384848301613efb565b6020830152506040614227848285016143fd565b604083015250608061423b84828501614134565b60608301525060e061424f84828501613f60565b60808301525061010061426484828501613f60565b60a083015250610120614279848285016140d7565b60c08301525061014061428e848285016140d7565b60e0830152506101606142a384828501614427565b610100830152506101a06142b984828501614427565b610120830152506101e06142cf848285016140d7565b6101408301525092915050565b6000604082840312156142ee57600080fd5b6142f860406156ae565b905060006143068484613bc6565b82525060206141ca84848301613ef0565b60006040828403121561432957600080fd5b61433360406156ae565b905060006143418484613efb565b82525060206141ca8484830161446d565b600060e0828403121561436457600080fd5b61436e60e06156ae565b9050600061437c8484614499565b825250602061438d84848301614499565b60208301525060406143a184828501614499565b60408301525060606143b584828501614499565b60608301525060806143c984828501614499565b60808301525060a06143dd848285016144a4565b60a08301525060c06143f18482850161446d565b60c08301525092915050565b60006040828403121561440f57600080fd5b61441960406156ae565b90506000614341848461446d565b60006040828403121561443957600080fd5b61444360406156ae565b905060006144518484613efb565b82525060206141ca84848301614483565b8051611b49816158df565b8051611b49816158e8565b8035611b49816158f1565b8051611b49816158f1565b8051611b49816158fa565b8051611b4981615903565b8051611b498161590c565b6000602082840312156144c157600080fd5b6000612e258484613bc6565b6000602082840312156144df57600080fd5b6000612e258484613bd1565b600080604083850312156144fe57600080fd5b600061450a8585613bc6565b925050602061451b85828601613bc6565b9150509250929050565b6000806040838503121561453857600080fd5b60006145448585613bc6565b925050602061451b85828601613ef0565b6000806040838503121561456857600080fd5b60006145748585613bc6565b925050602061451b85828601613f55565b60008060008060008060008060006101208a8c0312156145a457600080fd5b60006145b08c8c613bc6565b99505060206145c18c828d01613f55565b98505060406145d28c828d01613f55565b97505060606145e38c828d0161410a565b96505060806145f48c828d0161410a565b95505060a06146058c828d01614478565b94505060c06146168c828d01614478565b93505060e06146278c828d0161410a565b9250506101006146398c828d01613ef0565b9150509295985092959850929598565b6000806040838503121561465c57600080fd5b823567ffffffffffffffff81111561467357600080fd5b61467f85828601613cb8565b925050602083013567ffffffffffffffff81111561469c57600080fd5b61451b85828601613c5b565b6000602082840312156146ba57600080fd5b813567ffffffffffffffff8111156146d157600080fd5b612e2584828501613d2a565b6000602082840312156146ef57600080fd5b815167ffffffffffffffff81111561470657600080fd5b612e2584828501613e80565b6000806000806080858703121561472857600080fd5b845167ffffffffffffffff81111561473f57600080fd5b61474b87828801613e80565b945050602085015167ffffffffffffffff81111561476857600080fd5b61477487828801613bdc565b935050604085015167ffffffffffffffff81111561479157600080fd5b61479d87828801613d9c565b925050606085015167ffffffffffffffff8111156147ba57600080fd5b6147c687828801613e0e565b91505092959194509250565b6000602082840312156147e457600080fd5b6000612e258484613efb565b60006020828403121561480257600080fd5b6000612e258484613f55565b60006020828403121561482057600080fd5b6000612e258484613f60565b60006020828403121561483e57600080fd5b6000612e258484613f81565b60006020828403121561485c57600080fd5b6000612e25848461410a565b60006020828403121561487a57600080fd5b6000612e2584846140d7565b6000806040838503121561489957600080fd5b60006148a585856140d7565b925050602061451b858286016140d7565b6000606082840312156148c857600080fd5b6000612e258484614134565b6000604082840312156148e657600080fd5b6000612e25848461418f565b6000806060838503121561490557600080fd5b6000614911858561418f565b925050604061451b85828601614478565b60008060006080848603121561493757600080fd5b6000614943868661418f565b935050604061495486828701614478565b925050606061496586828701614478565b9150509250925092565b6000610200828403121561498257600080fd5b6000612e2584846141d6565b6000806000806102a085870312156149a557600080fd5b60006149b187876141d6565b9450506102006149c387828801614134565b9350506102606149d5878288016140d7565b9250506102806147c6878288016140d7565b6000604082840312156149f957600080fd5b6000612e258484614317565b600060e08284031215614a1757600080fd5b6000612e258484614352565b600060408284031215614a3557600080fd5b6000612e2584846143fd565b600060408284031215614a5357600080fd5b6000612e258484614427565b600060208284031215614a7157600080fd5b6000612e258484614478565b600060208284031215614a8f57600080fd5b6000612e258484614483565b60008060408385031215614aae57600080fd5b600061450a8585614478565b60008060408385031215614acd57600080fd5b60006145448585614478565b60008060408385031215614aec57600080fd5b60006145748585614478565b60008060408385031215614b0b57600080fd5b6000614b178585614478565b925050602061451b8582860161410a565b60008060408385031215614b3b57600080fd5b6000614b478585614478565b925050602061451b85828601614478565b6000614b648383614bb0565b505060200190565b6000611b468383614ef4565b6000614b848383615037565b505060400190565b6000614b848383615134565b6000614b8483836151f0565b6000614b648383615213565b614bb98161574f565b82525050565b6000614bca82615742565b614bd48185615746565b9350614bdf8361573c565b8060005b83811015614c0d578151614bf78882614b58565b9750614c028361573c565b925050600101614be3565b509495945050505050565b6000614c2382615742565b614c2d8185615746565b935083602082028501614c3f8561573c565b8060005b85811015614c795784840389528151614c5c8582614b6c565b9450614c678361573c565b60209a909a0199925050600101614c43565b5091979650505050505050565b6000614c9182615742565b614c9b8185615746565b9350614ca68361573c565b8060005b83811015614c0d578151614cbe8882614b78565b9750614cc98361573c565b925050600101614caa565b6000614cdf82615742565b614ce98185615746565b9350614cf48361573c565b8060005b83811015614c0d578151614d0c8882614b8c565b9750614d178361573c565b925050600101614cf8565b6000614d2d82615742565b614d378185615746565b9350614d428361573c565b8060005b83811015614c0d578151614d5a8882614b98565b9750614d658361573c565b925050600101614d46565b6000614d7b82615742565b614d858185615746565b9350614d908361573c565b8060005b83811015614c0d578151614da88882614ba4565b9750614db38361573c565b925050600101614d94565b614bb98161575a565b6000614dd282615742565b614ddc8185615746565b9350614dec818560208601615820565b614df58161584c565b9093019392505050565b614bb98161575f565b614bb9816157f3565b614bb9816157fe565b614bb981615809565b6000614e30602683615746565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b6000614e8f602083615746565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000614ec8601f83615746565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b8051600090610160840190614f098582614e08565b506020830151614f1c6020860182615213565b506040830151614f2f6040860182614f9f565b506060830151614f4260c0860182615213565b506080830151614f5560e0860182615213565b5060a0830151614f69610100860182614bb0565b5060c0830151614f7d610120860182615213565b5060e0830151848203610140860152614f968282614dc7565b95945050505050565b80516080830190614fb08482614dbe565b506020820151614fc36020850182614e11565b506040820151614fd66040850182614e11565b506060820151614fe96060850182615213565b50505050565b80516020830190614fe98482615213565b805160608301906150118482615201565b5060208201516150246020850182615201565b506040820151614fe9604085018261521c565b805160408301906150488482614bb0565b506020820151614fe96020850182615213565b805161020083019061506d8482614bb0565b5060208201516150806020850182614dbe565b50604082015161509360408501826151df565b5060608201516150a66080850182615000565b5060808201516150b960e0850182614dff565b5060a08201516150cd610100850182614dff565b5060c08201516150e1610120850182614fef565b5060e08201516150f5610140850182614fef565b5061010082015161510a6101608501826151f0565b5061012082015161511f6101a08501826151f0565b50610140820151614fe96101e0850182614fef565b805160408301906151458482614dbe565b506020820151614fe9602085018261520a565b805160e08301906151698482615225565b50602082015161517c6020850182615225565b50604082015161518f6040850182615225565b5060608201516151a26060850182615225565b5060808201516151b56080850182615225565b5060a08201516151c860a085018261522e565b5060c0820151614fe960c085018261520a565b9052565b80516040830190615145848261520a565b805160408301906150488482614dbe565b614bb981615788565b614bb98161579b565b614bb9816157c9565b614bb9816157cc565b614bb9816157d5565b614bb9816157e2565b60208101611b498284614bb0565b604081016152538285614bb0565b6116176020830184614dbe565b60208082528101611b468184614d70565b608080825281016152828187614d70565b905081810360208301526152968186614bbf565b905081810360408301526152aa8185614cd4565b905081810360608301526152be8184614d22565b9695505050505050565b60208101611b498284614dbe565b60208101611b498284614dff565b60208101611b498284614e1a565b60208082528101610c9681614e23565b60208082528101610c9681614e82565b60208082528101610c9681614ebb565b60208101611b498284614fef565b6040810161533e8285614fef565b6116176020830184614fef565b60608101611b498284615000565b6102008101611b49828461505b565b6102a08101615377828761505b565b615385610200830186615000565b615393610260830185614fef565b614f96610280830184614fef565b60408101611b498284615134565b60e08101611b498284615158565b60208101611b4982846151db565b604081016153d982856151db565b6116176020830184614bb0565b606081016153f482866151db565b6154016020830185614bb0565b612e256040830184614bb0565b6060810161541c82866151db565b6154296020830185614bb0565b612e256040830184614dbe565b6060810161544482866151db565b6154516020830185614bb0565b612e256040830184614dff565b610140810161546d828d6151db565b61547a602083018c614bb0565b615487604083018b614dff565b615494606083018a614dff565b6154a16080830189614fef565b6154ae60a0830188614fef565b6154bb60c0830187615213565b6154c860e0830186615213565b6154d6610100830185614fef565b6154e4610120830184614dbe565b9b9a5050505050505050505050565b6060810161550182866151db565b81810360208301526155138185614c86565b90508181036040830152614f968184614c18565b6040810161553582856151db565b6116176020830184614dff565b6040810161533e82856151db565b6060810161555e82856151db565b6116176020830184615037565b6080810161557982866151db565b6155866020830185615037565b612e256060830184615213565b60a081016155a182876151db565b6155ae6020830186615037565b6155bb6060830185615213565b614f966080830184615213565b604081016155d682856151db565b6116176020830184615213565b606081016155f182866151db565b6154016020830185615213565b6060810161560c82866151db565b6154296020830185615213565b6060810161562782866151db565b6154516020830185615213565b6060810161564282866151db565b61564f6020830185615213565b612e256040830184614fef565b6060810161566a82866151db565b6156776020830185615213565b612e256040830184615213565b60408101611b4982846151df565b60408101611b4982846151f0565b60208101611b498284615213565b60405181810167ffffffffffffffff811182821017156156cd57600080fd5b604052919050565b600067ffffffffffffffff8211156156ec57600080fd5b5060209081020190565b600067ffffffffffffffff82111561570d57600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b6000610c96826157b0565b151590565b6000610c968261574f565b80610c9981615874565b80610c998161587e565b80610c9981615888565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610c968261576a565b6000610c9682615774565b6000610c968261577e565b82818337506000910152565b60005b8381101561583b578181015183820152602001615823565b83811115614fe95750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6009811061393957fe5b6002811061393957fe5b6003811061393957fe5b61589b8161574f565b811461393957600080fd5b61589b8161575a565b61589b8161575f565b6009811061393957600080fd5b6002811061393957600080fd5b6003811061393957600080fd5b61589b81615788565b61589b8161579b565b61589b816157c9565b61589b816157cc565b61589b816157d5565b61589b816157e256fea365627a7a723158204d7c070f1fc79316c1f4230f26e287769ce104578c70b42d01aa409690bedc196c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "1264:1152:63:-;;;1418:996;8:9:-1;5:2;;;30:1;27;20:12;5:2;1418:996:63;;;;;;;;;;;;;;;;;;;;;698:17:151;718:12;-1:-1:-1;;;;;718:10:151;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:151;-1:-1:-1;;;;;740:18:151;;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:151;-1:-1:-1;;;;;;;;;;;;;773:43:151;-1:-1:-1;;773:43:151;-1:-1:-1;1421:11:156;:18;;-1:-1:-1;;;;;;;1421:18:156;;;;;;1818:31:63;;:18;:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1818:31:63;;;-1:-1:-1;;;;;1818:31:63;;;;-1:-1:-1;;;;;;;;1818:31:63;;;;;;;;-1:-1:-1;;;;;;;;1818:31:63;-1:-1:-1;;;1818:31:63;;;;;;;;;;;-1:-1:-1;;;;;1818:31:63;-1:-1:-1;;;1818:31:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1818:31:63;-1:-1:-1;;;;;1818:31:63;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1818:31:63;-1:-1:-1;;;;;1818:31:63;;;;;;;;;1859:51;-1:-1:-1;;;1859:51:63;;:9;;:29;;:51;;-1:-1:-1;;1898:11:63;;1859:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1859:51:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1920:63:63;;-1:-1:-1;;;1920:63:63;;:9;;-1:-1:-1;1920:35:63;;-1:-1:-1;1920:63:63;;1956:7;;1965:17;;1920:63;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1920:63:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1993:53:63;;-1:-1:-1;;;1993:53:63;;:9;;-1:-1:-1;1993:30:63;;-1:-1:-1;1993:53:63;;2024:7;;2033:12;;1993:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1993:53:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2056:61:63;;-1:-1:-1;;;2056:61:63;;:9;;-1:-1:-1;2056:34:63;;-1:-1:-1;2056:61:63;;2091:7;;2100:16;;2056:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2056:61:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2127:103:63;;-1:-1:-1;;;2127:103:63;;:9;;-1:-1:-1;2127:55:63;;-1:-1:-1;2127:103:63;;2183:7;;2192:37;;2127:103;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2127:103:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2240:57:63;;-1:-1:-1;;;2240:57:63;;:9;;-1:-1:-1;2240:32:63;;-1:-1:-1;2240:57:63;;2273:7;;2282:14;;2240:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2240:57:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2307:61:63;;-1:-1:-1;;;2307:61:63;;:9;;-1:-1:-1;2307:34:63;;-1:-1:-1;2307:61:63;;2342:7;;2351:16;;2307:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2307:61:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2307:61:63;;;;2378:29;2397:9;2378:18;;;:29;;:::i;:::-;1418:996;;;;;;;;1264:1152;;788:96:148;867:10;788:96;:::o;2178:225:151:-;-1:-1:-1;;;;;2251:22:151;;2243:73;;;;-1:-1:-1;;;2243:73:151;;;;;;;;;;;;;;;;;2352:6;;2331:38;;-1:-1:-1;;;;;2331:38:151;;;;2352:6;;-1:-1:-1;;;;;;;;;;;2331:38:151;2352:6;;2331:38;2379:6;:17;;-1:-1:-1;;;;;;2379:17:151;-1:-1:-1;;;;;2379:17:151;;;;;;;;;;2178:225::o;5:184:-1:-;108:13;;126:58;108:13;126:58;;;93:96;;;;;222:344;;345:4;333:9;328:3;324:19;320:30;317:2;;;363:1;360;353:12;317:2;381:20;396:4;381:20;;;372:29;-1:-1;452:1;484:60;540:3;520:9;484:60;;;459:86;;-1:-1;470:5;311:255;-1:-1;;311:255;605:1374;;734:4;722:9;717:3;713:19;709:30;706:2;;;752:1;749;742:12;706:2;770:20;785:4;770:20;;;761:29;-1:-1;850:1;882:59;937:3;917:9;882:59;;;857:85;;-1:-1;1019:2;1052:59;1107:3;1083:22;;;1052:59;;;1045:4;1038:5;1034:16;1027:85;963:160;1184:2;1217:59;1272:3;1263:6;1252:9;1248:22;1217:59;;;1210:4;1203:5;1199:16;1192:85;1133:155;1350:2;1383:59;1438:3;1429:6;1418:9;1414:22;1383:59;;;1376:4;1369:5;1365:16;1358:85;1298:156;1527:3;1561:59;1616:3;1607:6;1596:9;1592:22;1561:59;;;1554:4;1547:5;1543:16;1536:85;1464:168;1693:3;1727:59;1782:3;1773:6;1762:9;1758:22;1727:59;;;1720:4;1713:5;1709:16;1702:85;1642:156;1863:3;1897:60;1953:3;1944:6;1933:9;1929:22;1897:60;;;1890:4;1883:5;1879:16;1872:86;1808:161;700:1279;;;;;2366:134;2444:13;;2462:33;2444:13;2462:33;;2507:134;2585:13;;2603:33;2585:13;2603:33;;2648:132;2725:13;;2743:32;2725:13;2743:32;;2787:132;2864:13;;2882:32;2864:13;2882:32;;2926:1517;;;;;;;;;3307:3;3295:9;3286:7;3282:23;3278:33;3275:2;;;3324:1;3321;3314:12;3275:2;3359:1;3376:93;3461:7;3441:9;3376:93;;;3366:103;;3338:137;3506:3;3525:87;3604:7;3595:6;3584:9;3580:22;3525:87;;;3515:97;;3485:133;3649:3;3668:87;3747:7;3738:6;3727:9;3723:22;3668:87;;;3658:97;;3628:133;3792:3;3811:87;3890:7;3881:6;3870:9;3866:22;3811:87;;;3801:97;;3771:133;3935:3;3954:88;4034:7;4025:6;4014:9;4010:22;3954:88;;;3944:98;;3914:134;4079:3;4098:64;4154:7;4145:6;4134:9;4130:22;4098:64;;;4088:74;;4058:110;4199:3;4218:89;4299:7;4290:6;4279:9;4275:22;4218:89;;;4208:99;;4178:135;4344:3;4363:64;4419:7;4410:6;4399:9;4395:22;4363:64;;;4353:74;;4323:110;3269:1174;;;;;;;;;;;;4450:184;4566:62;4622:5;4566:62;;;4561:3;4554:75;4548:86;;;4642:375;;4802:67;4866:2;4861:3;4802:67;;;4902:34;4882:55;;-1:-1;;;4966:2;4957:12;;4950:30;5008:2;4999:12;;4788:229;-1:-1;;4788:229;5074:335;5288:23;;5221:4;5212:14;;;5317:71;5216:3;5288:23;5317:71;;;5241:153;5194:215;;;;5416:123;5516:18;;5510:29;5943:121;6034:24;6052:5;6034:24;;6189:407;6380:2;6394:47;;;6365:18;;6455:131;6365:18;6455:131;;6603:440;6803:2;6788:18;;6817:100;6792:9;6890:6;6817:100;;;6928:105;7029:2;7018:9;7014:18;7005:6;6928:105;;;6774:269;;;;;;7050:482;7271:2;7256:18;;7285:100;7260:9;7358:6;7285:100;;;7396:126;7518:2;7507:9;7503:18;7494:6;7396:126;;8032:390;8207:2;8192:18;;8221:100;8196:9;8294:6;8221:100;;;8332:80;8408:2;8397:9;8393:18;8384:6;8332:80;;8429:256;8491:2;8485:9;8517:17;;;-1:-1;;;;;8577:34;;8613:22;;;8574:62;8571:2;;;8649:1;8646;8639:12;8571:2;8665;8658:22;8469:216;;-1:-1;8469:216;8693:163;8796:19;;;8845:4;8836:14;;8789:67;8864:91;;8926:24;8944:5;8926:24;;8962:116;;9049:24;9067:5;9049:24;;9085:113;-1:-1;;;;;9147:46;;9130:68;9205:121;-1:-1;;;;;9267:54;;9250:76;9333:72;9395:5;9378:27;9412:96;-1:-1;;;;;9473:30;;9456:52;9515:104;-1:-1;;;;;9576:38;;9559:60;9944:167;10038:49;10081:5;10038:49;;;10031:5;10028:60;10018:2;;10102:1;10099;10092:12;10018:2;10012:99;;10118:117;10187:24;10205:5;10187:24;;10242:117;10311:24;10329:5;10311:24;;10366:115;10434:23;10451:5;10434:23;;10488:115;10556:23;10573:5;10556:23;;10530:73;1264:1152:63;;;;;;",
  "deployedSourceMap": "1264:1152:63:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1264:1152:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:190:64;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6175:197;;;;;;;;;:::i;:::-;;;;;;;;6547:316:62;;;;;;;;;:::i;:::-;;9148:206:64;;;;;;;;;:::i;:::-;;;;;;;;5188:320:62;;;;;;;;;:::i;12019:232:64:-;;;;;;;;;:::i;:::-;;;;;;;;1794:225;;;;;;;;;:::i;:::-;;;;;;;;3686:292:62;;;;;;;;;:::i;13008:234:64:-;;;;;;;;;:::i;:::-;;;;;;;;;7625:200;;;;;;;;;:::i;:::-;;;;;;;;12771:231;;;;;;;;;:::i;:::-;;;;;;;;7831:209;;;;;;;;;:::i;8502:222::-;;;;;;;;;:::i;4906:276:62:-;;;;;;;;;:::i;2672:397:64:-;;;;;;;;;:::i;5347:251::-;;;;;;;;;:::i;5823:141::-;;;:::i;2044:317:62:-;;;;;;;;;:::i;6283:258::-;;;;;;;;;:::i;5793:238::-;;;;;;;;;:::i;8936:206:64:-;;;;;;;;;:::i;6037:240:62:-;;;;;;;;;:::i;13899:218:64:-;;;;;;;;;:::i;11325:236::-;;;;;;;;;:::i;:::-;;;;;;;;4462:266;;;;;;;;;:::i;3984:292:62:-;;;;;;;;;:::i;3929:158:64:-;;;:::i;3775:148::-;;;:::i;1633:155::-;;;:::i;12257:239::-;;;;;;;;;:::i;7408:211::-;;;;;;;;;:::i;:::-;;;;;;;;6378:188;;;;;;;;;:::i;5102:239::-;;;;;;;;;:::i;7073:198:62:-;;;;;;;;;:::i;7277:255::-;;;;;;;;;:::i;13504:323:64:-;;;;;;;;;:::i;:::-;;;;;;;;;;;1684:137:151;;;:::i;4252:204:64:-;;;:::i;3238:167::-;;;:::i;1816:414:67:-;;;;;;;;;:::i;6572:197:64:-;;;;;;;;;:::i;899:77:151:-;;;:::i;1250:92::-;;;:::i;1725:313:62:-;;;;;;;;;:::i;5970:199:64:-;;;;;;;;;:::i;2078:260:66:-;;;;;;;;;:::i;9822:240:64:-;;;;;;;;;:::i;7538:285:62:-;;;;;;;;;:::i;4624:276::-;;;;;;;;;:::i;10729:329:64:-;;;;;;;;;:::i;:::-;;;;;;;;;;;10302:228;;;;;;;;;:::i;4734:362::-;;;;;;;;;:::i;5563:224:62:-;;;;;;;;;:::i;3411:195:64:-;;;:::i;2025:167::-;;;:::i;11567:236::-;;;;;;;;;:::i;6775:203::-;;;;;;;;;:::i;:::-;;;;;;;;2198:468;;;;;;;;;:::i;11064:200::-;;;;;;;;;:::i;6984:203::-;;;;;;;;;:::i;4093:153::-;;;:::i;7193:209::-;;;;;;;;;:::i;12502:263::-;;;;;;;;;:::i;11809:204::-;;;;;;;;;:::i;:::-;;;;;;;;9360:225;;;;;;;;;:::i;3075:157::-;;;:::i;6869:198:62:-;;;;;;;;;:::i;4282:336::-;;;;;;;;;:::i;3403:277::-;;;;;;;;;:::i;5604:159:64:-;;;:::i;:::-;;;;;;;;10536:187;;;;;;;;;:::i;:::-;;;;;;;;8164:277:62;;;;;;;;;:::i;10068:228:64:-;;;;;;;;;:::i;2418:712:62:-;;;;;;;;;:::i;3136:261::-;;;;;;;;;:::i;14319:200:64:-;;;;;;;;;:::i;3612:157::-;;;:::i;7889:269:62:-;;;;;;;;;:::i;1970:107:151:-;;;;;;;;;:::i;13248:250:64:-;;;;;;;;;:::i;8046:211::-;;;;;;;;;:::i;14123:190::-;14256:50;;;;;14229:4;;14256:11;;:31;;:50;;14229:4;;14297:8;;14256:50;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14256:50:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14256:50:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14256:50:64;;;;;;;;;14249:57;;14123:190;;;;:::o;6175:197::-;6313:52;;;;;6283:7;;6313:11;;:33;;:52;;6283:7;;6356:8;;6313:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6313:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6313:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6313:52:64;;;;;;;;6547:316:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6719:137:62;;;;;:9;;:55;;:137;;2070:5:156;;6809:37:62;;6719:137;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6719:137:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;6547:316:62:o;9148:206:64:-;9256:16;;:::i;:::-;9295:52;;;;;:11;;:33;;:52;;9329:7;;9338:8;;9295:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9295:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9295:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9295:52:64;;;;;;;;5188:320:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5376:125:62;;;;;:9;;:38;;:125;;2070:5:156;;5449:8:62;;5471:20;;5376:125;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5376:125:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;;5188:320:62:o;12019:232:64:-;12185:59;;;;;12146:16;;12185:11;;:41;;:59;;12227:7;;12236;;12185:59;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12185:59:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12185:59:64;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12185:59:64;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;12185:59:64;;;;;;;;1794:225;1916:19;;:::i;:::-;1958:54;;;;;:11;;:36;;:54;;1995:7;;2004;;1958:54;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1958:54:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1958:54:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1958:54:64;;;;;;;;3686:292:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3858:113:62;;;;;:9;;:32;;:113;;2070:5:156;;3925:8:62;;3947:14;;3858:113;;;;13008:234:64;13122:21;;:::i;:::-;13145;;:::i;:::-;13189:46;;;;;:11;;:28;;:46;;13218:7;;13227;;13189:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13189:46:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13189:46:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13189:46:64;;;;;;;;;13182:53;;;;13008:234;;;:::o;7625:200::-;7767:51;;;;;7732:12;;7767:11;;:32;;:51;;7732:12;;7809:8;;7767:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7767:51:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7767:51:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7767:51:64;;;;;;;;12771:231;12932:63;;;;;12902:7;;12932:11;;:45;;:63;;12902:7;;12987;;12932:63;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12932:63:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12932:63:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12932:63:64;;;;;;;;7831:209;7979:54;;;;;7941:15;;7979:11;;:35;;:54;;7941:15;;8024:8;;7979:54;;;;8502:222;8611:19;;:::i;:::-;8653:64;;;;;:11;;:45;;:64;;8699:7;;8708:8;;8653:64;;;;4906:276:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5066:109:62;;;;;:9;;:30;;:109;;2070:5:156;;5131:8:62;;5153:12;;5066:109;;;;2672:397:64;2867:19;;:::i;:::-;2909:153;;;;;:11;;:49;;:153;;2972:7;;2993;;3014:12;;3040;;2909:153;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:153:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2909:153:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2909:153:64;;;;;;;;;2902:160;;2672:397;;;;;;:::o;5347:251::-;5482:19;;:::i;:::-;5524:67;;;;;:11;;:49;;:67;;5574:7;;5583;;5524:67;;;;5823:141;5923:34;;;;;5893:7;;5923:11;;:25;;:34;;5893:7;;5923:34;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5923:34:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5923:34:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5923:34:64;;;;;;;;;5916:41;;5823:141;:::o;2044:317:62:-;2211:7;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2241:113:62;;;;;:9;;:40;;:113;;2070:5:156;;2316::62;;2335:9;;2241:113;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:113:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2241:113:62;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2241:113:62;;;;;;;;;2234:120;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;2044:317:62;;-1:-1:-1;;2044:317:62:o;6283:258::-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6439:95:62;;;;;:9;;:34;;:95;;2070:5:156;;6508:16:62;;6439:95;;;;5793:238;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5938:86:62;;;;;:9;;:35;;:86;;2070:5:156;;6008:6:62;;5938:86;;;;8936:206:64;9044:16;;:::i;:::-;9083:52;;;;;:11;;:33;;:52;;9117:7;;9126:8;;9083:52;;;;6037:240:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6183:87:62;;;;;:9;;:30;;:87;;2070:5:156;;6248:12:62;;6183:87;;;;13899:218:64;14054:56;;;;;14027:4;;14054:11;;:30;;:56;;14027:4;;14094:5;;14101:8;;14054:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14054:56:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14054:56:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14054:56:64;;;;;;;;;14047:63;;13899:218;;;;;:::o;11325:236::-;11462:16;;:::i;:::-;11501:53;;;;;:11;;:25;;:53;;11527:7;;11536;;11545:8;;11501:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11501:53:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11501:53:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11501:53:64;;;;;;;;4462:266;4644:77;;;;;4595:26;;4644:11;;:54;;:77;;4595:26;;4708:12;;4644:77;;;;3984:292:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4158:111:62;;;;;:9;;:31;;:111;;2070:5:156;;4224:8:62;;4246:13;;4158:111;;;;3929:158:64;4036:44;;;;;4009:4;;4036:11;;:35;;:44;;4009:4;;4036:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4036:44:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4036:44:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4036:44:64;;;;;;;;3775:148;3877:39;;;;;3850:4;;3877:11;;:30;;:39;;3850:4;;3877:39;;;;1633:155;1704:19;;:::i;:::-;1746:35;;;;;:11;;:26;;:35;;1773:7;;1746:35;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:35:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1746:35:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1746:35:64;;;;;;;;12257:239;12422:67;;;;;12392:7;;12422:11;;:49;;:67;;12392:7;;12481;;12422:67;;;;7408:211;7516:21;;:::i;:::-;7560:52;;;;;:11;;:33;;:52;;7594:7;;7603:8;;7560:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7560:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7560:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7560:52:64;;;;;;;;6378:188;6510:49;;;;;6483:4;;6510:11;;:30;;:49;;6483:4;;6550:8;;6510:49;;;;5102:239;5231:19;;:::i;:::-;5273:61;;;;;:11;;:43;;:61;;5317:7;;5326;;5273:61;;;;7073:198:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7203:61:62;;;;;:9;;:34;;:61;;2070:5:156;;7247:16:62;;7203:61;;;;7277:255;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7445:80:62;;;;;:9;;:44;;:80;;2070:5:156;;7499:25:62;;7445:80;;;;13504:323:64;13633:13;13660:16;13690:18;13722;13772:11;:30;13803:7;13812;13772:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13772:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13772:48:64;;;;;;39:16:-1;36:1;17:17;2:54;101:4;13772:48:64;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;13772:48:64;;;;;;;;;13765:55;;;;;;;;13504:323;;;;;:::o;1684:137:151:-;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1766:6;;1745:40;;1782:1;;1745:40;1766:6;;1745:40;;1782:1;;1745:40;1795:6;:19;;;;;;1684:137::o;4252:204:64:-;4393:56;;;;;4344:26;;4393:11;;:47;;:56;;4344:26;;4393:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4393:56:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4393:56:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4393:56:64;;;;;;;;3238:167;3314:21;;:::i;:::-;3358:40;;;;;:11;;:31;;:40;;3390:7;;3358:40;;;;1816:414:67;1931:11;;1914:14;1952:272;1972:6;1968:1;:10;1952:272;;;1999:16;2018:4;2023:1;2018:7;;;;;;;;;;;;;;:16;;;1999:35;;2048:12;2063:4;2068:1;2063:7;;;;;;;;;;;;;;:15;;;2048:30;;2134:7;:15;;2148:1;2134:15;;;2144:1;2134:15;2110:10;2092:7;:29;;;:17;:29;;;;;;;;;:39;;;;;;;;;;;:57;;;;;;;;2168:45;;;;;;2122:8;;2205:7;;2168:45;;;;;;;;;;-1:-1:-1;;1980:3:67;;1952:272;;;;1816:414;;:::o;6572:197:64:-;6673:21;;:::i;:::-;6717:45;;;;;:11;;:26;;:45;;6744:7;;6753:8;;6717:45;;;;899:77:151;963:6;;;;899:77;:::o;1250:92::-;1329:6;;1290:4;;1329:6;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;1725:313:62:-;1890:7;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;1920:111:62;;;;;:9;;:35;;:111;;2070:5:156;;1990:8:62;;2012:9;;1920:111;;;;5970:199:64;6109:53;;;;;6079:7;;6109:11;;:37;;:53;;6079:7;;6156:5;;6109:53;;;;2078:260:66;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2236:95:66;;;;;:13;;:21;;:95;;2070:5:156;;2292:8:66;;2314:7;;2236:95;;;;9822:240:64;9945:20;;:::i;:::-;9988:67;;;;;:11;;:48;;:67;;10037:7;;10046:8;;9988:67;;;;7538:285:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7729:87:62;;;;;:9;;:37;;:87;;2070:5:156;;7776:12:62;;7790:25;;7729:87;;;;4624:276;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4784:109:62;;;;;:9;;:30;;:109;;2070:5:156;;4849:8:62;;4871:12;;4784:109;;;;10729:329:64;10846:21;;:::i;:::-;10881;;:::i;:::-;10916;;:::i;:::-;10951:20;;:::i;:::-;11003:48;;;;;:11;;:29;;:48;;11033:7;;11042:8;;11003:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11003:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11003:48:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11003:48:64;;;;;;;;10302:228;10419:20;;:::i;:::-;10462:61;;;;;:11;;:42;;:61;;10505:7;;10514:8;;10462:61;;;;4734:362;4863:39;;:::i;:::-;4904:45;;:::i;:::-;5028:61;;;;;:11;;:43;;:61;;5072:7;;5081;;5028:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5028:61:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5028:61:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5028:61:64;;;;;;;;;4965:124;;;;-1:-1:-1;4734:362:64;-1:-1:-1;;4734:362:64:o;5563:224:62:-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5701:79:62;;;;;:9;;:29;;:79;;2070:5:156;;5765::62;;5701:79;;;;3411:195:64;3538:61;;;;;3508:7;;3538:11;;:52;;:61;;3508:7;;3538:61;;;;2025:167;2102:19;;:::i;:::-;2144:41;;;;;:11;;:32;;:41;;2177:7;;2144:41;;;;11567:236;11704:16;;:::i;:::-;11743:53;;;;;:11;;:25;;:53;;11769:7;;11778;;11787:8;;11743:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11743:53:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11743:53:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11743:53:64;;;;;;;;6775:203;6879:21;;:::i;:::-;6923:48;;;;;:11;;:29;;:48;;6953:7;;6962:8;;6923:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6923:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6923:48:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6923:48:64;;;;;;;;2198:468;2346:19;;:::i;:::-;2381:27;;:::i;:::-;-1:-1:-1;2411:78:64;;;;;;;;-1:-1:-1;2411:78:64;;;;;;;;;2506:153;;;;;2411:78;;2506:11;;:49;;:153;;2411:78;;2611:12;;2637;;2506:153;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2506:153:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2506:153:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2506:153:64;;;;;;;;;2499:160;2198:468;-1:-1:-1;;;;2198:468:64:o;11064:200::-;11169:16;;:::i;:::-;11208:49;;;;;:11;;:30;;:49;;11239:7;;11248:8;;11208:49;;;;6984:203;7088:21;;:::i;:::-;7132:48;;;;;:11;;:29;;:48;;7162:7;;7171:8;;7132:48;;;;4093:153;4199:40;;;;;4169:7;;4199:11;;:31;;:40;;4169:7;;4199:40;;;;7193:209;7300:21;;:::i;:::-;7344:51;;;;;:11;;:32;;:51;;7377:7;;7386:8;;7344:51;;;;12502:263;12687:71;;;;;12657:7;;12687:11;;:46;;:71;;12657:7;;12743;;12752:5;;12687:71;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12687:71:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12687:71:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12687:71:64;;;;;;;;11809:204;11960:46;;;;;11923:14;;11960:11;;:28;;:46;;11923:14;;11998:7;;11960:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11960:46:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11960:46:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11960:46:64;;;;;;;;9360:225;9476:19;;:::i;:::-;9518:60;;;;;:11;;:41;;:60;;9560:7;;9569:8;;9518:60;;;;3075:157;3147:19;;:::i;:::-;3189:36;;;;;:11;;:27;;:36;;3217:7;;3189:36;;;;6869:198:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7003:57:62;;;;;:9;;:32;;:57;;2070:5:156;;7045:14:62;;7003:57;;;;4282:336;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4478:133:62;;;;;:9;;:42;;:133;;2070:5:156;;4555:8:62;;4577:24;;4478:133;;;;3403:277;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3566:107:62;;;;;:9;;:29;;:107;;2070:5:156;;3630:8:62;;3652:11;;3566:107;;;;5604:159:64;5674:25;;:::i;:::-;5722:34;;;;;:11;;:25;;:34;;5748:7;;5722:34;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5722:34:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5722:34:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5722:34:64;;;;;;;;10536:187;10632:21;;:::i;:::-;10676:40;;;;;:11;;:21;;:40;;10698:7;;10707:8;;10676:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10676:40:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10676:40:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10676:40:64;;;;;;;;8164:277:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;8323:111:62;;;;;:9;;:35;;:111;;2070:5:156;;8393:10:62;;8417:7;;8323:111;;;;10068:228:64;10185:20;;:::i;:::-;10228:61;;;;;:11;;:42;;:61;;10271:7;;10280:8;;10228:61;;;;2418:712:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2833:290:62;;;;;:9;;:24;;:290;;2070:5:156;;2892::62;;2911:11;;2936:14;;2964:13;;2991;;3018:12;;3044;;3070:20;;3104:9;;2833:290;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2833:290:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;;;;;;;;;2418:712:62:o;3136:261::-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3287:103:62;;;;;:9;;:27;;:103;;2070:5:156;;3349:8:62;;3371:9;;3287:103;;;;14319:200:64;14457:55;;;;;14430:4;;14457:11;;:34;;:55;;14430:4;;14501:10;;14457:55;;;;3612:157;3724:38;;;;;3686:15;;3724:11;;:29;;:38;;3686:15;;3724:38;;;;7889:269:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;8044:107:62;;;;;:9;;:32;;:107;;2070:5:156;;8111:8:62;;8133;;8044:107;;;;1970::151;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;13248:250:64:-;13370:21;;:::i;:::-;13393;;:::i;:::-;13437:54;;;;;:11;;:36;;:54;;13474:7;;13483;;13437:54;;;;8046:211;8155:19;;:::i;:::-;8197:53;;;;;:11;;:34;;:53;;8232:7;;8241:8;;8197:53;;;;788:96:148;867:10;788:96;:::o;2178:225:151:-;2251:22;;;2243:73;;;;-1:-1:-1;;;2243:73:151;;;;;;;;;2352:6;;2331:38;;;;;;;2352:6;;2331:38;;2352:6;;2331:38;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;1264:1152:63:-;;;;;;;;;;-1:-1:-1;1264:1152:63;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1264:1152:63;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1264:1152:63;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1264:1152:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:722;;429:3;422:4;414:6;410:17;406:27;396:2;;447:1;444;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;;;499:80;;;490:89;;596:5;621:6;614:5;607:21;651:4;643:6;639:17;629:27;;673:4;668:3;664:14;657:21;;726:6;773:3;765:4;757:6;753:17;748:3;744:27;741:36;738:2;;;790:1;787;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;883:3;905:48;949:3;937:10;905:48;;;893:61;;-1:-1;977:4;968:14;;;;996;;;;;847:1;840:9;800:217;;;804:14;389:634;;;;;;;;1067:753;;1209:3;1202:4;1194:6;1190:17;1186:27;1176:2;;1227:1;1224;1217:12;1176:2;1264:6;1251:20;1286:105;1301:89;1383:6;1301:89;;1286:105;1419:21;;;1463:4;1451:17;;;;1277:114;;-1:-1;1476:14;;1451:17;1571:1;1556:258;1581:6;1578:1;1575:13;1556:258;;;1664:3;1651:17;1643:6;1639:30;1688:62;1746:3;1734:10;1688:62;;;1676:75;;-1:-1;1774:4;1765:14;;;;1793;;;;;1603:1;1596:9;1556:258;;1858:764;;1994:3;1987:4;1979:6;1975:17;1971:27;1961:2;;2012:1;2009;2002:12;1961:2;2049:6;2036:20;2071:99;2086:83;2162:6;2086:83;;2071:99;2062:108;;2187:5;2212:6;2205:5;2198:21;2242:4;2234:6;2230:17;2220:27;;2264:4;2259:3;2255:14;2248:21;;2317:6;2364:3;2356:4;2348:6;2344:17;2339:3;2335:27;2332:36;2329:2;;;2381:1;2378;2371:12;2329:2;2406:1;2391:225;2416:6;2413:1;2410:13;2391:225;;;2474:3;2496:56;2548:3;2536:10;2496:56;;;2484:69;;-1:-1;2576:4;2567:14;;;;2604:4;2595:14;;;;;2438:1;2431:9;2391:225;;2665:785;;2808:3;2801:4;2793:6;2789:17;2785:27;2775:2;;2826:1;2823;2816:12;2775:2;2863:6;2850:20;2885:106;2900:90;2983:6;2900:90;;2885:106;2876:115;;3008:5;3033:6;3026:5;3019:21;3063:4;3055:6;3051:17;3041:27;;3085:4;3080:3;3076:14;3069:21;;3138:6;3185:3;3177:4;3169:6;3165:17;3160:3;3156:27;3153:36;3150:2;;;3202:1;3199;3192:12;3150:2;3227:1;3212:232;3237:6;3234:1;3231:13;3212:232;;;3295:3;3317:63;3376:3;3364:10;3317:63;;;3305:76;;-1:-1;3404:4;3395:14;;;;3432:4;3423:14;;;;;3259:1;3252:9;3212:232;;3485:776;;3631:3;3624:4;3616:6;3612:17;3608:27;3598:2;;3649:1;3646;3639:12;3598:2;3679:6;3673:13;3701:98;3716:82;3791:6;3716:82;;3701:98;3692:107;;3816:5;3841:6;3834:5;3827:21;3871:4;3863:6;3859:17;3849:27;;3893:4;3888:3;3884:14;3877:21;;3946:6;3993:3;3985:4;3977:6;3973:17;3968:3;3964:27;3961:36;3958:2;;;4010:1;4007;4000:12;3958:2;4035:1;4020:235;4045:6;4042:1;4039:13;4020:235;;;4103:3;4125:66;4187:3;4175:10;4125:66;;;4113:79;;-1:-1;4215:4;4206:14;;;;4243:4;4234:14;;;;;4067:1;4060:9;4020:235;;4296:776;;4442:3;4435:4;4427:6;4423:17;4419:27;4409:2;;4460:1;4457;4450:12;4409:2;4490:6;4484:13;4512:98;4527:82;4602:6;4527:82;;4512:98;4503:107;;4627:5;4652:6;4645:5;4638:21;4682:4;4674:6;4670:17;4660:27;;4704:4;4699:3;4695:14;4688:21;;4757:6;4804:3;4796:4;4788:6;4784:17;4779:3;4775:27;4772:36;4769:2;;;4821:1;4818;4811:12;4769:2;4846:1;4831:235;4856:6;4853:1;4850:13;4831:235;;;4914:3;4936:66;4998:3;4986:10;4936:66;;;4924:79;;-1:-1;5026:4;5017:14;;;;5054:4;5045:14;;;;;4878:1;4871:9;4831:235;;5098:722;;5226:3;5219:4;5211:6;5207:17;5203:27;5193:2;;5244:1;5241;5234:12;5193:2;5274:6;5268:13;5296:80;5311:64;5368:6;5311:64;;5296:80;5287:89;;5393:5;5418:6;5411:5;5404:21;5448:4;5440:6;5436:17;5426:27;;5470:4;5465:3;5461:14;5454:21;;5523:6;5570:3;5562:4;5554:6;5550:17;5545:3;5541:27;5538:36;5535:2;;;5587:1;5584;5577:12;5535:2;5612:1;5597:217;5622:6;5619:1;5616:13;5597:217;;;5680:3;5702:48;5746:3;5734:10;5702:48;;;5690:61;;-1:-1;5774:4;5765:14;;;;5793;;;;;5644:1;5637:9;5597:217;;5828:124;5892:20;;5917:30;5892:20;5917:30;;5959:128;6034:13;;6052:30;6034:13;6052:30;;6095:432;;6192:3;6185:4;6177:6;6173:17;6169:27;6159:2;;6210:1;6207;6200:12;6159:2;6247:6;6234:20;6269:60;6284:44;6321:6;6284:44;;6269:60;6260:69;;6349:6;6342:5;6335:21;6385:4;6377:6;6373:17;6418:4;6411:5;6407:16;6453:3;6444:6;6439:3;6435:16;6432:25;6429:2;;;6470:1;6467;6460:12;6429:2;6480:41;6514:6;6509:3;6504;6480:41;;;6152:375;;;;;;;;6535:202;6638:20;;6663:69;6638:20;6663:69;;6744:206;6858:13;;6876:69;6858:13;6876:69;;8079:162;8162:20;;8187:49;8162:20;8187:49;;8248:176;8338:20;;8363:56;8338:20;8363:56;;8608:158;8698:13;;8716:45;8698:13;8716:45;;8805:1528;;8919:6;8907:9;8902:3;8898:19;8894:32;8891:2;;;8939:1;8936;8929:12;8891:2;8957:22;8972:6;8957:22;;;8948:31;-1:-1;9035:1;9067:65;9128:3;9108:9;9067:65;;;9042:91;;-1:-1;9199:2;9232:49;9277:3;9253:22;;;9232:49;;;9225:4;9218:5;9214:16;9207:75;9154:139;9345:2;9378:75;9449:3;9440:6;9429:9;9425:22;9378:75;;;9371:4;9364:5;9360:16;9353:101;9303:162;9526:3;9560:49;9605:3;9596:6;9585:9;9581:22;9560:49;;;9553:4;9546:5;9542:16;9535:75;9475:146;9684:3;9718:49;9763:3;9754:6;9743:9;9739:22;9718:49;;;9711:4;9704:5;9700:16;9693:75;9631:148;9837:3;9871:49;9916:3;9907:6;9896:9;9892:22;9871:49;;;9864:4;9857:5;9853:16;9846:75;9789:143;9992:3;10026:49;10071:3;10062:6;10051:9;10047:22;10026:49;;;10019:4;10012:5;10008:16;10001:75;9942:145;10165:3;10154:9;10150:19;10137:33;10190:18;10182:6;10179:30;10176:2;;;10222:1;10219;10212:12;10176:2;10257:54;10307:3;10298:6;10287:9;10283:22;10257:54;;;10250:4;10243:5;10239:16;10232:80;10097:226;8885:1448;;;;;10371:804;;10486:4;10474:9;10469:3;10465:19;10461:30;10458:2;;;10504:1;10501;10494:12;10458:2;10522:20;10537:4;10522:20;;;10513:29;-1:-1;10592:1;10624:46;10666:3;10646:9;10624:46;;;10599:72;;-1:-1;10740:2;10773:72;10841:3;10817:22;;;10773:72;;;10766:4;10759:5;10755:16;10748:98;10692:165;10906:2;10939:69;11004:3;10995:6;10984:9;10980:22;10939:69;;;10932:4;10925:5;10921:16;10914:95;10867:153;11071:2;11104:49;11149:3;11140:6;11129:9;11125:22;11104:49;;;11097:4;11090:5;11086:16;11079:75;11030:135;10452:723;;;;;11208:340;;11327:4;11315:9;11310:3;11306:19;11302:30;11299:2;;;11345:1;11342;11335:12;11299:2;11363:20;11378:4;11363:20;;;11354:29;-1:-1;11434:1;11466:60;11522:3;11502:9;11466:60;;;11441:86;;-1:-1;11452:5;11293:255;-1:-1;;11293:255;11581:322;;11693:4;11681:9;11676:3;11672:19;11668:30;11665:2;;;11711:1;11708;11701:12;11665:2;11729:20;11744:4;11729:20;;;11720:29;-1:-1;11800:1;11832:49;11877:3;11857:9;11832:49;;12315:659;;12435:4;12423:9;12418:3;12414:19;12410:30;12407:2;;;12453:1;12450;12443:12;12407:2;12471:20;12486:4;12471:20;;;12462:29;-1:-1;12543:1;12575:60;12631:3;12611:9;12575:60;;;12550:86;;-1:-1;12699:2;12732:60;12788:3;12764:22;;;12732:60;;;12725:4;12718:5;12714:16;12707:86;12657:147;12860:2;12893:59;12948:3;12939:6;12928:9;12924:22;12893:59;;;12886:4;12879:5;12875:16;12868:85;12814:150;12401:573;;;;;13705:464;;13813:4;13801:9;13796:3;13792:19;13788:30;13785:2;;;13831:1;13828;13821:12;13785:2;13849:20;13864:4;13849:20;;;13840:29;-1:-1;13920:1;13952:49;13997:3;13977:9;13952:49;;;13927:75;;-1:-1;14065:2;14098:49;14143:3;14119:22;;;14098:49;;;14091:4;14084:5;14080:16;14073:75;14023:136;13779:390;;;;;14705:2182;;14830:6;14818:9;14813:3;14809:19;14805:32;14802:2;;;14850:1;14847;14840:12;14802:2;14868:22;14883:6;14868:22;;;14859:31;-1:-1;14941:1;14973:60;15029:3;15009:9;14973:60;;;14948:86;;-1:-1;15100:2;15133:57;15186:3;15162:22;;;15133:57;;;15126:4;15119:5;15115:16;15108:83;15055:147;15256:2;15289:83;15368:3;15359:6;15348:9;15344:22;15289:83;;;15282:4;15275:5;15271:16;15264:109;15212:172;15435:3;15469:80;15545:3;15536:6;15525:9;15521:22;15469:80;;;15462:4;15455:5;15451:16;15444:106;15394:167;15618:3;15652:82;15730:3;15721:6;15710:9;15706:22;15652:82;;;15645:4;15638:5;15634:16;15627:108;15571:175;15806:3;15840:85;15921:3;15912:6;15901:9;15897:22;15840:85;;;15833:4;15826:5;15822:16;15815:111;15756:181;15996:3;16030:79;16105:3;16096:6;16085:9;16081:22;16030:79;;;16023:4;16016:5;16012:16;16005:105;15947:174;16191:3;16225:79;16300:3;16291:6;16280:9;16276:22;16225:79;;;16218:4;16211:5;16207:16;16200:105;16131:185;16374:3;16410:78;16484:3;16475:6;16464:9;16460:22;16410:78;;;16401:6;16394:5;16390:18;16383:106;16326:174;16558:3;16594:78;16668:3;16659:6;16648:9;16644:22;16594:78;;;16585:6;16578:5;16574:18;16567:106;16510:174;16750:3;16786:79;16861:3;16852:6;16841:9;16837:22;16786:79;;;16777:6;16770:5;16766:18;16759:107;16694:183;14796:2091;;;;;16925:472;;17040:4;17028:9;17023:3;17019:19;17015:30;17012:2;;;17058:1;17055;17048:12;17012:2;17076:20;17091:4;17076:20;;;17067:29;-1:-1;17150:1;17182:49;17227:3;17207:9;17182:49;;;17157:75;;-1:-1;17296:2;17329:46;17371:3;17347:22;;;17329:46;;17427:491;;17545:4;17533:9;17528:3;17524:19;17520:30;17517:2;;;17563:1;17560;17553:12;17517:2;17581:20;17596:4;17581:20;;;17572:29;-1:-1;17651:1;17683:57;17736:3;17716:9;17683:57;;;17658:83;;-1:-1;17803:2;17836:60;17892:3;17868:22;;;17836:60;;19240:1374;;19369:4;19357:9;19352:3;19348:19;19344:30;19341:2;;;19387:1;19384;19377:12;19341:2;19405:20;19420:4;19405:20;;;19396:29;-1:-1;19485:1;19517:59;19572:3;19552:9;19517:59;;;19492:85;;-1:-1;19654:2;19687:59;19742:3;19718:22;;;19687:59;;;19680:4;19673:5;19669:16;19662:85;19598:160;19819:2;19852:59;19907:3;19898:6;19887:9;19883:22;19852:59;;;19845:4;19838:5;19834:16;19827:85;19768:155;19985:2;20018:59;20073:3;20064:6;20053:9;20049:22;20018:59;;;20011:4;20004:5;20000:16;19993:85;19933:156;20162:3;20196:59;20251:3;20242:6;20231:9;20227:22;20196:59;;;20189:4;20182:5;20178:16;20171:85;20099:168;20328:3;20362:59;20417:3;20408:6;20397:9;20393:22;20362:59;;;20355:4;20348:5;20344:16;20337:85;20277:156;20498:3;20532:60;20588:3;20579:6;20568:9;20564:22;20532:60;;;20525:4;20518:5;20514:16;20507:86;20443:161;19335:1279;;;;;20649:502;;20772:4;20760:9;20755:3;20751:19;20747:30;20744:2;;;20790:1;20787;20780:12;20744:2;20808:20;20823:4;20808:20;;;20799:29;-1:-1;20880:1;20912:60;20968:3;20948:9;20912:60;;23001:491;;23119:4;23107:9;23102:3;23098:19;23094:30;23091:2;;;23137:1;23134;23127:12;23091:2;23155:20;23170:4;23155:20;;;23146:29;-1:-1;23225:1;23257:57;23310:3;23290:9;23257:57;;;23232:83;;-1:-1;23377:2;23410:60;23466:3;23442:22;;;23410:60;;24024:134;24102:13;;24120:33;24102:13;24120:33;;24165:134;24243:13;;24261:33;24243:13;24261:33;;24306:130;24373:20;;24398:33;24373:20;24398:33;;24443:134;24521:13;;24539:33;24521:13;24539:33;;24584:132;24661:13;;24679:32;24661:13;24679:32;;24723:132;24800:13;;24818:32;24800:13;24818:32;;24862:132;24939:13;;24957:32;24939:13;24957:32;;25001:241;;25105:2;25093:9;25084:7;25080:23;25076:32;25073:2;;;25121:1;25118;25111:12;25073:2;25156:1;25173:53;25218:7;25198:9;25173:53;;25249:263;;25364:2;25352:9;25343:7;25339:23;25335:32;25332:2;;;25380:1;25377;25370:12;25332:2;25415:1;25432:64;25488:7;25468:9;25432:64;;25519:366;;;25640:2;25628:9;25619:7;25615:23;25611:32;25608:2;;;25656:1;25653;25646:12;25608:2;25691:1;25708:53;25753:7;25733:9;25708:53;;;25698:63;;25670:97;25798:2;25816:53;25861:7;25852:6;25841:9;25837:22;25816:53;;;25806:63;;25777:98;25602:283;;;;;;25892:360;;;26010:2;25998:9;25989:7;25985:23;25981:32;25978:2;;;26026:1;26023;26016:12;25978:2;26061:1;26078:53;26123:7;26103:9;26078:53;;;26068:63;;26040:97;26168:2;26186:50;26228:7;26219:6;26208:9;26204:22;26186:50;;26259:438;;;26416:2;26404:9;26395:7;26391:23;26387:32;26384:2;;;26432:1;26429;26422:12;26384:2;26467:1;26484:53;26529:7;26509:9;26484:53;;;26474:63;;26446:97;26574:2;26592:89;26673:7;26664:6;26653:9;26649:22;26592:89;;26704:1473;;;;;;;;;;27057:3;27045:9;27036:7;27032:23;27028:33;27025:2;;;27074:1;27071;27064:12;27025:2;27109:1;27126:53;27171:7;27151:9;27126:53;;;27116:63;;27088:97;27216:2;27234:75;27301:7;27292:6;27281:9;27277:22;27234:75;;;27224:85;;27195:120;27346:2;27364:78;27434:7;27425:6;27414:9;27410:22;27364:78;;;27354:88;;27325:123;27479:2;27497:76;27565:7;27556:6;27545:9;27541:22;27497:76;;;27487:86;;27458:121;27610:3;27629:76;27697:7;27688:6;27677:9;27673:22;27629:76;;;27619:86;;27589:122;27742:3;27761:53;27806:7;27797:6;27786:9;27782:22;27761:53;;;27751:63;;27721:99;27851:3;27870:53;27915:7;27906:6;27895:9;27891:22;27870:53;;;27860:63;;27830:99;27960:3;27979:76;28047:7;28038:6;28027:9;28023:22;27979:76;;;27969:86;;27939:122;28092:3;28111:50;28153:7;28144:6;28133:9;28129:22;28111:50;;;28101:60;;28071:96;27019:1158;;;;;;;;;;;;28184:726;;;28399:2;28387:9;28378:7;28374:23;28370:32;28367:2;;;28415:1;28412;28405:12;28367:2;28450:31;;28501:18;28490:30;;28487:2;;;28533:1;28530;28523:12;28487:2;28553:97;28642:7;28633:6;28622:9;28618:22;28553:97;;;28543:107;;28429:227;28715:2;28704:9;28700:18;28687:32;28739:18;28731:6;28728:30;28725:2;;;28771:1;28768;28761:12;28725:2;28791:103;28886:7;28877:6;28866:9;28862:22;28791:103;;28917:429;;29072:2;29060:9;29051:7;29047:23;29043:32;29040:2;;;29088:1;29085;29078:12;29040:2;29123:31;;29174:18;29163:30;;29160:2;;;29206:1;29203;29196:12;29160:2;29226:104;29322:7;29313:6;29302:9;29298:22;29226:104;;29353:392;;29493:2;29481:9;29472:7;29468:23;29464:32;29461:2;;;29509:1;29506;29499:12;29461:2;29544:24;;29588:18;29577:30;;29574:2;;;29620:1;29617;29610:12;29574:2;29640:89;29721:7;29712:6;29701:9;29697:22;29640:89;;29752:1260;;;;;30054:3;30042:9;30033:7;30029:23;30025:33;30022:2;;;30071:1;30068;30061:12;30022:2;30106:24;;30150:18;30139:30;;30136:2;;;30182:1;30179;30172:12;30136:2;30202:89;30283:7;30274:6;30263:9;30259:22;30202:89;;;30192:99;;30085:212;30349:2;30338:9;30334:18;30328:25;30373:18;30365:6;30362:30;30359:2;;;30405:1;30402;30395:12;30359:2;30425:89;30506:7;30497:6;30486:9;30482:22;30425:89;;;30415:99;;30307:213;30572:2;30561:9;30557:18;30551:25;30596:18;30588:6;30585:30;30582:2;;;30628:1;30625;30618:12;30582:2;30648:107;30747:7;30738:6;30727:9;30723:22;30648:107;;;30638:117;;30530:231;30813:2;30802:9;30798:18;30792:25;30837:18;30829:6;30826:30;30823:2;;;30869:1;30866;30859:12;30823:2;30889:107;30988:7;30979:6;30968:9;30964:22;30889:107;;;30879:117;;30771:231;30016:996;;;;;;;;31019:257;;31131:2;31119:9;31110:7;31106:23;31102:32;31099:2;;;31147:1;31144;31137:12;31099:2;31182:1;31199:61;31252:7;31232:9;31199:61;;31283:313;;31423:2;31411:9;31402:7;31398:23;31394:32;31391:2;;;31439:1;31436;31429:12;31391:2;31474:1;31491:89;31572:7;31552:9;31491:89;;31603:335;;31754:2;31742:9;31733:7;31729:23;31725:32;31722:2;;;31770:1;31767;31760:12;31722:2;31805:1;31822:100;31914:7;31894:9;31822:100;;33197:287;;33324:2;33312:9;33303:7;33299:23;33295:32;33292:2;;;33340:1;33337;33330:12;33292:2;33375:1;33392:76;33460:7;33440:9;33392:76;;33491:287;;33618:2;33606:9;33597:7;33593:23;33589:32;33586:2;;;33634:1;33631;33624:12;33586:2;33669:1;33686:76;33754:7;33734:9;33686:76;;33785:309;;33923:2;33911:9;33902:7;33898:23;33894:32;33891:2;;;33939:1;33936;33929:12;33891:2;33974:1;33991:87;34070:7;34050:9;33991:87;;34101:491;;;34279:2;34267:9;34258:7;34254:23;34250:32;34247:2;;;34295:1;34292;34285:12;34247:2;34330:1;34347:87;34426:7;34406:9;34347:87;;;34337:97;;34309:131;34471:2;34489:87;34568:7;34559:6;34548:9;34544:22;34489:87;;34599:311;;34738:2;34726:9;34717:7;34713:23;34709:32;34706:2;;;34754:1;34751;34744:12;34706:2;34789:1;34806:88;34886:7;34866:9;34806:88;;34917:287;;35044:2;35032:9;35023:7;35019:23;35015:32;35012:2;;;35060:1;35057;35050:12;35012:2;35095:1;35112:76;35180:7;35160:9;35112:76;;35211:412;;;35355:2;35343:9;35334:7;35330:23;35326:32;35323:2;;;35371:1;35368;35361:12;35323:2;35406:1;35423:76;35491:7;35471:9;35423:76;;;35413:86;;35385:120;35536:2;35554:53;35599:7;35590:6;35579:9;35575:22;35554:53;;35630:538;;;;35791:3;35779:9;35770:7;35766:23;35762:33;35759:2;;;35808:1;35805;35798:12;35759:2;35843:1;35860:76;35928:7;35908:9;35860:76;;;35850:86;;35822:120;35973:2;35991:53;36036:7;36027:6;36016:9;36012:22;35991:53;;;35981:63;;35952:98;36081:2;36099:53;36144:7;36135:6;36124:9;36120:22;36099:53;;;36089:63;;36060:98;35753:415;;;;;;36175:314;;36315:3;36303:9;36294:7;36290:23;36286:33;36283:2;;;36332:1;36329;36322:12;36283:2;36367:1;36384:89;36465:7;36445:9;36384:89;;36496:867;;;;;36758:3;36746:9;36737:7;36733:23;36729:33;36726:2;;;36775:1;36772;36765:12;36726:2;36810:1;36827:89;36908:7;36888:9;36827:89;;;36817:99;;36789:133;36953:3;36972:88;37052:7;37043:6;37032:9;37028:22;36972:88;;;36962:98;;36932:134;37097:3;37116:88;37196:7;37187:6;37176:9;37172:22;37116:88;;;37106:98;;37076:134;37241:3;37260:87;37339:7;37330:6;37319:9;37315:22;37260:87;;37370:307;;37507:2;37495:9;37486:7;37482:23;37478:32;37475:2;;;37523:1;37520;37513:12;37475:2;37558:1;37575:86;37653:7;37633:9;37575:86;;38318:322;;38462:3;38450:9;38441:7;38437:23;38433:33;38430:2;;;38479:1;38476;38469:12;38430:2;38514:1;38531:93;38616:7;38596:9;38531:93;;38647:317;;38789:2;38777:9;38768:7;38764:23;38760:32;38757:2;;;38805:1;38802;38795:12;38757:2;38840:1;38857:91;38940:7;38920:9;38857:91;;40411:307;;40548:2;40536:9;40527:7;40523:23;40519:32;40516:2;;;40564:1;40561;40554:12;40516:2;40599:1;40616:86;40694:7;40674:9;40616:86;;40725:241;;40829:2;40817:9;40808:7;40804:23;40800:32;40797:2;;;40845:1;40842;40835:12;40797:2;40880:1;40897:53;40942:7;40922:9;40897:53;;40973:263;;41088:2;41076:9;41067:7;41063:23;41059:32;41056:2;;;41104:1;41101;41094:12;41056:2;41139:1;41156:64;41212:7;41192:9;41156:64;;41243:366;;;41364:2;41352:9;41343:7;41339:23;41335:32;41332:2;;;41380:1;41377;41370:12;41332:2;41415:1;41432:53;41477:7;41457:9;41432:53;;41616:360;;;41734:2;41722:9;41713:7;41709:23;41705:32;41702:2;;;41750:1;41747;41740:12;41702:2;41785:1;41802:53;41847:7;41827:9;41802:53;;41983:416;;;42129:2;42117:9;42108:7;42104:23;42100:32;42097:2;;;42145:1;42142;42135:12;42097:2;42180:1;42197:53;42242:7;42222:9;42197:53;;42823:412;;;42967:2;42955:9;42946:7;42942:23;42938:32;42935:2;;;42983:1;42980;42973:12;42935:2;43018:1;43035:53;43080:7;43060:9;43035:53;;;43025:63;;42997:97;43125:2;43143:76;43211:7;43202:6;43191:9;43187:22;43143:76;;43242:366;;;43363:2;43351:9;43342:7;43338:23;43334:32;43331:2;;;43379:1;43376;43369:12;43331:2;43414:1;43431:53;43476:7;43456:9;43431:53;;;43421:63;;43393:97;43521:2;43539:53;43584:7;43575:6;43564:9;43560:22;43539:53;;43616:173;;43703:46;43745:3;43737:6;43703:46;;;-1:-1;;43778:4;43769:14;;43696:93;43798:273;;43957:108;44061:3;44053:6;43957:108;;44080:269;;44213:96;44305:3;44297:6;44213:96;;;-1:-1;;44338:4;44329:14;;44206:143;44358:249;;44481:86;44563:3;44555:6;44481:86;;44616:249;;44739:86;44821:3;44813:6;44739:86;;44874:173;;44961:46;45003:3;44995:6;44961:46;;45055:103;45128:24;45146:5;45128:24;;;45123:3;45116:37;45110:48;;;45562:690;;45707:54;45755:5;45707:54;;;45774:86;45853:6;45848:3;45774:86;;;45767:93;;45881:56;45931:5;45881:56;;;45957:7;45985:1;45970:260;45995:6;45992:1;45989:13;45970:260;;;46062:6;46056:13;46083:63;46142:3;46127:13;46083:63;;;46076:70;;46163:60;46216:6;46163:60;;;46153:70;-1:-1;;46017:1;46010:9;45970:260;;;-1:-1;46243:3;;45686:566;-1:-1;;;;;45686:566;46327:1072;;46530:79;46603:5;46530:79;;;46622:119;46734:6;46729:3;46622:119;;;46615:126;;46764:3;46806:4;46798:6;46794:17;46789:3;46785:27;46833:81;46908:5;46833:81;;;46934:7;46962:1;46947:413;46972:6;46969:1;46966:13;46947:413;;;47034:9;47028:4;47024:20;47019:3;47012:33;47079:6;47073:13;47101:122;47218:4;47203:13;47101:122;;;47093:130;;47240:85;47318:6;47240:85;;;47348:4;47339:14;;;;;47230:95;-1:-1;;46994:1;46987:9;46947:413;;;-1:-1;47373:4;;46509:890;-1:-1;;;;;;;46509:890;47462:866;;47653:73;47720:5;47653:73;;;47739:113;47845:6;47840:3;47739:113;;;47732:120;;47873:75;47942:5;47873:75;;;47968:7;47996:1;47981:325;48006:6;48003:1;48000:13;47981:325;;;48073:6;48067:13;48094:109;48199:3;48184:13;48094:109;;;48087:116;;48220:79;48292:6;48220:79;;;48210:89;-1:-1;;48028:1;48021:9;47981:325;;48385:834;;48566:72;48632:5;48566:72;;;48651:104;48748:6;48743:3;48651:104;;;48644:111;;48776:74;48844:5;48776:74;;;48870:7;48898:1;48883:314;48908:6;48905:1;48902:13;48883:314;;;48975:6;48969:13;48996:99;49091:3;49076:13;48996:99;;;48989:106;;49112:78;49183:6;49112:78;;;49102:88;-1:-1;;48930:1;48923:9;48883:314;;49276:834;;49457:72;49523:5;49457:72;;;49542:104;49639:6;49634:3;49542:104;;;49535:111;;49667:74;49735:5;49667:74;;;49761:7;49789:1;49774:314;49799:6;49796:1;49793:13;49774:314;;;49866:6;49860:13;49887:99;49982:3;49967:13;49887:99;;;49880:106;;50003:78;50074:6;50003:78;;;49993:88;-1:-1;;49821:1;49814:9;49774:314;;50149:690;;50294:54;50342:5;50294:54;;;50361:86;50440:6;50435:3;50361:86;;;50354:93;;50468:56;50518:5;50468:56;;;50544:7;50572:1;50557:260;50582:6;50579:1;50576:13;50557:260;;;50649:6;50643:13;50670:63;50729:3;50714:13;50670:63;;;50663:70;;50750:60;50803:6;50750:60;;;50740:70;-1:-1;;50604:1;50597:9;50557:260;;50847:94;50914:21;50929:5;50914:21;;51287:331;;51391:34;51419:5;51391:34;;;51437:68;51498:6;51493:3;51437:68;;;51430:75;;51510:52;51555:6;51550:3;51543:4;51536:5;51532:16;51510:52;;;51583:29;51605:6;51583:29;;;51574:39;;;;51371:247;-1:-1;;;51371:247;51625:198;51744:73;51811:5;51744:73;;53493:152;53588:51;53633:5;53588:51;;53652:166;53754:58;53806:5;53754:58;;53992:146;54085:47;54126:5;54085:47;;54146:375;;54306:67;54370:2;54365:3;54306:67;;;54406:34;54386:55;;54475:8;54470:2;54461:12;;54454:30;54512:2;54503:12;;54292:229;-1:-1;;54292:229;54530:332;;54690:67;54754:2;54749:3;54690:67;;;54790:34;54770:55;;54853:2;54844:12;;54676:186;-1:-1;;54676:186;54871:331;;55031:67;55095:2;55090:3;55031:67;;;55131:33;55111:54;;55193:2;55184:12;;55017:185;-1:-1;;55017:185;55271:1688;55498:23;;55271:1688;;55424:6;55415:16;;;55527:85;55419:3;55498:23;55527:85;;;55446:172;55696:4;55689:5;55685:16;55679:23;55708:71;55773:4;55768:3;55764:14;55750:12;55708:71;;;55628:157;55860:4;55853:5;55849:16;55843:23;55872:127;55993:4;55988:3;55984:14;55970:12;55872:127;;;55795:210;56089:4;56082:5;56078:16;56072:23;56101:71;56166:4;56161:3;56157:14;56143:12;56101:71;;;56015:163;56264:4;56257:5;56253:16;56247:23;56276:71;56341:4;56336:3;56332:14;56318:12;56276:71;;;56188:165;56434:4;56427:5;56423:16;56417:23;56446:73;56511:6;56506:3;56502:16;56488:12;56446:73;;;56363:162;56608:4;56601:5;56597:16;56591:23;56620:73;56685:6;56680:3;56676:16;56662:12;56620:73;;;56535:164;56772:4;56765:5;56761:16;56755:23;56826:3;56820:4;56816:14;56807:6;56802:3;56798:16;56791:40;56846:75;56916:4;56902:12;56846:75;;;56838:83;55397:1562;-1:-1;;;;;55397:1562;57025:861;57238:23;;57172:4;57163:14;;;57267:65;57167:3;57238:23;57267:65;;;57192:146;57419:4;57412:5;57408:16;57402:23;57431:92;57517:4;57512:3;57508:14;57494:12;57431:92;;;57348:181;57601:4;57594:5;57590:16;57584:23;57613:89;57696:4;57691:3;57687:14;57673:12;57613:89;;;57539:169;57782:4;57775:5;57771:16;57765:23;57794:71;57859:4;57854:3;57850:14;57836:12;57794:71;;;57718:153;57145:741;;;;57942:319;58148:23;;58081:4;58072:14;;;58177:63;58076:3;58148:23;58177:63;;59073:636;59282:23;;59214:4;59205:14;;;59311:63;59209:3;59282:23;59311:63;;;59234:146;59455:4;59448:5;59444:16;59438:23;59467:63;59524:4;59519:3;59515:14;59501:12;59467:63;;;59390:146;59615:4;59608:5;59604:16;59598:23;59627:61;59682:4;59677:3;59673:14;59659:12;59627:61;;60447:499;60661:23;;60594:4;60585:14;;;60690:71;60589:3;60661:23;60690:71;;;60614:153;60842:4;60835:5;60831:16;60825:23;60854:71;60919:4;60914:3;60910:14;60896:12;60854:71;;61547:2312;61759:23;;61690:6;61681:16;;;61788:63;61685:3;61759:23;61788:63;;;61712:145;61935:4;61928:5;61924:16;61918:23;61947:57;61998:4;61993:3;61989:14;61975:12;61947:57;;;61867:143;62087:4;62080:5;62076:16;62070:23;62099:113;62206:4;62201:3;62197:14;62183:12;62099:113;;;62020:198;62292:4;62285:5;62281:16;62275:23;62304:107;62405:4;62400:3;62396:14;62382:12;62304:107;;;62228:189;62497:4;62490:5;62486:16;62480:23;62509:85;62588:4;62583:3;62579:14;62565:12;62509:85;;;62427:173;62683:4;62676:5;62672:16;62666:23;62695:90;62777:6;62772:3;62768:16;62754:12;62695:90;;;62610:181;62873:4;62866:5;62862:16;62856:23;62885:107;62984:6;62979:3;62975:16;62961:12;62885:107;;;62801:197;63091:4;63084:5;63080:16;63074:23;63103:107;63202:6;63197:3;63193:16;63179:12;63103:107;;;63008:208;63297:6;63290:5;63286:18;63280:25;63311:105;63408:6;63403:3;63399:16;63385:12;63311:105;;;63226:196;63503:6;63496:5;63492:18;63486:25;63517:105;63614:6;63609:3;63605:16;63591:12;63517:105;;;63432:196;63717:6;63710:5;63706:18;63700:25;63731:107;63830:6;63825:3;63821:16;63807:12;63731:107;;63909:465;64112:23;;64046:4;64037:14;;;64141:57;64041:3;64112:23;64141:57;;;64066:138;64278:4;64271:5;64267:16;64261:23;64290:63;64347:4;64342:3;64338:14;64324:12;64290:63;;65701:1340;65928:23;;65852:4;65843:14;;;65957:61;65847:3;65928:23;65957:61;;;65872:152;66113:4;66106:5;66102:16;66096:23;66125:61;66180:4;66175:3;66171:14;66157:12;66125:61;;;66034:158;66276:4;66269:5;66265:16;66259:23;66288:61;66343:4;66338:3;66334:14;66320:12;66288:61;;;66202:153;66440:4;66433:5;66429:16;66423:23;66452:61;66507:4;66502:3;66498:14;66484:12;66452:61;;;66365:154;66615:4;66608:5;66604:16;66598:23;66627:61;66682:4;66677:3;66673:14;66659:12;66627:61;;;66529:165;66778:4;66771:5;66767:16;66761:23;66790:61;66845:4;66840:3;66836:14;66822:12;66790:61;;;66704:153;66945:4;66938:5;66934:16;66928:23;66957:63;67014:4;67009:3;67005:14;66991:12;66957:63;;67048:123;67148:18;;67142:29;67231:484;67446:23;;67378:4;67369:14;;;67475:63;67373:3;67446:23;67475:63;;69617:465;69820:23;;69754:4;69745:14;;;69849:57;69749:3;69820:23;69849:57;;70590:103;70663:24;70681:5;70663:24;;70700:103;70773:24;70791:5;70773:24;;70810:103;70883:24;70901:5;70883:24;;71286:100;71357:23;71374:5;71357:23;;71393:100;71464:23;71481:5;71464:23;;71500:100;71571:23;71588:5;71571:23;;71607:213;71725:2;71710:18;;71739:71;71714:9;71783:6;71739:71;;71827:312;71967:2;71952:18;;71981:71;71956:9;72025:6;71981:71;;;72063:66;72125:2;72114:9;72110:18;72101:6;72063:66;;72146:361;72314:2;72328:47;;;72299:18;;72389:108;72299:18;72483:6;72389:108;;72514:1283;72988:3;73003:47;;;72973:19;;73064:108;72973:19;73158:6;73064:108;;;73056:116;;73220:9;73214:4;73210:20;73205:2;73194:9;73190:18;73183:48;73245:108;73348:4;73339:6;73245:108;;;73237:116;;73401:9;73395:4;73391:20;73386:2;73375:9;73371:18;73364:48;73426:144;73565:4;73556:6;73426:144;;;73418:152;;73618:9;73612:4;73608:20;73603:2;73592:9;73588:18;73581:48;73643:144;73782:4;73773:6;73643:144;;;73635:152;72959:838;-1:-1;;;;;;72959:838;73804:201;73916:2;73901:18;;73930:65;73905:9;73968:6;73930:65;;74012:285;74166:2;74151:18;;74180:107;74155:9;74260:6;74180:107;;75108:233;75236:2;75221:18;;75250:81;75225:9;75304:6;75250:81;;75348:407;75539:2;75553:47;;;75524:18;;75614:131;75524:18;75614:131;;75762:407;75953:2;75967:47;;;75938:18;;76028:131;75938:18;76028:131;;76176:407;76367:2;76381:47;;;76352:18;;76442:131;76352:18;76442:131;;76590:305;76754:2;76739:18;;76768:117;76743:9;76858:6;76768:117;;76902:508;77140:2;77125:18;;77154:117;77129:9;77244:6;77154:117;;;77282:118;77396:2;77385:9;77381:18;77372:6;77282:118;;77417:309;77583:2;77568:18;;77597:119;77572:9;77689:6;77597:119;;77733:314;77901:3;77886:19;;77916:121;77890:9;78010:6;77916:121;;78054:934;78448:3;78433:19;;78463:121;78437:9;78557:6;78463:121;;;78595;78711:3;78700:9;78696:19;78687:6;78595:121;;;78727;78843:3;78832:9;78828:19;78819:6;78727:121;;;78859:119;78973:3;78962:9;78958:19;78949:6;78859:119;;78995:301;79157:2;79142:18;;79171:115;79146:9;79259:6;79171:115;;79931:330;80107:3;80092:19;;80122:129;80096:9;80224:6;80122:129;;80268:271;80415:2;80400:18;;80429:100;80404:9;80502:6;80429:100;;80546:390;80721:2;80706:18;;80735:100;80710:9;80808:6;80735:100;;;80846:80;80922:2;80911:9;80907:18;80898:6;80846:80;;80943:509;81146:2;81131:18;;81160:100;81135:9;81233:6;81160:100;;;81271:80;81347:2;81336:9;81332:18;81323:6;81271:80;;;81362;81438:2;81427:9;81423:18;81414:6;81362:80;;81459:497;81656:2;81641:18;;81670:100;81645:9;81743:6;81670:100;;;81781:80;81857:2;81846:9;81842:18;81833:6;81781:80;;;81872:74;81942:2;81931:9;81927:18;81918:6;81872:74;;81963:581;82202:2;82187:18;;82216:100;82191:9;82289:6;82216:100;;;82327:80;82403:2;82392:9;82388:18;82379:6;82327:80;;;82418:116;82530:2;82519:9;82515:18;82506:6;82418:116;;82551:1707;83129:3;83114:19;;83144:100;83118:9;83217:6;83144:100;;;83255:80;83331:2;83320:9;83316:18;83307:6;83255:80;;;83346:102;83444:2;83433:9;83429:18;83420:6;83346:102;;;83459:105;83560:2;83549:9;83545:18;83536:6;83459:105;;;83575:127;83697:3;83686:9;83682:19;83673:6;83575:127;;;83713;83835:3;83824:9;83820:19;83811:6;83713:127;;;83851:81;83927:3;83916:9;83912:19;83903:6;83851:81;;;83943;84019:3;84008:9;84004:19;83995:6;83943:81;;;84035:127;84157:3;84146:9;84142:19;84133:6;84035:127;;;84173:75;84243:3;84232:9;84228:19;84219:6;84173:75;;;83100:1158;;;;;;;;;;;;;;84265:981;84656:2;84641:18;;84670:100;84645:9;84743:6;84670:100;;;84818:9;84812:4;84808:20;84803:2;84792:9;84788:18;84781:48;84843:154;84992:4;84983:6;84843:154;;;84835:162;;85045:9;85039:4;85035:20;85030:2;85019:9;85015:18;85008:48;85070:166;85231:4;85222:6;85070:166;;85253:462;85464:2;85449:18;;85478:100;85453:9;85551:6;85478:100;;;85589:116;85701:2;85690:9;85686:18;85677:6;85589:116;;86169:482;86390:2;86375:18;;86404:100;86379:9;86477:6;86404:100;;86658:482;86879:2;86864:18;;86893:100;86868:9;86966:6;86893:100;;;87004:126;87126:2;87115:9;87111:18;87102:6;87004:126;;87147:602;87396:3;87381:19;;87411:100;87385:9;87484:6;87411:100;;;87522:126;87644:2;87633:9;87629:18;87620:6;87522:126;;;87659:80;87735:2;87724:9;87720:18;87711:6;87659:80;;87756:722;88033:3;88018:19;;88048:100;88022:9;88121:6;88048:100;;;88159:126;88281:2;88270:9;88266:18;88257:6;88159:126;;;88296:80;88372:2;88361:9;88357:18;88348:6;88296:80;;;88387:81;88463:3;88452:9;88448:19;88439:6;88387:81;;88978:390;89153:2;89138:18;;89167:100;89142:9;89240:6;89167:100;;;89278:80;89354:2;89343:9;89339:18;89330:6;89278:80;;89375:509;89578:2;89563:18;;89592:100;89567:9;89665:6;89592:100;;;89703:80;89779:2;89768:9;89764:18;89755:6;89703:80;;89891:497;90088:2;90073:18;;90102:100;90077:9;90175:6;90102:100;;;90213:80;90289:2;90278:9;90274:18;90265:6;90213:80;;90395:559;90623:2;90608:18;;90637:100;90612:9;90710:6;90637:100;;;90748:80;90824:2;90813:9;90809:18;90800:6;90748:80;;91521:601;91770:2;91755:18;;91784:100;91759:9;91857:6;91784:100;;;91895:80;91971:2;91960:9;91956:18;91947:6;91895:80;;;91986:126;92108:2;92097:9;92093:18;92084:6;91986:126;;92129:509;92332:2;92317:18;;92346:100;92321:9;92419:6;92346:100;;;92457:80;92533:2;92522:9;92518:18;92509:6;92457:80;;;92548;92624:2;92613:9;92609:18;92600:6;92548:80;;92645:321;92817:2;92802:18;;92831:125;92806:9;92929:6;92831:125;;94140:301;94302:2;94287:18;;94316:115;94291:9;94404:6;94316:115;;94448:213;94566:2;94551:18;;94580:71;94555:9;94624:6;94580:71;;94668:256;94730:2;94724:9;94756:17;;;94831:18;94816:34;;94852:22;;;94813:62;94810:2;;;94888:1;94885;94878:12;94810:2;94904;94897:22;94708:216;;-1:-1;94708:216;94931:304;;95090:18;95082:6;95079:30;95076:2;;;95122:1;95119;95112:12;95076:2;-1:-1;95157:4;95145:17;;;95210:15;;95013:222;97214:317;;97353:18;97345:6;97342:30;97339:2;;;97385:1;97382;97375:12;97339:2;-1:-1;97516:4;97452;97429:17;;;;97448:9;97425:33;97506:15;;97276:255;97538:151;97662:4;97653:14;;97610:79;98566:137;98669:12;;98640:63;100405:178;100523:19;;;100572:4;100563:14;;100516:67;101963:91;;102025:24;102043:5;102025:24;;102061:85;102127:13;102120:21;;102103:43;102153:127;;102251:24;102269:5;102251:24;;102653:138;102731:5;102737:49;102731:5;102737:49;;102798:152;102883:5;102889:56;102883:5;102889:56;;103110:130;103184:5;103190:45;103184:5;103190:45;;103247:109;103320:30;103309:42;;103292:64;103363:113;103436:34;103425:46;;103408:68;103483:121;103556:42;103545:54;;103528:76;103611:72;103673:5;103656:27;103690:88;103762:10;103751:22;;103734:44;103785:96;103857:18;103846:30;;103829:52;103888:104;103960:26;103949:38;;103932:60;105295:138;;105388:40;105422:5;105388:40;;105440:152;;105540:47;105581:5;105540:47;;105752:130;;105841:36;105871:5;105841:36;;105890:145;105971:6;105966:3;105961;105948:30;-1:-1;106027:1;106009:16;;106002:27;105941:94;106044:268;106109:1;106116:101;106130:6;106127:1;106124:13;106116:101;;;106197:11;;;106191:18;106178:11;;;106171:39;106152:2;106145:10;106116:101;;;106232:6;106229:1;106226:13;106223:2;;;-1:-1;;106297:1;106279:16;;106272:27;106093:219;106320:97;106408:2;106388:14;106404:7;106384:28;;106368:49;106425:107;106510:1;106503:5;106500:12;106490:2;;106516:9;106539:114;106631:1;106624:5;106621:12;106611:2;;106637:9;106778:103;106859:1;106852:5;106849:12;106839:2;;106865:9;106888:117;106957:24;106975:5;106957:24;;;106950:5;106947:35;106937:2;;106996:1;106993;106986:12;107012:111;107078:21;107093:5;107078:21;;107130:189;107235:60;107289:5;107235:60;;107842:110;107927:1;107920:5;107917:12;107907:2;;107943:1;107940;107933:12;107959:117;108051:1;108044:5;108041:12;108031:2;;108067:1;108064;108057:12;108204:106;108285:1;108278:5;108275:12;108265:2;;108301:1;108298;108291:12;108317:117;108386:24;108404:5;108386:24;;108441:117;108510:24;108528:5;108510:24;;108565:117;108634:24;108652:5;108634:24;;108689:115;108757:23;108774:5;108757:23;;108811:115;108879:23;108896:5;108879:23;;108933:115;109001:23;109018:5;109001:23;",
  "source": "/*\n\n    Copyright 2019 dYdX Trading Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { Admin } from \"./Admin.sol\";\nimport { Getters } from \"./Getters.sol\";\nimport { Operation } from \"./Operation.sol\";\nimport { Permission } from \"./Permission.sol\";\n\nimport { AdminImpl } from \"./impl/AdminImpl.sol\";\n\nimport { IDolomiteMargin } from \"./interfaces/IDolomiteMargin.sol\";\nimport { IOracleSentinel } from \"./interfaces/IOracleSentinel.sol\";\n\nimport { Decimal } from \"./lib/Decimal.sol\";\nimport { Monetary } from \"./lib/Monetary.sol\";\nimport { Storage } from \"./lib/Storage.sol\";\n\n\n/**\n * @title DolomiteMargin\n * @author dYdX\n *\n * Main contract that inherits from other contracts\n */\ncontract DolomiteMargin is\n    IDolomiteMargin,\n    Admin,\n    Getters,\n    Operation,\n    Permission\n{\n    // ============ Constructor ============\n\n    constructor(\n        Storage.RiskLimits memory riskLimits,\n        Decimal.D256 memory marginRatio,\n        Decimal.D256 memory liquidationSpread,\n        Decimal.D256 memory earningsRate,\n        Monetary.Value memory minBorrowedValue,\n        uint256 accountMaxNumberOfMarketsWithBalances,\n        IOracleSentinel oracleSentinel,\n        uint256 callbackGasLimit\n    )\n        public\n    {\n        g_state.riskLimits = riskLimits;\n        AdminImpl.ownerSetMarginRatio(g_state, marginRatio);\n        AdminImpl.ownerSetLiquidationSpread(g_state, liquidationSpread);\n        AdminImpl.ownerSetEarningsRate(g_state, earningsRate);\n        AdminImpl.ownerSetMinBorrowedValue(g_state, minBorrowedValue);\n        AdminImpl.ownerSetAccountMaxNumberOfMarketsWithBalances(g_state, accountMaxNumberOfMarketsWithBalances);\n        AdminImpl.ownerSetOracleSentinel(g_state, oracleSentinel);\n        AdminImpl.ownerSetCallbackGasLimit(g_state, callbackGasLimit);\n        _transferOwnership(tx.origin);\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
    "exportedSymbols": {
      "DolomiteMargin": [
        17219
      ]
    },
    "id": 17220,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17107,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:63"
      },
      {
        "id": 17108,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:63"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Admin.sol",
        "file": "./Admin.sol",
        "id": 17110,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 17106,
        "src": "662:36:63",
        "symbolAliases": [
          {
            "foreign": 17109,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Getters.sol",
        "file": "./Getters.sol",
        "id": 17112,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18063,
        "src": "699:40:63",
        "symbolAliases": [
          {
            "foreign": 17111,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Operation.sol",
        "file": "./Operation.sol",
        "id": 17114,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18109,
        "src": "740:44:63",
        "symbolAliases": [
          {
            "foreign": 17113,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Permission.sol",
        "file": "./Permission.sol",
        "id": 17116,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18185,
        "src": "785:46:63",
        "symbolAliases": [
          {
            "foreign": 17115,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol",
        "file": "./impl/AdminImpl.sol",
        "id": 17118,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 19548,
        "src": "833:49:63",
        "symbolAliases": [
          {
            "foreign": 17117,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "./interfaces/IDolomiteMargin.sol",
        "id": 17120,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 24694,
        "src": "884:67:63",
        "symbolAliases": [
          {
            "foreign": 17119,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol",
        "file": "./interfaces/IOracleSentinel.sol",
        "id": 17122,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 24818,
        "src": "952:67:63",
        "symbolAliases": [
          {
            "foreign": 17121,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "./lib/Decimal.sol",
        "id": 17124,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 26024,
        "src": "1021:44:63",
        "symbolAliases": [
          {
            "foreign": 17123,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "./lib/Monetary.sol",
        "id": 17126,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 27761,
        "src": "1066:46:63",
        "symbolAliases": [
          {
            "foreign": 17125,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "./lib/Storage.sol",
        "id": 17128,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 30712,
        "src": "1113:44:63",
        "symbolAliases": [
          {
            "foreign": 17127,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17129,
              "name": "IDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24693,
              "src": "1295:15:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                "typeString": "contract IDolomiteMargin"
              }
            },
            "id": 17130,
            "nodeType": "InheritanceSpecifier",
            "src": "1295:15:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17131,
              "name": "Admin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 17105,
              "src": "1316:5:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Admin_$17105",
                "typeString": "contract Admin"
              }
            },
            "id": 17132,
            "nodeType": "InheritanceSpecifier",
            "src": "1316:5:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17133,
              "name": "Getters",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18062,
              "src": "1327:7:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Getters_$18062",
                "typeString": "contract Getters"
              }
            },
            "id": 17134,
            "nodeType": "InheritanceSpecifier",
            "src": "1327:7:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17135,
              "name": "Operation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18108,
              "src": "1340:9:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Operation_$18108",
                "typeString": "contract Operation"
              }
            },
            "id": 17136,
            "nodeType": "InheritanceSpecifier",
            "src": "1340:9:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17137,
              "name": "Permission",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18184,
              "src": "1355:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Permission_$18184",
                "typeString": "contract Permission"
              }
            },
            "id": 17138,
            "nodeType": "InheritanceSpecifier",
            "src": "1355:10:63"
          }
        ],
        "contractDependencies": [
          17105,
          18062,
          18070,
          18108,
          18184,
          24693,
          37109,
          37483,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title DolomiteMargin\n@author dYdX\n * Main contract that inherits from other contracts",
        "fullyImplemented": true,
        "id": 17219,
        "linearizedBaseContracts": [
          17219,
          18184,
          18108,
          18062,
          17105,
          38092,
          37483,
          37109,
          18070,
          24693
        ],
        "name": "DolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 17217,
              "nodeType": "Block",
              "src": "1808:606:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17157,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1818:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      "id": 17159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "riskLimits",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28759,
                      "src": "1818:18:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskLimits_$28725_storage",
                        "typeString": "struct Storage.RiskLimits storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17160,
                      "name": "riskLimits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17140,
                      "src": "1839:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                        "typeString": "struct Storage.RiskLimits memory"
                      }
                    },
                    "src": "1818:31:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage",
                      "typeString": "struct Storage.RiskLimits storage ref"
                    }
                  },
                  "id": 17162,
                  "nodeType": "ExpressionStatement",
                  "src": "1818:31:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17166,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1889:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17167,
                        "name": "marginRatio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17142,
                        "src": "1898:11:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17163,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1859:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetMarginRatio",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18832,
                      "src": "1859:29:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1859:51:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17169,
                  "nodeType": "ExpressionStatement",
                  "src": "1859:51:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17173,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1956:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17174,
                        "name": "liquidationSpread",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17144,
                        "src": "1965:17:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17170,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1920:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetLiquidationSpread",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18879,
                      "src": "1920:35:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1920:63:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17176,
                  "nodeType": "ExpressionStatement",
                  "src": "1920:63:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17180,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2024:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17181,
                        "name": "earningsRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17146,
                        "src": "2033:12:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17177,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1993:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetEarningsRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18912,
                      "src": "1993:30:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1993:53:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17183,
                  "nodeType": "ExpressionStatement",
                  "src": "1993:53:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17187,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2091:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17188,
                        "name": "minBorrowedValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17148,
                        "src": "2100:16:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                          "typeString": "struct Monetary.Value memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                          "typeString": "struct Monetary.Value memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17184,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2056:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetMinBorrowedValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18945,
                      "src": "2056:34:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Value_$27759_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Monetary.Value memory)"
                      }
                    },
                    "id": 17189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2056:61:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17190,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:61:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17194,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2183:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17195,
                        "name": "accountMaxNumberOfMarketsWithBalances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17150,
                        "src": "2192:37:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17191,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2127:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetAccountMaxNumberOfMarketsWithBalances",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18985,
                      "src": "2127:55:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256)"
                      }
                    },
                    "id": 17196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2127:103:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17197,
                  "nodeType": "ExpressionStatement",
                  "src": "2127:103:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17201,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2273:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17202,
                        "name": "oracleSentinel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17152,
                        "src": "2282:14:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                          "typeString": "contract IOracleSentinel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                          "typeString": "contract IOracleSentinel"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17198,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2240:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetOracleSentinel",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19019,
                      "src": "2240:32:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_contract$_IOracleSentinel_$24817_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,contract IOracleSentinel)"
                      }
                    },
                    "id": 17203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2240:57:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17204,
                  "nodeType": "ExpressionStatement",
                  "src": "2240:57:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17208,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2342:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17209,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17154,
                        "src": "2351:16:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17205,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2307:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetCallbackGasLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19039,
                      "src": "2307:34:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256)"
                      }
                    },
                    "id": 17210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2307:61:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17211,
                  "nodeType": "ExpressionStatement",
                  "src": "2307:61:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17213,
                          "name": "tx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38119,
                          "src": "2397:2:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_transaction",
                            "typeString": "tx"
                          }
                        },
                        "id": 17214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "origin",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2397:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 17212,
                      "name": "_transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37482,
                      "src": "2378:18:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2378:29:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17216,
                  "nodeType": "ExpressionStatement",
                  "src": "2378:29:63"
                }
              ]
            },
            "documentation": null,
            "id": 17218,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17140,
                  "name": "riskLimits",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1439:36:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                    "typeString": "struct Storage.RiskLimits"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17139,
                    "name": "Storage.RiskLimits",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28725,
                    "src": "1439:18:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage_ptr",
                      "typeString": "struct Storage.RiskLimits"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17142,
                  "name": "marginRatio",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1485:31:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17141,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1485:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17144,
                  "name": "liquidationSpread",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1526:37:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17143,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1526:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17146,
                  "name": "earningsRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1573:32:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17145,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1573:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17148,
                  "name": "minBorrowedValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1615:38:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                    "typeString": "struct Monetary.Value"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17147,
                    "name": "Monetary.Value",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27759,
                    "src": "1615:14:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_storage_ptr",
                      "typeString": "struct Monetary.Value"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17150,
                  "name": "accountMaxNumberOfMarketsWithBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1663:45:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17152,
                  "name": "oracleSentinel",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1718:30:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                    "typeString": "contract IOracleSentinel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17151,
                    "name": "IOracleSentinel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24817,
                    "src": "1718:15:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17154,
                  "name": "callbackGasLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1758:24:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1758:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1429:359:63"
            },
            "returnParameters": {
              "id": 17156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1808:0:63"
            },
            "scope": 17219,
            "src": "1418:996:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 17220,
        "src": "1264:1152:63"
      }
    ],
    "src": "603:1814:63"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
    "exportedSymbols": {
      "DolomiteMargin": [
        17219
      ]
    },
    "id": 17220,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17107,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:63"
      },
      {
        "id": 17108,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:63"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Admin.sol",
        "file": "./Admin.sol",
        "id": 17110,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 17106,
        "src": "662:36:63",
        "symbolAliases": [
          {
            "foreign": 17109,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Getters.sol",
        "file": "./Getters.sol",
        "id": 17112,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18063,
        "src": "699:40:63",
        "symbolAliases": [
          {
            "foreign": 17111,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Operation.sol",
        "file": "./Operation.sol",
        "id": 17114,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18109,
        "src": "740:44:63",
        "symbolAliases": [
          {
            "foreign": 17113,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Permission.sol",
        "file": "./Permission.sol",
        "id": 17116,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 18185,
        "src": "785:46:63",
        "symbolAliases": [
          {
            "foreign": 17115,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol",
        "file": "./impl/AdminImpl.sol",
        "id": 17118,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 19548,
        "src": "833:49:63",
        "symbolAliases": [
          {
            "foreign": 17117,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol",
        "file": "./interfaces/IDolomiteMargin.sol",
        "id": 17120,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 24694,
        "src": "884:67:63",
        "symbolAliases": [
          {
            "foreign": 17119,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol",
        "file": "./interfaces/IOracleSentinel.sol",
        "id": 17122,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 24818,
        "src": "952:67:63",
        "symbolAliases": [
          {
            "foreign": 17121,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "./lib/Decimal.sol",
        "id": 17124,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 26024,
        "src": "1021:44:63",
        "symbolAliases": [
          {
            "foreign": 17123,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "./lib/Monetary.sol",
        "id": 17126,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 27761,
        "src": "1066:46:63",
        "symbolAliases": [
          {
            "foreign": 17125,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "./lib/Storage.sol",
        "id": 17128,
        "nodeType": "ImportDirective",
        "scope": 17220,
        "sourceUnit": 30712,
        "src": "1113:44:63",
        "symbolAliases": [
          {
            "foreign": 17127,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17129,
              "name": "IDolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24693,
              "src": "1295:15:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IDolomiteMargin_$24693",
                "typeString": "contract IDolomiteMargin"
              }
            },
            "id": 17130,
            "nodeType": "InheritanceSpecifier",
            "src": "1295:15:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17131,
              "name": "Admin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 17105,
              "src": "1316:5:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Admin_$17105",
                "typeString": "contract Admin"
              }
            },
            "id": 17132,
            "nodeType": "InheritanceSpecifier",
            "src": "1316:5:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17133,
              "name": "Getters",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18062,
              "src": "1327:7:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Getters_$18062",
                "typeString": "contract Getters"
              }
            },
            "id": 17134,
            "nodeType": "InheritanceSpecifier",
            "src": "1327:7:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17135,
              "name": "Operation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18108,
              "src": "1340:9:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Operation_$18108",
                "typeString": "contract Operation"
              }
            },
            "id": 17136,
            "nodeType": "InheritanceSpecifier",
            "src": "1340:9:63"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 17137,
              "name": "Permission",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 18184,
              "src": "1355:10:63",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Permission_$18184",
                "typeString": "contract Permission"
              }
            },
            "id": 17138,
            "nodeType": "InheritanceSpecifier",
            "src": "1355:10:63"
          }
        ],
        "contractDependencies": [
          17105,
          18062,
          18070,
          18108,
          18184,
          24693,
          37109,
          37483,
          38092
        ],
        "contractKind": "contract",
        "documentation": "@title DolomiteMargin\n@author dYdX\n * Main contract that inherits from other contracts",
        "fullyImplemented": true,
        "id": 17219,
        "linearizedBaseContracts": [
          17219,
          18184,
          18108,
          18062,
          17105,
          38092,
          37483,
          37109,
          18070,
          24693
        ],
        "name": "DolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 17217,
              "nodeType": "Block",
              "src": "1808:606:63",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17157,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1818:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      "id": 17159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "riskLimits",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28759,
                      "src": "1818:18:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskLimits_$28725_storage",
                        "typeString": "struct Storage.RiskLimits storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17160,
                      "name": "riskLimits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17140,
                      "src": "1839:10:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                        "typeString": "struct Storage.RiskLimits memory"
                      }
                    },
                    "src": "1818:31:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage",
                      "typeString": "struct Storage.RiskLimits storage ref"
                    }
                  },
                  "id": 17162,
                  "nodeType": "ExpressionStatement",
                  "src": "1818:31:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17166,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1889:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17167,
                        "name": "marginRatio",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17142,
                        "src": "1898:11:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17163,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1859:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetMarginRatio",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18832,
                      "src": "1859:29:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17168,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1859:51:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17169,
                  "nodeType": "ExpressionStatement",
                  "src": "1859:51:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17173,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "1956:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17174,
                        "name": "liquidationSpread",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17144,
                        "src": "1965:17:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17170,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1920:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetLiquidationSpread",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18879,
                      "src": "1920:35:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1920:63:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17176,
                  "nodeType": "ExpressionStatement",
                  "src": "1920:63:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17180,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2024:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17181,
                        "name": "earningsRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17146,
                        "src": "2033:12:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                          "typeString": "struct Decimal.D256 memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17177,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "1993:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17179,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetEarningsRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18912,
                      "src": "1993:30:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_D256_$25950_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Decimal.D256 memory)"
                      }
                    },
                    "id": 17182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1993:53:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17183,
                  "nodeType": "ExpressionStatement",
                  "src": "1993:53:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17187,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2091:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17188,
                        "name": "minBorrowedValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17148,
                        "src": "2100:16:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                          "typeString": "struct Monetary.Value memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                          "typeString": "struct Monetary.Value memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17184,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2056:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17186,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetMinBorrowedValue",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18945,
                      "src": "2056:34:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Value_$27759_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Monetary.Value memory)"
                      }
                    },
                    "id": 17189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2056:61:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17190,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:61:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17194,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2183:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17195,
                        "name": "accountMaxNumberOfMarketsWithBalances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17150,
                        "src": "2192:37:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17191,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2127:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetAccountMaxNumberOfMarketsWithBalances",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18985,
                      "src": "2127:55:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256)"
                      }
                    },
                    "id": 17196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2127:103:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17197,
                  "nodeType": "ExpressionStatement",
                  "src": "2127:103:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17201,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2273:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17202,
                        "name": "oracleSentinel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17152,
                        "src": "2282:14:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                          "typeString": "contract IOracleSentinel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                          "typeString": "contract IOracleSentinel"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17198,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2240:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetOracleSentinel",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19019,
                      "src": "2240:32:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_contract$_IOracleSentinel_$24817_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,contract IOracleSentinel)"
                      }
                    },
                    "id": 17203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2240:57:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17204,
                  "nodeType": "ExpressionStatement",
                  "src": "2240:57:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17208,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2342:7:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 17209,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17154,
                        "src": "2351:16:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17205,
                        "name": "AdminImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19547,
                        "src": "2307:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AdminImpl_$19547_$",
                          "typeString": "type(library AdminImpl)"
                        }
                      },
                      "id": 17207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerSetCallbackGasLimit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 19039,
                      "src": "2307:34:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256)"
                      }
                    },
                    "id": 17210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2307:61:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17211,
                  "nodeType": "ExpressionStatement",
                  "src": "2307:61:63"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17213,
                          "name": "tx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38119,
                          "src": "2397:2:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_transaction",
                            "typeString": "tx"
                          }
                        },
                        "id": 17214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "origin",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2397:9:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 17212,
                      "name": "_transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37482,
                      "src": "2378:18:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2378:29:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17216,
                  "nodeType": "ExpressionStatement",
                  "src": "2378:29:63"
                }
              ]
            },
            "documentation": null,
            "id": 17218,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17140,
                  "name": "riskLimits",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1439:36:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                    "typeString": "struct Storage.RiskLimits"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17139,
                    "name": "Storage.RiskLimits",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28725,
                    "src": "1439:18:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage_ptr",
                      "typeString": "struct Storage.RiskLimits"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17142,
                  "name": "marginRatio",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1485:31:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17141,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1485:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17144,
                  "name": "liquidationSpread",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1526:37:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17143,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1526:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17146,
                  "name": "earningsRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1573:32:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17145,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1573:12:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17148,
                  "name": "minBorrowedValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1615:38:63",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                    "typeString": "struct Monetary.Value"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17147,
                    "name": "Monetary.Value",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27759,
                    "src": "1615:14:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_storage_ptr",
                      "typeString": "struct Monetary.Value"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17150,
                  "name": "accountMaxNumberOfMarketsWithBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1663:45:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1663:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17152,
                  "name": "oracleSentinel",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1718:30:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                    "typeString": "contract IOracleSentinel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17151,
                    "name": "IOracleSentinel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24817,
                    "src": "1718:15:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17154,
                  "name": "callbackGasLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 17218,
                  "src": "1758:24:63",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1758:7:63",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1429:359:63"
            },
            "returnParameters": {
              "id": 17156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1808:0:63"
            },
            "scope": 17219,
            "src": "1418:996:63",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 17220,
        "src": "1264:1152:63"
      }
    ],
    "src": "603:1814:63"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "56": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "3637": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "5330": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "8453": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "57073": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    },
    "80094": {
      "events": {
        "0x4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a6327": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "name": "LogOperatorSet",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "AdminImpl": "0x08243969dDd1F038473FE0b56172468A91070616",
        "GettersImpl": "0xba33D91764C06Ac4C3E38DCB66567C2D09575009",
        "OperationImpl": "0x460DFE88B642705c588bd55660CC2c4C6578eE64"
      }
    }
  },
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:28.785Z",
  "devdoc": {
    "author": "dYdX * Main contract that inherits from other contracts",
    "methods": {
      "isOwner()": {
        "details": "Returns true if the caller is the current owner."
      },
      "operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])": {
        "params": {
          "accounts": "A list of all accounts that will be used in this operation. Cannot contain                  duplicates. In each action, the relevant account will be referred-to by its                  index in the list.",
          "actions": "An ordered list of all actions that will be taken in this operation. The                  actions will be processed in order."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "setOperators((address,bool)[])": {
        "params": {
          "args": "A list of OperatorArgs which have an address and a boolean. The boolean value              denotes whether to approve (true) or revoke approval (false) for that address."
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "DolomiteMargin"
  },
  "userdoc": {
    "methods": {
      "operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])": {
        "notice": "The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \"operation\". Account collateralization is ensured only after the completion of the entire operation."
      },
      "setOperators((address,bool)[])": {
        "notice": "Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts.     * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface."
      }
    }
  }
}