[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "LG_GAME_ALREADY_ENDED_OR_INVALID_END_TIME", "type": "error" }, { "inputs": [], "name": "LG_GAME_ALREADY_STARTED", "type": "error" }, { "inputs": [], "name": "LG_INVALID_MARKET_PHASE", "type": "error" }, { "inputs": [], "name": "LG_INVALID_START_OR_GAME_TIME", "type": "error" }, { "inputs": [], "name": "LG_INVALID_TRANSFER_AGENT", "type": "error" }, { "inputs": [], "name": "LG_NOT_FACTORY", "type": "error" }, { "inputs": [], "name": "LG_NOT_LIQUIDATION_ENGINE", "type": "error" }, { "inputs": [], "name": "LG_NOT_ORDER_BOOK", "type": "error" }, { "inputs": [], "name": "LG_NOT_ROUTER", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "collateral", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokensIncreased", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" } ], "name": "LeveragePositionIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "indexed": false, "internalType": "uint8", "name": "epochId", "type": "uint8" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokensBought", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "collateral", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" } ], "name": "LeveragePositionOpened", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": true, "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint128", "name": "collateralAdded", "type": "uint128" }, { "indexed": false, "internalType": "uint8", "name": "prevLeverage", "type": "uint8" }, { "indexed": false, "internalType": "uint16", "name": "prevPositionId", "type": "uint16" }, { "indexed": false, "internalType": "uint128", "name": "prevLiqPrice", "type": "uint128" }, { "indexed": false, "internalType": "uint8", "name": "newLeverage", "type": "uint8" }, { "indexed": false, "internalType": "uint16", "name": "newPositionId", "type": "uint16" }, { "indexed": false, "internalType": "uint128", "name": "newLiqPrice", "type": "uint128" } ], "name": "LeveragePositionReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint48", "name": "startTime", "type": "uint48" }, { "indexed": true, "internalType": "uint48", "name": "expectedGameTime", "type": "uint48" } ], "name": "LiveMarketStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint48", "name": "endTime", "type": "uint48" }, { "indexed": true, "internalType": "uint48", "name": "actualGameTime", "type": "uint48" }, { "indexed": true, "internalType": "enum TokenId", "name": "winningTeamToken", "type": "uint8" } ], "name": "PostMarketStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint128", "name": "amountOfHTokens", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "amountOfVTokens", "type": "uint128" } ], "name": "TokensMintedToMarketMaker", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "gameId", "type": "uint256" }, { "indexed": false, "internalType": "uint128", "name": "amountOfTokens", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "totalPayout", "type": "uint128" }, { "indexed": false, "internalType": "uint128", "name": "totalFees", "type": "uint128" } ], "name": "TokensRedeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "enum MarketPhase", "name": "previousMarketPhase", "type": "uint8" }, { "indexed": true, "internalType": "enum MarketPhase", "name": "newMarketPhase", "type": "uint8" } ], "name": "UpdatedMarketPhase", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentMarketPhase", "outputs": [ { "internalType": "enum MarketPhase", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameDuration", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameEndTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameStartTime", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint128", "name": "liqPrice", "type": "uint128" } ], "name": "getPositionIdOfLiqPrice", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" } ], "name": "getUserLeveragePosition", "outputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "getUserPositionId", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "getUserStandardPosition", "outputs": [ { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenReceiver", "type": "address" }, { "internalType": "address", "name": "liquidated", "type": "address" }, { "internalType": "uint128", "name": "forfeitedCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "outstandingVaultDebt", "type": "uint128" }, { "internalType": "uint128", "name": "tokensLiquidated", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "positionLeverage", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "handleLiquidation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_usdcToken", "type": "address" }, { "internalType": "address", "name": "_configHandler", "type": "address" }, { "internalType": "uint256", "name": "_gameId", "type": "uint256" }, { "internalType": "string", "name": "_gameApiEndpoint", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct StandardUpdatePosition[]", "name": "standardPositions", "type": "tuple[]" }, { "components": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct LeverageUpdatePosition[]", "name": "leveragePositions", "type": "tuple[]" }, { "components": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "position", "type": "tuple" }, { "internalType": "uint128", "name": "sellerPayout", "type": "uint128" } ], "internalType": "struct LeverageUpdatePosition[]", "name": "buyerLeveragePositions", "type": "tuple[]" }, { "components": [ { "internalType": "uint128", "name": "totalPurchaseCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "totalVaultPayoutRequest", "type": "uint128" }, { "internalType": "int128", "name": "totalBoundedLossDelta", "type": "int128" }, { "internalType": "int128", "name": "totalLeverageFundedDelta", "type": "int128" }, { "internalType": "int128", "name": "totalPotentialPayoutDelta", "type": "int128" }, { "internalType": "int128", "name": "totalPotentialBorrowFeeDelta", "type": "int128" } ], "internalType": "struct VaultDelta", "name": "vaultDelta", "type": "tuple" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "uint8", "name": "maxElements", "type": "uint8" } ], "internalType": "struct UpdatePositions", "name": "updatePositions", "type": "tuple" } ], "name": "mutatePositions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "positionBought", "type": "tuple" }, { "components": [ { "internalType": "uint128", "name": "actualCollateral", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "tokensPurchased", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint8", "name": "epochId", "type": "uint8" } ], "internalType": "struct LevrPurchaseInfo", "name": "purchaseInfo", "type": "tuple" }, { "internalType": "address", "name": "buyer", "type": "address" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "bool", "name": "newPosition", "type": "bool" } ], "name": "openLeveragePosition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint128", "name": "userBalance", "type": "uint128" }, { "internalType": "uint128", "name": "standardPositionBalance", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "redeemTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint128", "name": "entryPrice", "type": "uint128" }, { "internalType": "uint128", "name": "exitPrice", "type": "uint128" }, { "internalType": "uint128", "name": "liquidationPrice", "type": "uint128" }, { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "positionSize", "type": "uint128" }, { "internalType": "uint128", "name": "positionFee", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "uint128", "name": "positionBoundedLoss", "type": "uint128" }, { "internalType": "uint16", "name": "positionId", "type": "uint16" }, { "internalType": "uint8", "name": "leverageRate", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "enum PositionStatus", "name": "positionStatus", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardLeveragePosition", "name": "newLeveragePosition", "type": "tuple" }, { "components": [ { "internalType": "uint128", "name": "collateralAmount", "type": "uint128" }, { "internalType": "uint128", "name": "tokensBought", "type": "uint128" }, { "internalType": "uint128", "name": "paidOut", "type": "uint128" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" }, { "internalType": "address", "name": "user", "type": "address" } ], "internalType": "struct StandardPosition", "name": "newStandardPosition", "type": "tuple" }, { "internalType": "address", "name": "payer", "type": "address" }, { "internalType": "uint128", "name": "collateral", "type": "uint128" }, { "internalType": "uint128", "name": "prevLiqPrice", "type": "uint128" }, { "internalType": "uint16", "name": "prevPositionId", "type": "uint16" }, { "internalType": "uint8", "name": "prevLeverage", "type": "uint8" }, { "internalType": "uint8", "name": "newLeverage", "type": "uint8" }, { "internalType": "enum TokenId", "name": "tokenId", "type": "uint8" } ], "name": "reduceLeverage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "startTime", "type": "uint48" }, { "internalType": "uint48", "name": "gameTime", "type": "uint48" } ], "name": "startLiveMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "endTime", "type": "uint48" }, { "internalType": "enum TokenId", "name": "winningTokenId", "type": "uint8" } ], "name": "startPostMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "winningTeamToken", "outputs": [ { "internalType": "enum TokenId", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615fce80620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80635c975abb116101045780639fb25732116100a2578063e1f0c37611610071578063e1f0c3761461042c578063e57201b714610445578063e985e9c514610466578063f242432a1461047957600080fd5b80639fb25732146103dd5780639fec600b146103fd578063a22cb46514610410578063d7c81b551461042357600080fd5b80637bd6f20d116100de5780637bd6f20d146103895780637fa7f9721461039c5780638456cb59146103c25780638d556519146103ca57600080fd5b80635c975abb1461033a578063634c08971461035257806367ee9d591461037657600080fd5b80632eb2c2d6116101715780634287687d1161014b5780634287687d146102d557806344d9bc5f146102f55780634e1273f41461030757806353e978ef1461032757600080fd5b80632eb2c2d6146102a75780633ddc41ed146102ba5780633f4ba83a146102cd57600080fd5b80630e89341c116101ad5780630e89341c1461024c57806315dfbb521461026c578063196e9d601461028157806326ebcfce1461029457600080fd5b8062fdd58e146101d357806301ffc9a7146101f95780630252b9951461021c575b600080fd5b6101e66101e136600461489f565b61048c565b6040519081526020015b60405180910390f35b61020c6102073660046148e1565b6104c3565b60405190151581526020016101f0565b60065461023590600160a01b900465ffffffffffff1681565b60405165ffffffffffff90911681526020016101f0565b61025f61025a3660046148fe565b610513565b6040516101f09190614967565b61027f61027a366004614bda565b6105d8565b005b61027f61028f366004614ce8565b610c71565b61027f6102a2366004614d9f565b610ef9565b61027f6102b5366004614ecf565b611082565b61027f6102c83660046151df565b6110ee565b61027f611d38565b6102e86102e33660046152ca565b611d6d565b6040516101f09190615363565b6007546102359065ffffffffffff1681565b61031a6103153660046154ab565b611f0f565b6040516101f091906155a7565b61027f6103353660046155ba565b611fe3565b600080516020615f798339815191525460ff1661020c565b600754610369906601000000000000900460ff1681565b6040516101f09190615671565b61027f61038436600461567f565b6125b6565b61027f6103973660046156a9565b612733565b6103af6103aa3660046156f8565b612b2e565b60405161ffff90911681526020016101f0565b61027f612b9f565b6103af6103d8366004615741565b612bd2565b6103f06103eb366004615741565b612c2a565b6040516101f0919061575f565b61027f61040b3660046157b8565b612d0a565b61027f61041e366004615856565b613025565b6101e660055481565b60065461023590600160d01b900465ffffffffffff1681565b60075461045990600160381b900460ff1681565b6040516101f0919061588f565b61020c6104743660046158a2565b613034565b61027f6104873660046158d0565b613081565b6000818152600080516020615f59833981519152602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b14806104f457506001600160e01b031982166303a24d0760e21b145b806104bd57506301ffc9a760e01b6001600160e01b03198316146104bd565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45028054606091600080516020615f598339815191529161055290615938565b80601f016020809104026020016040519081016040528092919081815260200182805461057e90615938565b80156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050915050919050565b6105e0613162565b6003546001600160a01b0316331461060b57604051638714e3e760e01b815260040160405180910390fd5b8451600454610632916001600160a01b0390911690869030906001600160801b0316613193565b610160860151610140870151600254600554895160808a015160208b01516001600160a01b0390941693635d47cead9392879287926106719190615988565b60808e01518e516106829190615988565b8e60a001516040518863ffffffff1660e01b81526004016106a997969594939291906159af565b600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b5050505086608001516001600160801b031660001461078057600154604080516356610b3560e11b81529051610780926001600160a01b03169163acc2166a9160048083019260209291908290030181865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f91906159fd565b60808901516004546001600160a01b031691906001600160801b0316613200565b606087015160005460055460405163c65e26e160e01b81526001600160a01b039092169163c65e26e1916107ba9185908890600401615a1a565b600060405180830381600087803b1580156107d457600080fd5b505af11580156107e8573d6000803e3d6000fd5b505050506001600160a01b03861660009081526008602052604081208a9185600181111561081857610818615320565b600181111561082957610829615320565b81526020808201929092526040908101600090812061ffff808b16835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b90849081111561094857610948615320565b021790555061018082015160048201805460ff60a01b1916600160a01b83600281111561097757610977615320565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790558315610a92576001600160a01b0386166000908152600a6020526040812086918560018111156109d8576109d8615320565b60018111156109e9576109e9615320565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b0389168352600990915281208691856001811115610a3a57610a3a615320565b6001811115610a4b57610a4b615320565b815260200190815260200160002060008b604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b610aca86846001811115610aa857610aa8615320565b60ff16836001600160801b031660405180602001604052806000815250613236565b806001600160801b0316600c6000856001811115610aea57610aea615320565b6001811115610afb57610afb615320565b81526020019081526020016000206000828254610b189190615a3d565b90915550506040808a015160208a01518a5160c08c0151938c0151929391929091908815610bdb578a6001600160a01b0316886001811115610b5c57610b5c615320565b6005546040805161ffff8f16815260ff87811660208301528c16818301526001600160801b038b81166060830152888116608083015289811660a083015286811660c08301528a1660e082015290517fd026f53b49532f9b4c7e59f32feb5b919b08627ac82d92d57e12a19c45054efa918190036101000190a4610c61565b8a6001600160a01b0316886001811115610bf757610bf7615320565b6005546040805161ffff8f16815260ff8c1660208201526001600160801b03888116828401528b8116606083015286811660808301528a1660a082015290517f4446d5b8e666c8e766075e263fd9232bfc5cd9620b020fa8909372df6d0b54b29181900360c00190a45b5050505050505050505050505050565b610c79613162565b600160009054906101000a90046001600160a01b03166001600160a01b03166344bf3c726040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906159fd565b6001600160a01b0316336001600160a01b031614610d215760405163c4d7829b60e01b815260040160405180910390fd5b6004805460025460405163095ea7b360e01b81526001600160a01b039283169363095ea7b393610d559316918a9101615a50565b6020604051808303816000875af1158015610d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d989190615a72565b50600154604080516356610b3560e11b81529051610e24926001600160a01b03169163acc2166a9160048083019260209291908290030181865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0891906159fd565b6004546001600160a01b0316906001600160801b038916613200565b610e5d8789836001811115610e3b57610e3b615320565b60ff16876001600160801b031660405180602001604052806000815250613293565b6001600160a01b0387166000908152600860205260408120600291836001811115610e8a57610e8a615320565b6001811115610e9b57610e9b615320565b81526020808201929092526040908101600090812061ffff88168252835281812060ff871682529092529020600401805460ff60a01b1916600160a01b836002811115610eea57610eea615320565b02179055505050505050505050565b6006546001600160a01b03163314610f245760405163e6a7bb6560e01b815260040160405180910390fd5b600654600160a01b900465ffffffffffff1615610f5457604051632611d3f560e01b815260040160405180910390fd5b65ffffffffffff82161580610f6f575065ffffffffffff8116155b15610f8d576040516360cc997560e11b815260040160405180910390fd5b6006805465ffffffffffff838116600160d01b026001600160d01b03918616600160a01b02919091166001600160a01b03928316171790915560015460408051631f21f9af60e01b81529051611036939290921691631f21f9af916004808201926020929091908290030181865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103191906159fd565b613321565b611040600161370d565b8065ffffffffffff168265ffffffffffff167fdd9cb81c733d63c9d011d9c804132f5d8accce82455da94b97b0919f27f3b5ba60405160405180910390a35050565b336001600160a01b03861681148015906110a357506110a18682613034565b155b156110d95760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b6110e68686868686613793565b505050505050565b600160009054906101000a90046001600160a01b03166001600160a01b03166319abfd726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116591906159fd565b6001600160a01b0316336001600160a01b03161461119657604051633748275360e21b815260040160405180910390fd5b61119e613162565b606081015180516004546111ca916001600160a01b0390911690339030906001600160801b0316613193565b60008082602001516001600160801b0316116111ea5781606001516111fe565b816060015182602001516111fe9190615a8f565b9050600081600f0b1215611290576004546002546001600160a01b039182169163095ea7b3911661122e84615ac5565b6040518363ffffffff1660e01b815260040161124b929190615a50565b6020604051808303816000875af115801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e9190615a72565b505b60808301516002546005546060860151604051635a9e810d60e01b81526001600160a01b0390931692635a9e810d926112d0929091869190600401615aeb565b600060405180830381600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b5050855151602087015151604088015151919350915060005b8760a0015160ff168160ff161015611d2e578360ff168160ff16101561154957600088600001518260ff168151811061135257611352615b5a565b60209081029190910101515160808101519091506001600160a01b038116156115465760008a600001518460ff168151811061139057611390615b5a565b6020026020010151602001519050806001600160801b03166000146113cf576004546113cf906001600160a01b0316836001600160801b038416613200565b82602001516001600160801b031660000361145d576001600160a01b0382166000908152600b602052604081209089600181111561140f5761140f615320565b600181111561142057611420615320565b8152602081019190915260400160009081209081556001810180546001600160881b031916905560020180546001600160a01b0319169055611544565b6001600160a01b0382166000908152600b6020526040812084918a600181111561148957611489615320565b600181111561149a5761149a615320565b815260208082019290925260409081016000208351928401516001600160801b03938416600160801b918516820217825591840151600180830180546001600160801b0319811693909616928317815560608701519395939490936001600160881b0319169092179190849081111561151557611515615320565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b039092169190911790555b505b50505b8260ff168160ff1610156119c957600088602001518260ff168151811061157257611572615b5a565b6020908102919091010151516101a081015161012082015161014083015192935090916001600160a01b038316156119c45760008c602001518660ff16815181106115bf576115bf615b5a565b6020026020010151602001519050806001600160801b0316600014611603576004546115fe906001600160a01b0316856001600160801b038416613200565b611749565b6001600160a01b0384166000908152600a60205260408120818c600181111561162e5761162e615320565b600181111561163f5761163f615320565b815260208101919091526040016000205461ffff90811691508416811015611747576001600160a01b0385166000908152600a6020526040812085918d600181111561168d5761168d615320565b600181111561169e5761169e615320565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b03881683526009909152812085918d60018111156116ef576116ef615320565b600181111561170057611700615320565b8152602001908152602001600020600088604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b505b8460c001516001600160801b0316600003611807576001600160a01b0384166000908152600860205260408120908b600181111561178957611789615320565b600181111561179a5761179a615320565b81526020808201929092526040908101600090812061ffff87168252835281812060ff861682529092528120818155600181018290556002810182905560038101919091556004810180546001600160a81b031916905560050180546001600160a01b03191690556119c2565b6001600160a01b038416600090815260086020526040812086918c600181111561183357611833615320565b600181111561184457611844615320565b81526020808201929092526040908101600090812061ffff808916835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b90849081111561196357611963615320565b021790555061018082015160048201805460ff60a01b1916600160a01b83600281111561199257611992615320565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790555b505b505050505b8160ff168160ff161015611d1e57600088604001518260ff16815181106119f2576119f2615b5a565b6020908102919091010151516101a081015161014082015161012083015192935090916001600160a01b03831615611d19576001600160a01b038316600090815260086020526040812085918b6001811115611a5057611a50615320565b6001811115611a6157611a61615320565b81526020808201929092526040908101600090812061ffff808716835290845282822060ff8089168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b908490811115611b8057611b80615320565b021790555061018082015160048201805460ff60a01b1916600160a01b836002811115611baf57611baf615320565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b0392831617905583166000908152600a60205260408120818b6001811115611bfe57611bfe615320565b6001811115611c0f57611c0f615320565b815260208101919091526040016000205461ffff90811691508216811015611d17576001600160a01b0384166000908152600a6020526040812083918c6001811115611c5d57611c5d615320565b6001811115611c6e57611c6e615320565b815260208082019290925260409081016000908120805461ffff191661ffff95909516949094179093556001600160a01b03871683526009909152812083918c6001811115611cbf57611cbf615320565b6001811115611cd057611cd0615320565b8152602001908152602001600020600087604001516001600160801b0316815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b505b505050505b611d2781615b70565b9050611317565b5050505050505050565b6006546001600160a01b03163314611d635760405163e6a7bb6560e01b815260040160405180910390fd5b611d6b6137f3565b565b611d756147df565b6001600160a01b038516600090815260086020526040812090856001811115611da057611da0615320565b6001811115611db157611db1615320565b81526020808201929092526040908101600090812061ffff808816835290845282822060ff80881684529085529183902083516101c08101855281546001600160801b038082168352600160801b9182900481169783019790975260018084015480891697840197909752958190048716606083015260028301548088166080840152819004871660a0830152600383015480881660c0840152819004871660e083015260048301549687166101008301528604909216610120830152600160901b8504831661014083015290939092610160850192600160981b90920490911690811115611ea257611ea2615320565b6001811115611eb357611eb3615320565b81526020016004820160149054906101000a900460ff166002811115611edb57611edb615320565b6002811115611eec57611eec615320565b8152600591909101546001600160a01b031660209091015290505b949350505050565b60608151835114611f405781518351604051635b05999160e01b8152600481019290925260248201526044016110d0565b600083516001600160401b03811115611f5b57611f5b61497a565b604051908082528060200260200182016040528015611f84578160200160208202803683370190505b50905060005b8451811015611fdb57602080820286010151611fae9060208084028701015161048c565b828281518110611fc057611fc0615b5a565b6020908102919091010152611fd481615b8f565b9050611f8a565b509392505050565b611feb613162565b6003546001600160a01b0316331461201657604051638714e3e760e01b815260040160405180910390fd5b600454612037906001600160a01b031688306001600160801b038a16613193565b60008260ff1660011461204f57896101a00151612055565b88608001515b6001600160a01b038116600090815260086020526040812091925083600181111561208257612082615320565b600181111561209357612093615320565b81526020808201929092526040908101600090812061ffff89168252835281812060ff80891683529352908120818155600180820183905560028201839055600382018390556004820180546001600160a81b0319169055600590910180546001600160a01b03191690559091851690036121f3576001600160a01b0382166000908152600b602052604081208b9185600181111561213457612134615320565b600181111561214557612145615320565b815260208082019290925260409081016000208351928401516001600160801b03938416600160801b918516820217825591840151600180830180546001600160801b0319811693909616928317815560608701519395939490936001600160881b031916909217919084908111156121c0576121c0615320565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b0390921691909117905561249d565b6001600160a01b03821660009081526009602052604081209084600181111561221e5761221e615320565b600181111561222f5761222f615320565b8152602080820192909252604090810160009081208e8301516001600160801b0316825290925281205461ffff1691508190036122e2576001600160a01b0382166000908152600a602052604081209084600181111561229157612291615320565b60018111156122a2576122a2615320565b81526020810191909152604001600090812080549091906122c69061ffff16615ba8565b91906101000a81548161ffff021916908361ffff160217905590505b6001600160a01b03821660009081526008602052604081208c9185600181111561230e5761230e615320565b600181111561231f5761231f615320565b81526020808201929092526040908101600090812061ffff808716835290845282822060ff808b168452908552918390208551948601516001600160801b03908116600160801b9081029682169690961782559386015160608701518516860290851617600180830191909155608087015160a08801518616870290861617600283015560c087015160e0880151861687029086161760038301556101008701516004830180546101208a01516101408b0151909716600160901b0260ff60901b19979096169098026001600160901b031990981691909616179590951792831682178455610160860151909490939260ff60981b1990921661ffff60901b199092169190911790600160981b90849081111561243e5761243e615320565b021790555061018082015160048201805460ff60a01b1916600160a01b83600281111561246d5761246d615320565b02179055506101a09190910151600590910180546001600160a01b0319166001600160a01b039092169190911790555b6004805460025460405163095ea7b360e01b81526001600160a01b039283169363095ea7b3936124d19316918d9101615a50565b6020604051808303816000875af11580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125149190615a72565b5060408b01516001600160a01b03831684600181111561253657612536615320565b600554604080516001600160801b038e8116825260ff8c8116602084015261ffff8e8116848601528f83166060850152908c166080840152881660a0830152861660c082015290517fd6e96314a69d63134bbf5419ffad8ff1cdb0e6a7f3e0c2ff4ec3d86d8cf5ed939181900360e00190a4505050505050505050505050565b6006546001600160a01b031633146125e15760405163e6a7bb6560e01b815260040160405180910390fd5b65ffffffffffff821615806125ff575060075465ffffffffffff1615155b1561261d576040516325df1c1b60e11b815260040160405180910390fd5b6007805465ffffffffffff191665ffffffffffff8481169190911790915560065461265191600160a01b9091041683615bc9565b6006805465ffffffffffff92909216600160d01b026001600160d01b039092169190911790556007805482919066ff000000000000191666010000000000008360018111156126a2576126a2615320565b02179055506126b1600261370d565b6126dc8160008360018111156126c9576126c9615320565b146126d5576000613853565b6001613853565b8060018111156126ee576126ee615320565b60065460405165ffffffffffff600160d01b9092048216918516907fe97bee48f36bb901f003dd085743af5501f29989004c4eff6ab14eb8f724ca7c90600090a45050565b61273b613162565b6003546001600160a01b0316331461276657604051638714e3e760e01b815260040160405180910390fd5b60006127728385615988565b905060008061278664e8d4a5100086615bfe565b6001600160a01b0388166000908152600a6020526040812091925090818660018111156127b5576127b5615320565b60018111156127c6576127c6615320565b815260208101919091526040016000205461ffff16905060016001600160801b03851615612a7c575b8161ffff168161ffff1611612a7c5760025b60058160ff1611612a6b576001600160a01b038a1660009081526008602052604081208189600181111561283757612837615320565b600181111561284857612848615320565b81526020808201929092526040908101600090812061ffff87168252835281812060ff86168252909252902060038101549091506001600160801b0316158015906128b2575060016004820154600160a01b900460ff1660028111156128b0576128b0615320565b145b15612a5a576004818101805460ff60a01b1916905581546503782dace9d960921b6001600160801b0391821690811784556002840154600354600554604051630d2a991d60e21b815295860152818416602486018190526044860184905294600160801b9092049093169260009161297d916001600160a01b0316906334aa647490606401602060405180830381865afa158015612954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129789190615c24565b613d0a565b60018601549091506000908490600160801b90046001600160801b0316846129ad81670de0b6b3a7640000615988565b6129b79089615c3d565b6129c19190615bfe565b6129cb9190615c60565b6129d59190615988565b905060006129e38383615988565b9050808760030160108282829054906101000a90046001600160801b0316612a0b9190615c60565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550808b612a3b9190615c60565b9a50612a478386615c60565b612a51908d615c60565b9b505050505050505b50612a6481615b70565b9050612801565b50612a7581615ba8565b90506127ef565b612aa489876001811115612a9257612a92615320565b60ff168a6001600160801b0316613d42565b600454612ac4906001600160a01b03168a6001600160801b038616613200565b600554604080519182526001600160801b038a811660208401528581168383015286166060830152516001600160a01b038b16917fd69c0fd92c14e63cdb4b242765e9a7a37b0c5b95c4f1e8fbe7ca4310bbda2d0b919081900360800190a2505050505050505050565b6001600160a01b038316600090815260096020526040812081846001811115612b5957612b59615320565b6001811115612b6a57612b6a615320565b8152602080820192909252604090810160009081206001600160801b038616825290925290205461ffff1690505b9392505050565b6006546001600160a01b03163314612bca5760405163e6a7bb6560e01b815260040160405180910390fd5b611d6b613daa565b6001600160a01b0382166000908152600a6020526040812081836001811115612bfd57612bfd615320565b6001811115612c0e57612c0e615320565b815260208101919091526040016000205461ffff169392505050565b612c32614853565b6001600160a01b0383166000908152600b6020526040812090836001811115612c5d57612c5d615320565b6001811115612c6e57612c6e615320565b81526020808201929092526040908101600020815160a08101835281546001600160801b038082168352600160801b91829004811695830195909552600180840154958616948301949094529093919260608501929190910460ff1690811115612cda57612cda615320565b6001811115612ceb57612ceb615320565b8152600291909101546001600160a01b03166020909101529392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015612d4f5750825b90506000826001600160401b03166001148015612d6b5750303b155b905081158015612d79575080155b15612d975760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612dc157845460ff60401b1916600160401b1785555b612e0087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613df392505050565b612e08613e07565b6007805460ff60381b19169055600480546001600160a01b038c81166001600160a01b031992831617835560018054918d169190921681179091556040805163e785ba4f60e01b81529051919263e785ba4f9282820192602092908290030181865afa158015612e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea091906159fd565b600080546001600160a01b0319166001600160a01b03928316179055600154604080516312d1c00b60e21b815290519190921691634b47002c9160048083019260209291908290030181865afa158015612efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2291906159fd565b600280546001600160a01b0319166001600160a01b03928316179055600154604080516345026fdb60e01b8152905191909216916345026fdb9160048083019260209291908290030181865afa158015612f80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa491906159fd565b600380546001600160a01b03929092166001600160a01b031992831617905560068054909116331790556005889055831561301957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b613030338383613e17565b5050565b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b6006546001600160a01b03166378fc3cb3336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb9190615a72565b61314e576001600160a01b038516331480159061311f575061311d8533613034565b155b1561314e5760405163711bec9160e11b81523360048201526001600160a01b03861660248201526044016110d0565b61315b8585858585613293565b5050505050565b600080516020615f798339815191525460ff1615611d6b5760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526131fa9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613ebf565b50505050565b6040516001600160a01b0383811660248301526044820183905261323191859182169063a9059cbb906064016131c8565b505050565b6001600160a01b03841661326057604051632bfa23e760e11b8152600060048201526024016110d0565b604080516001808252602082018690528183019081526060820185905260808201909252906110e6600087848487613f22565b6001600160a01b0384166132bd57604051632bfa23e760e11b8152600060048201526024016110d0565b6001600160a01b0385166132e657604051626a0d4560e21b8152600060048201526024016110d0565b604080516001808252602082018690528183019081526060820185905260808201909252906133188787848487613f22565b50505050505050565b6000805460055460405163d5ff140960e01b8152600481019190915282916001600160a01b03169063d5ff1409906024016040805180830381865afa15801561336e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133929190615c80565b91509150816001600160801b031660001480156133b657506001600160801b038116155b156133c057505050565b604080516002808252606082018352600092602083019080368337505060408051600280825260608201835293945060009390925090602083019080368337019050509050600060ff168260008151811061341d5761341d615b5a565b6020908102919091010152600160ff168260018151811061344057613440615b5a565b602002602001018181525050836001600160801b03168160008151811061346957613469615b5a565b602002602001018181525050826001600160801b03168160018151811061349257613492615b5a565b6020026020010181815250506134b985838360405180602001604052806000815250613f75565b6040805160a08101825260008082526001600160801b038781166020808501918252848601848152606086018581526001600160a01b038d16608088018190528652600b83528786208680529092529590932084519151918316600160801b92841683021781559451600180870180546001600160801b03198116939095169283178155945195969594936001600160881b0319169091179190849081111561356457613564615320565b021790555060809182015160029190910180546001600160a01b0319166001600160a01b039283161790556040805160a08101825260008082526001600160801b038881166020808501918252848601848152600160608701818152988f169987018a9052988552600b82528685208986529091529490922083519251928216600160801b9383168402178155935184870180546001600160801b0319811692909316918217815595519396949593946001600160881b0319909216179190849081111561363457613634615320565b021790555060809190910151600290910180546001600160a01b0319166001600160a01b0392831617905560005460055460405163a95358f760e01b8152600481019190915291169063a95358f790602401600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b5050604080516001600160801b038089168252871660208201526001600160a01b03891693507f85d07dd1bd4938d68eb629bcd71ef9107ce6b3ffc2ad28dc7c3ebbae126cd0e192500160405180910390a25050505050565b60078054600160381b80820460ff16928492909160ff60381b199091169083600281111561373d5761373d615320565b021790555081600281111561375457613754615320565b81600281111561376657613766615320565b6040517fe6083f7ea6d46500472792fb93117cbbeb540e2698b3ca58c35484bb0e88c5f990600090a35050565b6001600160a01b0384166137bd57604051632bfa23e760e11b8152600060048201526024016110d0565b6001600160a01b0385166137e657604051626a0d4560e21b8152600060048201526024016110d0565b61315b8585858585613f22565b6137fb613fad565b600080516020615f79833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b60025460055460405163065d416960e21b81526000928392839283926001600160a01b03169163197505a49161388e91908990600401615caf565b6080604051808303816000875af11580156138ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d19190615cc3565b9350935093509350600084600f0b13156139105760025460045461390b916001600160a01b0391821691166001600160801b038716613200565b613953565b600084600f0b121561395357600254613953906001600160a01b03163061393687615ac5565b6004546001600160a01b03169291906001600160801b0316613193565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082018352939450600093909250906020830190803683370190505090508760018111156139aa576139aa615320565b60ff16826000815181106139c0576139c0615b5a565b6020026020010181815250508660018111156139de576139de615320565b60ff16826001815181106139f4576139f4615b5a565b6020026020010181815250506000600160009054906101000a90046001600160a01b03166001600160a01b0316631f21f9af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7991906159fd565b9050613a9f8184600081518110613a9257613a92615b5a565b602002602001015161048c565b82600081518110613ab257613ab2615b5a565b602002602001018181525050613ad58184600181518110613a9257613a92615b5a565b82600181518110613ae857613ae8615b5a565b60200260200101818152505081600081518110613b0757613b07615b5a565b60200260200101516000141580613b39575081600181518110613b2c57613b2c615b5a565b6020026020010151600014155b15613b4957613b49818484613fdd565b600064e8d4a51000600c60008c6001811115613b6757613b67615320565b6001811115613b7857613b78615320565b815260200190815260200160002054613b919190615d22565b90506000876001600160801b03168211613bac576000613bb6565b613bb68883615988565b9050600087613bc5888b615988565b613bcf9190615988565b90506000613bdd8383615c60565b600480546040516370a0823160e01b815230928101929092526001600160801b0392909216916001600160a01b0316906370a0823190602401602060405180830381865afa158015613c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c579190615c24565b613c619190615d36565b9050613cfb600160009054906101000a90046001600160a01b03166001600160a01b031663acc2166a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cdd91906159fd565b613ce8600a84615d36565b6004546001600160a01b03169190613200565b50505050505050505050505050565b60006001600160801b03821115613d3e576040516306dfcc6560e41b815260806004820152602481018390526044016110d0565b5090565b6001600160a01b038316613d6b57604051626a0d4560e21b8152600060048201526024016110d0565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929161315b91879185908590613f22565b613db2613162565b600080516020615f79833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613835565b613dfb614023565b613e048161406c565b50565b613e0f614023565b611d6b61407d565b600080516020615f598339815191526001600160a01b038316613e4f5760405162ced3e160e81b8152600060048201526024016110d0565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6000613ed46001600160a01b0384168361409e565b90508051600014158015613ef9575080806020019051810190613ef79190615a72565b155b1561323157604051635274afe760e01b81526001600160a01b03841660048201526024016110d0565b613f2e858585856140ac565b6001600160a01b0384161561315b5782513390600103613f675760208481015190840151613f60838989858589614248565b50506110e6565b6110e681878787878761436c565b6001600160a01b038416613f9f57604051632bfa23e760e11b8152600060048201526024016110d0565b6131fa600085858585613f22565b600080516020615f798339815191525460ff16611d6b57604051638dfc202b60e01b815260040160405180910390fd5b6001600160a01b03831661400657604051626a0d4560e21b8152600060048201526024016110d0565b613231836000848460405180602001604052806000815250613f22565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d6b57604051631afcd79f60e31b815260040160405180910390fd5b614074614023565b613e0481614455565b614085614023565b600080516020615f79833981519152805460ff19169055565b6060612b988383600061448f565b6140b4613162565b6002600754600160381b900460ff1660028111156140d4576140d4615320565b14614178576006546040516378fc3cb360e01b81523360048201526001600160a01b03909116906378fc3cb390602401602060405180830381865afa158015614121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141459190615a72565b15801561415a57506001600160a01b03841615155b1561417857604051633d6d8ca160e21b815260040160405180910390fd5b6002600754600160381b900460ff16600281111561419857614198615320565b0361423c576006546040516378fc3cb360e01b81523360048201526001600160a01b03909116906378fc3cb390602401602060405180830381865afa1580156141e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142099190615a72565b15801561421e57506001600160a01b03831615155b1561423c57604051633d6d8ca160e21b815260040160405180910390fd5b6131fa8484848461452c565b6001600160a01b0384163b156110e65760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061428c9089908990889088908890600401615d49565b6020604051808303816000875af19250505080156142c7575060408051601f3d908101601f191682019092526142c491810190615d8e565b60015b614330573d8080156142f5576040519150601f19603f3d011682016040523d82523d6000602084013e6142fa565b606091505b50805160000361432857604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461331857604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b6001600160a01b0384163b156110e65760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906143b09089908990889088908890600401615dab565b6020604051808303816000875af19250505080156143eb575060408051601f3d908101601f191682019092526143e891810190615d8e565b60015b614419573d8080156142f5576040519150601f19603f3d011682016040523d82523d6000602084013e6142fa565b6001600160e01b0319811663bc197c8160e01b1461331857604051632bfa23e760e11b81526001600160a01b03861660048201526024016110d0565b600080516020615f598339815191527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45026132318382615e4f565b6060814710156144b45760405163cd78605960e01b81523060048201526024016110d0565b600080856001600160a01b031684866040516144d09190615f0e565b60006040518083038185875af1925050503d806000811461450d576040519150601f19603f3d011682016040523d82523d6000602084013e614512565b606091505b509150915061452286838361475a565b9695505050505050565b80518251600080516020615f59833981519152911461456b5782518251604051635b05999160e01b8152600481019290925260248201526044016110d0565b3360005b845181101561467a576020818102868101820151908601909101516001600160a01b03891615614622576000828152602086815260408083206001600160a01b038d168452909152902054818110156145fb576040516303dee4c560e01b81526001600160a01b038b1660048201526024810182905260448101839052606481018490526084016110d0565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b03881615614667576000828152602086815260408083206001600160a01b038c16845290915281208054839290614661908490615a3d565b90915550505b50508061467390615b8f565b905061456f565b5083516001036146fb5760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516146ec929190918252602082015260400190565b60405180910390a450506110e6565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161474a929190615f2a565b60405180910390a4505050505050565b60608261476f5761476a826147b6565b612b98565b815115801561478657506001600160a01b0384163b155b156147af57604051639996b31560e01b81526001600160a01b03851660048201526024016110d0565b5080612b98565b8051156147c65780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905290610160820190815260200160005b8152600060209091015290565b6040805160a081018252600080825260208201819052918101829052906060820190614846565b6001600160a01b0381168114613e0457600080fd5b803561489a8161487a565b919050565b600080604083850312156148b257600080fd5b82356148bd8161487a565b946020939093013593505050565b6001600160e01b031981168114613e0457600080fd5b6000602082840312156148f357600080fd5b8135612b98816148cb565b60006020828403121561491057600080fd5b5035919050565b60005b8381101561493257818101518382015260200161491a565b50506000910152565b60008151808452614953816020860160208601614917565b601f01601f19169290920160200192915050565b602081526000612b98602083018461493b565b634e487b7160e01b600052604160045260246000fd5b6040516101c081016001600160401b03811182821017156149b3576149b361497a565b60405290565b60405160e081016001600160401b03811182821017156149b3576149b361497a565b604080519081016001600160401b03811182821017156149b3576149b361497a565b60405160c081016001600160401b03811182821017156149b3576149b361497a565b604051601f8201601f191681016001600160401b0381118282101715614a4757614a4761497a565b604052919050565b6001600160801b0381168114613e0457600080fd5b803561489a81614a4f565b803561ffff8116811461489a57600080fd5b803560ff8116811461489a57600080fd5b80356002811061489a57600080fd5b80356003811061489a57600080fd5b60006101c08284031215614ac357600080fd5b614acb614990565b9050614ad682614a64565b8152614ae460208301614a64565b6020820152614af560408301614a64565b6040820152614b0660608301614a64565b6060820152614b1760808301614a64565b6080820152614b2860a08301614a64565b60a0820152614b3960c08301614a64565b60c0820152614b4a60e08301614a64565b60e0820152610100614b5d818401614a64565b90820152610120614b6f838201614a6f565b90820152610140614b81838201614a81565b90820152610160614b93838201614a92565b90820152610180614ba5838201614aa1565b908201526101a0614bb783820161488f565b9082015292915050565b8015158114613e0457600080fd5b803561489a81614bc1565b600080600080600080868803610320811215614bf557600080fd5b614bff8989614ab0565b965060e06101bf1982011215614c1457600080fd5b50614c1d6149b9565b6101c0880135614c2c81614a4f565b81526101e0880135614c3d81614a4f565b6020820152610200880135614c5181614a4f565b6040820152610220880135614c6581614a4f565b6060820152614c776102408901614a64565b6080820152614c896102608901614a64565b60a0820152614c9b6102808901614a81565b60c08201529450614caf6102a0880161488f565b9350614cbe6102c0880161488f565b9250614ccd6102e08801614a6f565b9150614cdc6103008801614bcf565b90509295509295509295565b600080600080600080600080610100898b031215614d0557600080fd5b8835614d108161487a565b97506020890135614d208161487a565b96506040890135614d3081614a4f565b95506060890135614d4081614a4f565b94506080890135614d5081614a4f565b9350614d5e60a08a01614a6f565b9250614d6c60c08a01614a81565b9150614d7a60e08a01614a92565b90509295985092959890939650565b803565ffffffffffff8116811461489a57600080fd5b60008060408385031215614db257600080fd5b614dbb83614d89565b9150614dc960208401614d89565b90509250929050565b60006001600160401b03821115614deb57614deb61497a565b5060051b60200190565b600082601f830112614e0657600080fd5b81356020614e1b614e1683614dd2565b614a1f565b82815260059290921b84018101918181019086841115614e3a57600080fd5b8286015b84811015614e555780358352918301918301614e3e565b509695505050505050565b600082601f830112614e7157600080fd5b81356001600160401b03811115614e8a57614e8a61497a565b614e9d601f8201601f1916602001614a1f565b818152846020838601011115614eb257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614ee757600080fd5b8535614ef28161487a565b94506020860135614f028161487a565b935060408601356001600160401b0380821115614f1e57600080fd5b614f2a89838a01614df5565b94506060880135915080821115614f4057600080fd5b614f4c89838a01614df5565b93506080880135915080821115614f6257600080fd5b50614f6f88828901614e60565b9150509295509295909350565b600060a08284031215614f8e57600080fd5b60405160a081018181106001600160401b0382111715614fb057614fb061497a565b6040529050808235614fc181614a4f565b81526020830135614fd181614a4f565b60208201526040830135614fe481614a4f565b6040820152614ff560608401614a92565b606082015260808301356150088161487a565b6080919091015292915050565b600082601f83011261502657600080fd5b81356020615036614e1683614dd2565b82815260c0928302850182019282820191908785111561505557600080fd5b8387015b858110156150a45781818a0312156150715760008081fd5b6150796149db565b6150838a83614f7c565b815260a082013561509381614a4f565b818701528452928401928101615059565b5090979650505050505050565b600082601f8301126150c257600080fd5b813560206150d2614e1683614dd2565b8281526101e092830285018201928282019190878511156150f257600080fd5b8387015b858110156150a45781818a03121561510e5760008081fd5b6151166149db565b6151208a83614ab0565b81526101c082013561513181614a4f565b8187015284529284019281016150f6565b80600f0b8114613e0457600080fd5b600060c0828403121561516357600080fd5b61516b6149fd565b9050813561517881614a4f565b8152602082013561518881614a4f565b6020820152604082013561519b81615142565b604082015260608201356151ae81615142565b606082015260808201356151c181615142565b608082015260a08201356151d481615142565b60a082015292915050565b6000602082840312156151f157600080fd5b81356001600160401b038082111561520857600080fd5b90830190610160828603121561521d57600080fd5b6152256149fd565b82358281111561523457600080fd5b61524087828601615015565b82525060208301358281111561525557600080fd5b615261878286016150b1565b60208301525060408301358281111561527957600080fd5b615285878286016150b1565b6040830152506152988660608501615151565b60608201526152aa6101208401614a92565b60808201526152bc6101408401614a81565b60a082015295945050505050565b600080600080608085870312156152e057600080fd5b84356152eb8161487a565b93506152f960208601614a92565b925061530760408601614a6f565b915061531560608601614a81565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b6002811061534657615346615320565b9052565b60038110613e0457613e04615320565b6153468161534a565b81516001600160801b031681526101c08101602083015161538f60208401826001600160801b03169052565b5060408301516153aa60408401826001600160801b03169052565b5060608301516153c560608401826001600160801b03169052565b5060808301516153e060808401826001600160801b03169052565b5060a08301516153fb60a08401826001600160801b03169052565b5060c083015161541660c08401826001600160801b03169052565b5060e083015161543160e08401826001600160801b03169052565b50610100838101516001600160801b0316908301526101208084015161ffff16908301526101408084015160ff16908301526101608084015161547682850182615336565b50506101808084015161548b8285018261535a565b50506101a0838101516001600160a01b038116848301525b505092915050565b600080604083850312156154be57600080fd5b82356001600160401b03808211156154d557600080fd5b818501915085601f8301126154e957600080fd5b813560206154f9614e1683614dd2565b82815260059290921b8401810191818101908984111561551857600080fd5b948201945b8386101561553f5785356155308161487a565b8252948201949082019061551d565b9650508601359250508082111561555557600080fd5b5061556285828601614df5565b9150509250929050565b600081518084526020808501945080840160005b8381101561559c57815187529582019590820190600101615580565b509495945050505050565b602081526000612b98602083018461556c565b60008060008060008060008060006103408a8c0312156155d957600080fd5b6155e38b8b614ab0565b98506155f38b6101c08c01614f7c565b97506102608a01356156048161487a565b96506102808a013561561581614a4f565b95506102a08a013561562681614a4f565b94506156356102c08b01614a6f565b93506156446102e08b01614a81565b92506156536103008b01614a81565b91506156626103208b01614a92565b90509295985092959850929598565b602081016104bd8284615336565b6000806040838503121561569257600080fd5b61569b83614d89565b9150614dc960208401614a92565b600080600080608085870312156156bf57600080fd5b84356156ca8161487a565b935060208501356156da81614a4f565b925060408501356156ea81614a4f565b915061531560608601614a92565b60008060006060848603121561570d57600080fd5b83356157188161487a565b925061572660208501614a92565b9150604084013561573681614a4f565b809150509250925092565b6000806040838503121561575457600080fd5b823561569b8161487a565b600060a0820190506001600160801b038084511683528060208501511660208401528060408501511660408401525060608301516157a06060840182615336565b506080928301516001600160a01b0316919092015290565b6000806000806000608086880312156157d057600080fd5b85356157db8161487a565b945060208601356157eb8161487a565b93506040860135925060608601356001600160401b038082111561580e57600080fd5b818801915088601f83011261582257600080fd5b81358181111561583157600080fd5b89602082850101111561584357600080fd5b9699959850939650602001949392505050565b6000806040838503121561586957600080fd5b82356158748161487a565b9150602083013561588481614bc1565b809150509250929050565b6020810161589c8361534a565b91905290565b600080604083850312156158b557600080fd5b82356158c08161487a565b915060208301356158848161487a565b600080600080600060a086880312156158e857600080fd5b85356158f38161487a565b945060208601356159038161487a565b9350604086013592506060860135915060808601356001600160401b0381111561592c57600080fd5b614f6f88828901614e60565b600181811c9082168061594c57607f821691505b60208210810361596c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156159a8576159a8615972565b5092915050565b87815260e081016159c36020830189615336565b60ff9690961660408201526001600160801b039485166060820152928416608084015290831660a083015290911660c09091015292915050565b600060208284031215615a0f57600080fd5b8151612b988161487a565b8381526001600160801b038316602082015260608101611f076040830184615336565b808201808211156104bd576104bd615972565b6001600160a01b039290921682526001600160801b0316602082015260400190565b600060208284031215615a8457600080fd5b8151612b9881614bc1565b600f81810b9083900b0160016001607f1b0381136f7fffffffffffffffffffffffffffffff19821217156104bd576104bd615972565b600081600f0b60016001607f1b03198103615ae257615ae2615972565b60000392915050565b8381526101008101615b006020830185615336565b6001600160801b03808451166040840152806020850151166060840152506040830151600f0b60808301526060830151600f0b60a08301526080830151600f0b60c083015260a0830151600f0b60e0830152949350505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103615b8657615b86615972565b60010192915050565b600060018201615ba157615ba1615972565b5060010190565b600061ffff808316818103615bbf57615bbf615972565b6001019392505050565b65ffffffffffff8281168282160390808211156159a8576159a8615972565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b0380841680615c1857615c18615be8565b92169190910492915050565b600060208284031215615c3657600080fd5b5051919050565b6001600160801b038181168382160280821691908281146154a3576154a3615972565b6001600160801b038181168382160190808211156159a8576159a8615972565b60008060408385031215615c9357600080fd5b8251615c9e81614a4f565b602084015190925061588481614a4f565b82815260408101612b986020830184615336565b60008060008060808587031215615cd957600080fd5b8451615ce481615142565b6020860151909450615cf581614a4f565b6040860151909350615d0681614a4f565b6060860151909250615d1781614a4f565b939692955090935050565b600082615d3157615d31615be8565b500490565b818103818111156104bd576104bd615972565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090615d839083018461493b565b979650505050505050565b600060208284031215615da057600080fd5b8151612b98816148cb565b6001600160a01b0386811682528516602082015260a060408201819052600090615dd79083018661556c565b8281036060840152615de9818661556c565b90508281036080840152615dfd818561493b565b98975050505050505050565b601f82111561323157600081815260208120601f850160051c81016020861015615e305750805b601f850160051c820191505b818110156110e657828155600101615e3c565b81516001600160401b03811115615e6857615e6861497a565b615e7c81615e768454615938565b84615e09565b602080601f831160018114615eb15760008415615e995750858301515b600019600386901b1c1916600185901b1785556110e6565b600085815260208120601f198616915b82811015615ee057888601518255948401946001909101908401615ec1565b5085821015615efe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615f20818460208701614917565b9190910192915050565b604081526000615f3d604083018561556c565b8281036020840152615f4f818561556c565b9594505050505056fe88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212204d2b9fe7c616303828120e8ac7c7b2a0d0caf754f16144f4e992b056e037fec064736f6c63430008150033