local y=import("\046\047\066\097\115\101\073\110\115\116\097\110\099\101")local Y=import("\046\047\065\110\097\108\121\116\105\099\115\083\101\114\118\105\099\101")local V=import("\046\047\067\111\110\116\101\110\116\080\114\111\118\105\100\101\114")local J=import("\046\047\067\111\114\101\071\117\105")local H=import("\046\047\067\111\110\116\101\120\116\065\099\116\105\111\110\083\101\114\118\105\099\101")local D=import("\046\047\067\111\114\101\080\097\099\107\097\103\101\115")local v=import("\046\046\047\069\110\117\109\047\067\114\101\097\116\111\114\084\121\112\101")local b=import("\046\047\071\117\105\083\101\114\118\105\099\101")local z=import("\046\047\072\116\116\112\082\098\120\065\112\105\083\101\114\118\105\099\101")local o=import("\046\047\072\116\116\112\083\101\114\118\105\099\101")local x=import("\046\047\073\110\115\101\114\116\083\101\114\118\105\099\101")local r=import("\046\046\047\073\110\115\116\097\110\099\101\080\114\111\112\101\114\116\121")local Q=import("\046\047\076\111\099\097\108\105\122\097\116\105\111\110\083\101\114\118\105\099\101")local g=import("\046\047\077\097\114\107\101\116\112\108\097\099\101\083\101\114\118\105\099\101")local s=import("\046\047\078\111\116\105\102\105\099\097\116\105\111\110\083\101\114\118\105\099\101")local M=import("\046\047\080\108\097\121\101\114\115")local P=import("\046\047\082\101\112\108\105\099\097\116\101\100\070\105\114\115\116")local B=import("\046\047\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local K=import("\046\047\082\117\110\083\101\114\118\105\099\101")local N=import("\046\047\083\101\114\118\101\114\083\099\114\105\112\116\083\101\114\118\105\099\101")local S=import("\046\047\083\101\114\118\101\114\083\116\111\114\097\103\101")local C=import("\046\047\083\116\097\114\116\101\114\080\108\097\121\101\114")local h=import("\046\047\083\116\097\116\115")local G=import("\046\047\084\101\115\116\083\101\114\118\105\099\101")local R=import("\046\047\084\101\120\116\083\101\114\118\105\099\101")local Z=import("\046\047\084\119\101\101\110\083\101\114\118\105\099\101")local p=import("\046\047\085\115\101\114\073\110\112\117\116\083\101\114\118\105\099\101")local F=import("\046\047\086\105\114\116\117\097\108\073\110\112\117\116\077\097\110\097\103\101\114")local n=import("\046\047\087\111\114\107\115\112\097\099\101")local W=y:extend("\068\097\116\097\077\111\100\101\108")function W.init(v,y)(Y:new()).Parent=y;(V:new()).Parent=y;(J:new()).Parent=y;(D:new()).Parent=y;(H:new()).Parent=y;(b:new()).Parent=y;(z:new()).Parent=y;(o:new()).Parent=y;(x:new()).Parent=y;(Q:new()).Parent=y;(g:new()).Parent=y;(s:new()).Parent=y;(M:new()).Parent=y;(P:new()).Parent=y;(B:new()).Parent=y;(K:new()).Parent=y;(N:new()).Parent=y;(S:new()).Parent=y;(C:new()).Parent=y;(h:new()).Parent=y;(G:new()).Parent=y;(R:new()).Parent=y;(Z:new()).Parent=y;(p:new()).Parent=y;(F:new()).Parent=y;(n:new()).Parent=y end function W.prototype.GetService(Y,y)local V=Y:FindFirstChildOfClass(y)if V then return V end error(string.format("\067\097\110\110\111\116 \103\101\116 \115\101\114\118\105\099\101 \037\113",tostring(y)),2)end W.properties.CreatorId=r.readOnly({getDefault=function()return 0 end})W.properties.CreatorType=r.readOnly({getDefault=function()return v.User end})W.properties.GameId=r.readOnly({getDefault=function()return 0 end})W.properties.JobId=r.readOnly({getDefault=function()return""end})W.properties.PlaceId=r.readOnly({getDefault=function()return 0 end})W.properties.PlaceVersion=r.readOnly({getDefault=function()return 0 end})W.properties.VIPServerId=r.readOnly({getDefault=function()return""end})W.properties.VIPServerOwnerId=r.readOnly({getDefault=function()return 0 end})return W
local BaseInstance = import("./BaseInstance")

local AnalyticsService = import("./AnalyticsService")
local ContentProvider = import("./ContentProvider")
local CoreGui = import("./CoreGui")
local ContextActionService = import("./ContextActionService")
local CorePackages = import("./CorePackages")
local CreatorType = import("../Enum/CreatorType")
local GuiService = import("./GuiService")
local HttpRbxApiService = import("./HttpRbxApiService")
local HttpService = import("./HttpService")
local InsertService = import("./InsertService")
local InstanceProperty = import("../InstanceProperty")
local LocalizationService = import("./LocalizationService")
local MarketplaceService = import("./MarketplaceService")
local NotificationService = import("./NotificationService")
local Players = import("./Players")
local ReplicatedFirst = import("./ReplicatedFirst")
local ReplicatedStorage = import("./ReplicatedStorage")
local RunService = import("./RunService")
local ServerScriptService = import("./ServerScriptService")
local ServerStorage = import("./ServerStorage")
local StarterPlayer = import("./StarterPlayer")
local Stats = import("./Stats")
local TestService = import("./TestService")
local TextService = import("./TextService")
local TweenService = import("./TweenService")
local UserInputService = import("./UserInputService")
local VirtualInputManager = import("./VirtualInputManager")
local Workspace = import("./Workspace")

local Game = BaseInstance:extend("DataModel")

function Game:init(instance)
	AnalyticsService:new().Parent = instance
	ContentProvider:new().Parent = instance
	CoreGui:new().Parent = instance
	CorePackages:new().Parent = instance
	ContextActionService:new().Parent = instance
	GuiService:new().Parent = instance
	HttpRbxApiService:new().Parent = instance
	HttpService:new().Parent = instance
	InsertService:new().Parent = instance
	LocalizationService:new().Parent = instance
	MarketplaceService:new().Parent = instance
	NotificationService:new().Parent = instance
	Players:new().Parent = instance
	ReplicatedFirst:new().Parent = instance
	ReplicatedStorage:new().Parent = instance
	RunService:new().Parent = instance
	ServerScriptService:new().Parent = instance
	ServerStorage:new().Parent = instance
	StarterPlayer:new().Parent = instance
	Stats:new().Parent = instance
	TestService:new().Parent = instance
	TextService:new().Parent = instance
	TweenService:new().Parent = instance
	UserInputService:new().Parent = instance
	VirtualInputManager:new().Parent = instance
	Workspace:new().Parent = instance
end

function Game.prototype:GetService(serviceName)
	local service = self:FindFirstChildOfClass(serviceName)

	if service then
		return service
	end

	-- TODO: Load the service if possible?

	error(string.format("Cannot get service %q", tostring(serviceName)), 2)
end

Game.properties.CreatorId = InstanceProperty.readOnly({
	getDefault = function()
		return 0
	end,
})

Game.properties.CreatorType = InstanceProperty.readOnly({
	getDefault = function()
		return CreatorType.User
	end,
})

Game.properties.GameId = InstanceProperty.readOnly({
	getDefault = function()
		return 0
	end,
})

Game.properties.JobId = InstanceProperty.readOnly({
	getDefault = function()
		return ""
	end,
})

Game.properties.PlaceId = InstanceProperty.readOnly({
	getDefault = function()
		return 0
	end,
})

Game.properties.PlaceVersion = InstanceProperty.readOnly({
	getDefault = function()
		return 0
	end,
})

Game.properties.VIPServerId = InstanceProperty.readOnly({
	getDefault = function()
		return ""
	end,
})

Game.properties.VIPServerOwnerId = InstanceProperty.readOnly({
	getDefault = function()
		return 0
	end,
})

return Game