local v0 = {};
v0.__index = v0;
v0.new = function(v1, v2, v3, v4, v5)
    local v6 = {
        cancelled = false,
        phase = v4,
        currentInstance = v2,
        targetInstance = v1,
        eventName = v3,
        eventData = if not (type(v5) == "table") or table.isfrozen(v5) then v5 else table.freeze(v5)
    };
    setmetatable(v6, v0);
    return v6;
end;
v0.cancel = function(v7)
    v7.cancelled = true;
end;
return v0;


local v0 = require(script.Parent.Parent.FocusNavigationUtils);
local l_getAncestors_0 = v0.getAncestors;
local l_mockableWarn_0 = v0.mockableWarn;
local v3 = require(script.Parent.eventPropagationEvent);
local l___DEBUG_EVENT_PROPAGATION___0 = _G.__DEBUG_EVENT_PROPAGATION__;
local function v6(v5)
    return table.concat(table.pack(debug.info(v5, "sln")), " ");
end;
local function _(v7, v8)
    return v7[v8];
end;
local function _(v10, v11, v12)
    local v13 = v10[v11];
    if not v13 then
        return nil;
    else
        return v13[v12];
    end;
end;
local function _(v15, v16, v17, v18)
    local v19 = v15[v16];
    local v20 = if not v19 then nil else v19[v17];
    if v20 ~= nil then
        return v20[v18];
    else
        return nil;
    end;
end;
local v22 = {};
v22.__index = v22;
v22.registerEventHandler = function(v23, v24, v25, v26, v27)
    if l___DEBUG_EVENT_PROPAGATION___0 then
        print("+++ register handler", v25, tostring(v24), v27 or "Bubble");
    end;
    local v28 = v27 or "Bubble";
    v23.eventHandlerRegistry[v24] = v23.eventHandlerRegistry[v24] or {};
    v23.eventHandlerRegistry[v24][v25] = v23.eventHandlerRegistry[v24][v25] or {};
    if _G.__DEV__ then
        local v29 = v23.eventHandlerRegistry[v24][v25][v28];
        if v29 then
            l_mockableWarn_0(string.format("New handler bound to the %s phase of '%s' will override an existing handler:" .. "\n\tprevious handler: %s\n\t     new handler: %s", v28, v25, table.concat(table.pack(debug.info(v26, "sln")), " "), v6(v29)));
        end;
    end;
    v23.eventHandlerRegistry[v24][v25][v28] = v26;
end;
v22.registerEventHandlers = function(v30, v31, v32)
    if not v30.eventHandlerRegistry[v31] then
        v30.eventHandlerRegistry[v31] = {};
    end;
    for v33, v34 in v32, nil, nil do
        v30:registerEventHandler(v31, v33, v34.handler, v34.phase);
    end;
end;
v22.deregisterEventHandlers = function(v35, v36, v37)
    if v35.eventHandlerRegistry[v36] then
        for v38, v39 in v37, nil, nil do
            v35:deregisterEventHandler(v36, v38, v39.handler, v39.phase);
        end;
        return ;
    else
        return ;
    end;
end;
v22.deregisterEventHandler = function(v40, v41, v42, v43, v44)
    if l___DEBUG_EVENT_PROPAGATION___0 then
        print("--- deregister handler", v42, tostring(v41), v44 or "Bubble");
    end;
    local v45 = v44 or "Bubble";
    local v46 = v40.eventHandlerRegistry[v41];
    local v47 = if not v46 then nil else v46[v42];
    if not v47 or not v47[v45] then
        if _G.__DEV__ then
            l_mockableWarn_0(string.format("Cannot deregister unregistered event handler bound to the %s phase of '%s'", v45, v42));
        end;
        return ;
    else
        if _G.__DEV__ then
            local v48 = v47[v45];
            if v48 ~= v43 then
                l_mockableWarn_0(string.format("Deregistering non-matching event handler bound to the %s phase of '%s':" .. "\n\tprevious handler: %s\n\t     new handler: %s", v45, v42, if type(v43) == "function" then table.concat(table.pack(debug.info(v43, "sln")), " ") else tostring(v43), if type(v48) == "function" then table.concat(table.pack(debug.info(v48, "sln")), " ") else tostring(v48)));
            end;
        end;
        v47[v45] = nil;
        return ;
    end;
end;
v22.getRegisteredEventHandlers = function(v49, v50)
    local v51 = v49.eventHandlerRegistry[v50];
    if not v51 then
        return nil;
    else
        local v52 = {};
        for v53, v54 in v51, nil, nil do
            v52[v53] = next(v54) ~= nil;
        end;
        return v52;
    end;
end;
v22.propagateEvent = function(v55, v56, v57, v58, v59)
    local function _(v60, v61)
        local l_eventHandlerRegistry_0 = v55.eventHandlerRegistry;
        local l_v57_0 = v57;
        local v64 = l_eventHandlerRegistry_0[v60];
        local v65 = if not v64 then nil else v64[l_v57_0];
        local v66 = if v65 ~= nil then v65[v61] else nil;
        if not v66 then
            return false;
        else
            l_eventHandlerRegistry_0 = v3.new(v56, v60, v57, v61, v58);
            v66(l_eventHandlerRegistry_0);
            return l_eventHandlerRegistry_0.cancelled;
        end;
    end;
    local v68 = false;
    local v69 = if not v59 then l_getAncestors_0(v56) else {
        v56
    };
    if l___DEBUG_EVENT_PROPAGATION___0 then
        print(">>> capture event", v57, "for", (tostring(v56)));
    end;
    for v70 = #v69, 1, -1 do
        local v71 = v69[v70];
        local v72 = v55.eventHandlerRegistry[v71];
        local v73 = if not v72 then nil else v72[v57];
        local v74 = if v73 ~= nil then v73.Capture else nil;
        if not v74 then
            v68 = false;
        else
            local v75 = v3.new(v56, v71, v57, "Capture", v58);
            v74(v75);
            v68 = v75.cancelled;
        end;
        if v68 then
            return ;
        end;
    end;
    local v76 = v55.eventHandlerRegistry[v56];
    local v77 = if not v76 then nil else v76[v57];
    local v78 = if v77 ~= nil then v77.Target else nil;
    if not v78 then
        v68 = false;
    else
        local v79 = v3.new(v56, v56, v57, "Target", v58);
        v78(v79);
        v68 = v79.cancelled;
    end;
    if not v68 then
        if l___DEBUG_EVENT_PROPAGATION___0 then
            print("<<< bubble event", v57, "from", (tostring(v56)));
        end;
        for v80 = 1, #v69 do
            v76 = v69[v80];
            local v81 = v55.eventHandlerRegistry[v76];
            local v82 = if not v81 then nil else v81[v57];
            local v83 = if v82 ~= nil then v82.Bubble else nil;
            if not v83 then
                v68 = false;
            else
                local v84 = v3.new(v56, v76, v57, "Bubble", v58);
                v83(v84);
                v68 = v84.cancelled;
            end;
            if v68 then
                return ;
            end;
        end;
        return ;
    else
        return ;
    end;
end;
v22.new = function()
    local v85 = {
        eventHandlerRegistry = setmetatable({}, {
            __mode = "k"
        })
    };
    setmetatable(v85, v22);
    return v85;
end;
return v22;


local _ = require(script.eventPropagationEvent);
return (require(script.eventPropagationService));


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Object_0 = v2.Object;
local l_Symbol_0 = v2.Symbol;
local l_instanceof_0 = v2.instanceof;
local _ = require(l_Parent_1.RegExp);
local l_getType_0 = require(l_Parent_1.JestGetType).getType;
local v9 = {};
local v10 = require(l_Parent_0.jasmineUtils);
local l_equals_0 = v10.equals;
local l_hasProperty_0 = v10.hasProperty;
local l_isA_0 = v10.isA;
local l_isUndefined_0 = v10.isUndefined;
local l_getState_0 = require(l_Parent_0.jestMatchersObject_extracted).getState;
local _ = require(l_Parent_0.types);
local v17 = require(l_Parent_0.utils);
local v18 = l_Object_0.freeze(l_Object_0.assign({}, v9, {
    iterableEquality = v17.iterableEquality,
    subsetEquality = v17.subsetEquality
}));
local v19 = {};
v19.__index = v19;
v19.new = function(v20, v21)
    local v22 = {
        sample = v20,
        inverse = not (v21 == nil) and v21,
        ["$$typeof"] = l_Symbol_0.for_("jest.asymmetricMatcher")
    };
    setmetatable(v22, v19);
    return v22;
end;
v19.getMatcherContext = function(v23)
    return l_Object_0.assign({}, l_getState_0(), {
        equals = l_equals_0,
        isNot = v23.inverse,
        utils = v18
    });
end;
local v24 = {};
v24.__index = v24;
setmetatable(v24, v19);
v24.new = function(v25)
    if typeof(v25) ~= "table" and typeof(v25) ~= "string" then
        error("any() expects to be passed a typename string or a prototype class. " .. "Please pass one or use anything() to match any object.");
    end;
    local v26 = v19.new(v25);
    setmetatable(v26, v24);
    return v26;
end;
v24.asymmetricMatch = function(v27, v28)
    local v29 = l_getType_0(v27.sample);
    local v30 = l_getType_0(v28);
    if not (not (v29 == "table") or v30 ~= "table") or v29 == "error" and v30 == "error" then
        return l_instanceof_0(v28, v27.sample);
    elseif v29 == "string" and v27.sample == v30 then
        return true;
    else
        return false;
    end;
end;
v24.toString = function(_)
    return "Any";
end;
v24.getExpectedType = function(v32)
    return (tostring(v32.sample));
end;
v24.toAsymmetricMatcher = function(v33)
    return "Any<" .. tostring(v33.sample) .. ">";
end;
local v34 = {};
v34.__index = v34;
setmetatable(v34, v19);
v34.new = function(v35)
    local v36 = v19.new(v35);
    setmetatable(v36, v34);
    return v36;
end;
v34.asymmetricMatch = function(_, v38)
    return not l_isUndefined_0(v38);
end;
v34.toString = function(_)
    return "Anything";
end;
v34.toAsymmetricMatcher = function(_)
    return "Anything";
end;
local v41 = {};
v41.__index = v41;
setmetatable(v41, v19);
v41.new = function(v42, v43)
    if not (v43 ~= nil) then
        v43 = false;
    end;
    local v44 = v19.new(v42, v43);
    setmetatable(v44, v41);
    return v44;
end;
v41.asymmetricMatch = function(v45, v46)
    if not l_Array_0.isArray(v45.sample) then
        error(string.format("You must provide an array to %s, not '%s'.", v45:toString(), (typeof(v45.sample))));
    end;
    local v47 = false;
    if #v45.sample == 0 then
        v47 = true;
    elseif not (not l_Array_0.isArray(v46) or not l_Array_0.every(v45.sample, function(v48)
        return l_Array_0.some(v46, function(v49)
            return l_equals_0(v48, v49);
        end);
    end)) then
        v47 = true;
    end;
    if not v45.inverse then
        return v47;
    else
        return not v47;
    end;
end;
v41.toString = function(v50)
    if not v50.inverse then
        return "ArrayContaining";
    else
        return "ArrayNotContaining";
    end;
end;
v41.getExpectedType = function(_)
    return "array";
end;
local v52 = {};
v52.__index = v52;
setmetatable(v52, v19);
v52.new = function(v53, v54)
    if not (v54 ~= nil) then
        v54 = false;
    end;
    local v55 = v19.new(v53, v54);
    setmetatable(v55, v52);
    return v55;
end;
v52.asymmetricMatch = function(v56, v57)
    if typeof(v56.sample) ~= "table" then
        error(string.format("You must provide an object to %s, not '%s'.", v56:toString(), (typeof(v56.sample))));
    end;
    local v58 = true;
    for v59, v60 in pairs(v56.sample) do
        if not (l_hasProperty_0(v57, v59) and l_equals_0(v60, v57[v59])) then
            v58 = false;
            break;
        end;
    end;
    if not v56.inverse then
        return v58;
    else
        return not v58;
    end;
end;
v52.toString = function(v61)
    if not v61.inverse then
        return "ObjectContaining";
    else
        return "ObjectNotContaining";
    end;
end;
v52.getExpectedType = function(_)
    return "object";
end;
local v63 = {};
v63.__index = v63;
setmetatable(v63, v19);
v63.new = function(v64, v65)
    if not (v65 ~= nil) then
        v65 = false;
    end;
    if not l_isA_0("string", v64) then
        error("Expected is not a String");
    end;
    local v66 = v19.new(v64, v65);
    setmetatable(v66, v63);
    return v66;
end;
v63.asymmetricMatch = function(v67, v68)
    local v69 = l_isA_0("string", v68) and v68:find(v67.sample, 1, true);
    if not v67.inverse then
        return not not v69;
    else
        return not v69;
    end;
end;
v63.toString = function(v70)
    if not v70.inverse then
        return "StringContaining";
    else
        return "StringNotContaining";
    end;
end;
v63.getExpectedType = function(_)
    return "string";
end;
local v72 = {};
v72.__index = v72;
setmetatable(v72, v19);
v72.new = function(v73, v74)
    if not (v74 ~= nil) then
        v74 = false;
    end;
    if not (l_isA_0("string", v73) or l_isA_0("regexp", v73)) then
        error("Expected is not a String");
    end;
    local v75 = v19.new(v73, v74);
    setmetatable(v75, v72);
    return v75;
end;
v72.asymmetricMatch = function(v76, v77)
    local v78 = false;
    if l_isA_0("string", v77) then
        if not l_isA_0("string", v76.sample) then
            v78 = v76.sample:test(v77);
        else
            v76.sample = string.gsub(v76.sample, string.char(27) .. "%[", string.char(27) .. "%%[");
            v78 = v77:find(v76.sample);
        end;
    end;
    if not v76.inverse then
        return not not v78;
    else
        return not v78;
    end;
end;
v72.toString = function(v79)
    if not v79.inverse then
        return "StringMatching";
    else
        return "StringNotMatching";
    end;
end;
v72.getExpectedType = function(_)
    return "string";
end;
return {
    AsymmetricMatcher = v19,
    any = function(v81)
        return v24.new(v81);
    end,
    anything = function()
        return v34.new();
    end,
    arrayContaining = function(v82)
        return v41.new(v82);
    end,
    arrayNotContaining = function(v83)
        return v41.new(v83, true);
    end,
    objectContaining = function(v84)
        return v52.new(v84);
    end,
    objectNotContaining = function(v85)
        return v52.new(v85, true);
    end,
    stringContaining = function(v86)
        return v63.new(v86);
    end,
    stringNotContaining = function(v87)
        return v63.new(v87, true);
    end,
    stringMatching = function(v88)
        return v72.new(v88);
    end,
    stringNotMatching = function(v89)
        return v72.new(v89, true);
    end
};


local l_script_0 = script;
local l_Parent_0 = l_script_0.Parent;
local v2 = require(l_Parent_0.LuauPolyfill);
local l_Object_0 = v2.Object;
local l_AssertionError_0 = v2.AssertionError;
local v5 = require(l_Parent_0.JestMatcherUtils);
local v6 = require(l_script_0.asymmetricMatchers);
local l_any_0 = v6.any;
local l_anything_0 = v6.anything;
local l_arrayContaining_0 = v6.arrayContaining;
local l_arrayNotContaining_0 = v6.arrayNotContaining;
local l_objectContaining_0 = v6.objectContaining;
local l_objectNotContaining_0 = v6.objectNotContaining;
local l_stringContaining_0 = v6.stringContaining;
local l_stringNotContaining_0 = v6.stringNotContaining;
local l_stringMatching_0 = v6.stringMatching;
local l_stringNotMatching_0 = v6.stringNotMatching;
local l_equals_0 = require(l_script_0.jasmineUtils).equals;
local v18 = require(l_script_0.jestMatchersObject);
local l_getMatchers_0 = v18.getMatchers;
local l_getState_0 = v18.getState;
local l_setMatchers_0 = v18.setMatchers;
local l_setState_0 = v18.setState;
local v23 = require(l_script_0.matchers);
local v24 = require(l_script_0.spyMatchers);
local l_matchers_0 = require(l_script_0.toThrowMatchers).matchers;
local _ = require(l_script_0.types);
local v27 = require(l_script_0.utils);
local l_iterableEquality_0 = v27.iterableEquality;
local l_subsetEquality_0 = v27.subsetEquality;
local v30 = nil;
local v31 = nil;
local function v38(_, v33, ...)
    if #{
        ...
    } ~= 0 then
        error("Expect takes at most one argument.");
    end;
    local v34 = l_getMatchers_0();
    local v35 = {
        never = {},
        rejects = {
            never = {}
        },
        resolves = {
            never = {}
        }
    };
    for v36, v37 in pairs(v34) do
        v35[v36] = v30(v37, false, "", v33);
        v35.never[v36] = v30(v37, true, "", v33);
    end;
    return v35;
end;
local function _(v39)
    if not v39 then
        return (v5.RECEIVED_COLOR("No message was specified for this matcher."));
    else
        return (v39());
    end;
end;
v30 = function(v41, v42, v43, v44, v45)
    return function(...)
        local v46 = true;
        local v47 = {
            dontThrow = function()
                v46 = false;
            end,
            equals = l_equals_0,
            error = v45,
            isNot = v42,
            promise = v43,
            utils = l_Object_0.assign({
                iterableEquality = l_iterableEquality_0,
                subsetEquality = l_subsetEquality_0
            }, v5)
        };
        l_Object_0.assign(v47, l_getState_0());
        local function v52(v48, v49)
            v31(v48);
            l_getState_0().assertionCalls = l_getState_0().assertionCalls + 1;
            if not (not (v48.pass and v42) and (v48.pass or v42)) then
                local l_message_0 = v48.message;
                local v51 = if not l_message_0 then v5.RECEIVED_COLOR("No message was specified for this matcher.") else l_message_0();
                l_message_0 = nil;
                if not v45 then
                    if not v49 then
                        l_message_0 = {
                            message = v51
                        };
                    else
                        error("Currently async is not implemented");
                    end;
                else
                    l_message_0 = v45;
                    l_message_0.message = v51;
                end;
                l_message_0.matcherResult = l_Object_0.assign({}, v48, {
                    message = v51
                });
                if not v46 then
                    table.insert(l_getState_0().suppressedErrors, error);
                else
                    error(l_AssertionError_0.new({
                        message = v51
                    }));
                    return ;
                end;
            end;
        end;
        local v53 = nil;
        local v54 = nil;
        local v55 = nil;
        if not xpcall(function(...)
            v53 = v41(v47, v44, ...);
            return v52(v53);
        end, function(v56)
            v54 = debug.traceback(nil, 7);
            v55 = v56;
        end, ...) then
            if typeof(v55) == "table" and typeof(v55.message) == "string" then
                local v57 = l_AssertionError_0.new({
                    message = v55.message
                });
                v57.stack = v54;
                error(v57);
            else
                local v58 = l_AssertionError_0.new({
                    message = v55
                });
                v58.stack = v54;
                error(v58);
            end;
        end;
    end;
end;
v31 = function(v59)
    if not (typeof(v59) == "table" and typeof(v59.pass) == "boolean") or (v59.message and typeof(v59.message) ~= "string") and typeof(v59.message) ~= "function" then
        error("Unexpected return from a matcher function.\n" .. "Matcher functions should " .. "return an object in the following format:\n" .. "  {message?: string | function, pass: boolean}\n" .. v5.stringify(v59) .. " was returned");
    end;
end;
local v60 = {};
v60.extend = function(v61)
    l_setMatchers_0(v61, false, v60);
end;
v60.anything = l_anything_0;
v60.any = l_any_0;
v60.never = {
    arrayContaining = l_arrayNotContaining_0,
    objectContaining = l_objectNotContaining_0,
    stringContaining = l_stringNotContaining_0,
    stringMatching = l_stringNotMatching_0
};
v60.objectContaining = l_objectContaining_0;
v60.arrayContaining = l_arrayContaining_0;
v60.stringContaining = l_stringContaining_0;
v60.stringMatching = l_stringMatching_0;
l_setMatchers_0(v23, true, v60);
l_setMatchers_0(v24, true, v60);
l_setMatchers_0(l_matchers_0, true, v60);
local l_plugins_0 = require(l_Parent_0.JestSnapshot).plugins;
v60.addSnapshotSerializer = l_plugins_0.addSerializer;
v60.resetSnapshotSerializers = l_plugins_0.resetSerializers;
v60.getState = l_getState_0;
v60.setState = l_setState_0;
local v63 = require(l_Parent_0.JestSnapshot);
l_setMatchers_0({
    toMatchSnapshot = v63.toMatchSnapshot,
    toThrowErrorMatchingSnapshot = v63.toThrowErrorMatchingSnapshot
}, false, v60);
setmetatable(v60, {
    __call = v38
});
return v60;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.RobloxShared);
local _ = require(l_Parent_0.LuauPolyfill);
return {
    equals = v1.expect.equals,
    isA = v1.expect.isA,
    fnNameFor = function(_)
        return "[Function]";
    end,
    isUndefined = function(v4)
        return v4 == nil;
    end,
    getPrototype = function(v5)
        if getmetatable(v5) ~= nil then
            return getmetatable(v5).__index;
        else
            return nil;
        end;
    end,
    hasProperty = function(v6, v7)
        if v6 then
            local l_status_0, l_result_0 = pcall(function()
                return v6[v7];
            end);
            if not l_status_0 then
                error(l_result_0);
                return ;
            else
                return l_result_0 ~= nil;
            end;
        else
            return false;
        end;
    end
};


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.Parent.LuauPolyfill);
local l_Symbol_0 = v1.Symbol;
local l_Object_0 = v1.Object;
local l_AsymmetricMatcher_0 = require(l_Parent_0.asymmetricMatchers).AsymmetricMatcher;
local _ = require(l_Parent_0.types);
local v6 = require(l_Parent_0.jestMatchersObject_extracted);
local l_JEST_MATCHERS_OBJECT_0 = v6.JEST_MATCHERS_OBJECT;
local v8 = l_Symbol_0.for_("$$jest-internal-matcher");
if not _G[l_JEST_MATCHERS_OBJECT_0] then
    _G[l_JEST_MATCHERS_OBJECT_0] = {
        matchers = {},
        state = {
            assertionCalls = 0,
            expectedAssertionsNumber = nil,
            isExpectingAssertions = false,
            suppressedErrors = {}
        }
    };
end;
return {
    INTERNAL_MATCHER_FLAG = v8,
    getState = v6.getState,
    setState = function(v9)
        l_Object_0.assign(_G[l_JEST_MATCHERS_OBJECT_0].state, v9);
    end,
    getMatchers = function()
        return _G[l_JEST_MATCHERS_OBJECT_0].matchers;
    end,
    setMatchers = function(v10, v11, v12)
        for v13, v14 in pairs(v10) do
            if not v11 then
                local v15 = {};
                v15.__index = v15;
                setmetatable(v15, l_AsymmetricMatcher_0);
                v15.new = function(v16, ...)
                    if not (v16 ~= nil) then
                        v16 = false;
                    end;
                    local v17 = l_AsymmetricMatcher_0.new({
                        ...
                    }, v16);
                    setmetatable(v17, v15);
                    return v17;
                end;
                v15.asymmetricMatch = function(v18, v19)
                    local l_pass_0 = v14(v18:getMatcherContext(), v19, unpack(v18.sample)).pass;
                    if not v18.inverse then
                        return l_pass_0;
                    else
                        return not l_pass_0;
                    end;
                end;
                v15.toString = function(v21)
                    if not v21.inverse then
                        return (tostring(v13));
                    else
                        return string.format("never.%s", v13);
                    end;
                end;
                v15.getExpectedType = function(_)
                    return "any";
                end;
                v15.toAsymmetricMatcher = function(v23)
                    local l_sample_0 = v23.sample;
                    local v25 = 1;
                    local v26 = "";
                    while v25 < #l_sample_0 do
                        v26 = v26 .. tostring(l_sample_0[v25]) .. ", ";
                        v25 = v25 + 1;
                    end;
                    return string.format("%s<%s>", v23:toString(), v26 .. tostring(l_sample_0[v25]));
                end;
                v12[v13] = function(...)
                    return v15.new(false, ...);
                end;
                if not v12.never then
                    v12.never = {};
                end;
                v12.never[v13] = function(...)
                    return v15.new(true, ...);
                end;
            end;
        end;
        l_Object_0.assign(_G[l_JEST_MATCHERS_OBJECT_0].matchers, v10);
    end
};


local l_Parent_0 = script.Parent;
local l_Symbol_0 = require(l_Parent_0.Parent.LuauPolyfill).Symbol;
local _ = require(l_Parent_0.types);
local v3 = l_Symbol_0.for_("$$jest-matchers-object");
return {
    JEST_MATCHERS_OBJECT = v3,
    getState = function()
        return _G[v3].state;
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Array_0 = v2.Array;
local l_Error_0 = v2.Error;
local l_Number_0 = v2.Number;
local l_Object_0 = v2.Object;
local l_instanceof_0 = v2.instanceof;
local _ = require(l_Parent_1.RegExp);
local v9 = require(l_Parent_1.JestGetType);
local l_getType_0 = v9.getType;
local l_isPrimitive_0 = v9.isPrimitive;
local v12 = require(l_Parent_1.JestMatcherUtils);
local l_DIM_COLOR_0 = v12.DIM_COLOR;
local l_EXPECTED_COLOR_0 = v12.EXPECTED_COLOR;
local l_RECEIVED_COLOR_0 = v12.RECEIVED_COLOR;
local l_SUGGEST_TO_CONTAIN_EQUAL_0 = v12.SUGGEST_TO_CONTAIN_EQUAL;
local l_ensureExpectedIsNonNegativeInteger_0 = v12.ensureExpectedIsNonNegativeInteger;
local l_ensureNoExpected_0 = v12.ensureNoExpected;
local l_ensureNumbers_0 = v12.ensureNumbers;
local l_getLabelPrinter_0 = v12.getLabelPrinter;
local l_matcherErrorMessage_0 = v12.matcherErrorMessage;
local l_matcherHint_0 = v12.matcherHint;
local l_printDiffOrStringify_0 = v12.printDiffOrStringify;
local l_printExpected_0 = v12.printExpected;
local l_printReceived_0 = v12.printReceived;
local l_printWithType_0 = v12.printWithType;
local l_stringify_0 = v12.stringify;
local l_equals_0 = require(l_Parent_0.jasmineUtils).equals;
local v29 = require(l_Parent_0.print);
local l_printCloseTo_0 = v29.printCloseTo;
local l_printExpectedConstructorName_0 = v29.printExpectedConstructorName;
local l_printExpectedConstructorNameNot_0 = v29.printExpectedConstructorNameNot;
local l_printReceivedArrayContainExpectedItem_0 = v29.printReceivedArrayContainExpectedItem;
local l_printReceivedConstructorName_0 = v29.printReceivedConstructorName;
local l_printReceivedConstructorNameNot_0 = v29.printReceivedConstructorNameNot;
local l_printReceivedStringContainExpectedResult_0 = v29.printReceivedStringContainExpectedResult;
local l_printReceivedStringContainExpectedSubstring_0 = v29.printReceivedStringContainExpectedSubstring;
local _ = require(l_Parent_0.types);
local v39 = require(l_Parent_0.utils);
local l_getObjectSubset_0 = v39.getObjectSubset;
local l_getPath_0 = v39.getPath;
local l_iterableEquality_0 = v39.iterableEquality;
local l_pathAsArray_0 = v39.pathAsArray;
local l_subsetEquality_0 = v39.subsetEquality;
local l_typeEquality_0 = v39.typeEquality;
local v46 = require(l_Parent_1.RobloxShared);
local l_instanceSubsetEquality_0 = v46.RobloxInstance.instanceSubsetEquality;
local l_getInstanceSubset_0 = v46.RobloxInstance.getInstanceSubset;
local function _(v49)
    return not not v49;
end;
local v51 = {
    l_typeEquality_0
};
local function v60(v52, v53, v54)
    local v55 = {
        comment = "Object.is equality",
        isNot = v52.isNot,
        promise = v52.promise
    };
    local v56 = l_Object_0.is(v53, v54);
    local _ = nil;
    return {
        actual = v53,
        expected = v54,
        message = not v56 and function()
            local v58 = nil;
            if l_equals_0(v53, v54, {
                l_iterableEquality_0
            }) then
                v58 = "toEqual";
            end;
            local v59 = l_matcherHint_0("toBe", nil, nil, v55) .. "\n\n";
            if v58 ~= nil then
                v59 = v59 .. l_DIM_COLOR_0(string.format("If it should pass with deep equality, replace \"%s\" with \"%s\"", "toBe", v58)) .. "\n\n";
            end;
            return v59 .. l_printDiffOrStringify_0(v54, v53, "Expected", "Received", not not v52.expand);
        end or function()
            return l_matcherHint_0("toBe", nil, nil, v55) .. "\n\n" .. string.format("Expected: never %s", l_printExpected_0(v54));
        end,
        name = "toBe",
        pass = v56
    };
end;
local function v74(v61, v62, v63, v64)
    local v65 = nil;
    if not v64 then
        v64 = 2;
    else
        v65 = "precision";
    end;
    local l_isNot_0 = v61.isNot;
    local v68 = {
        isNot = l_isNot_0,
        promise = v61.promise,
        secondArgument = v65,
        secondArgumentColor = function(v67)
            return v67;
        end
    };
    if typeof(v63) ~= "number" then
        error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toBeCloseTo", nil, nil, v68), string.format("%s value must be a number", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v63, l_printExpected_0))));
    end;
    if typeof(v62) ~= "number" then
        error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toBeCloseTo", nil, nil, v68), string.format("%s value must be a number", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v62, l_printReceived_0))));
    end;
    local v69 = false;
    local v70 = 0;
    local v71 = 0;
    if v62 == math.huge and v63 == math.huge then
        v69 = true;
    elseif v62 == -math.huge and v63 == -math.huge then
        v69 = true;
    else
        v70 = 10 ^ (-v64) / 2;
        v71 = math.abs(v63 - v62);
        v69 = v71 < v70;
    end;
    local _ = nil;
    return {
        message = not v69 and function()
            return l_matcherHint_0("toBeCloseTo", nil, nil, v68) .. "\n\n" .. string.format("Expected: %s\n", l_printExpected_0(v63)) .. string.format("Received: %s\n", l_printReceived_0(v62)) .. "\n" .. l_printCloseTo_0(v71, v70, v64, l_isNot_0);
        end or function()
            local v73 = l_matcherHint_0("toBeCloseTo", nil, nil, v68) .. "\n\n" .. string.format("Expected: never %s\n", l_printExpected_0(v63));
            if v71 == 0 then
                return v73;
            else
                return v73 .. string.format("Received:       %s\n", l_printReceived_0(v62)) .. "\n" .. l_printCloseTo_0(v71, v70, v64, l_isNot_0);
            end;
        end,
        pass = v69
    };
end;
local function v79(v75, v76, v77)
    local v78 = {
        isNot = v75.isNot,
        promise = v75.promise
    };
    l_ensureNoExpected_0(v77, "toBeDefined", v78);
    return {
        message = function()
            return l_matcherHint_0("toBeDefined", nil, "", v78) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v76));
        end,
        pass = v76 ~= nil
    };
end;
local function v84(v80, v81, v82)
    local v83 = {
        isNot = v80.isNot,
        promise = v80.promise
    };
    l_ensureNoExpected_0(v82, "toBeFalsy", v83);
    return {
        message = function()
            return l_matcherHint_0("toBeFalsy", nil, "", v83) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v81));
        end,
        pass = not v81
    };
end;
local function v90(v85, v86, v87)
    local l_isNot_1 = v85.isNot;
    local v89 = {
        isNot = l_isNot_1,
        promise = v85.promise
    };
    l_ensureNumbers_0(v86, v87, "toBeGreaterThan", v89);
    return {
        message = function()
            return l_matcherHint_0("toBeGreaterThan", nil, nil, v89) .. "\n\n" .. string.format("Expected:%s > %s\n", not l_isNot_1 and "" or " never", l_printExpected_0(v87)) .. string.format("Received:%s   %s", not l_isNot_1 and "" or "      ", l_printReceived_0(v86));
        end,
        pass = v87 < v86
    };
end;
local function v96(v91, v92, v93)
    local l_isNot_2 = v91.isNot;
    local v95 = {
        isNot = l_isNot_2,
        promise = v91.promise
    };
    l_ensureNumbers_0(v92, v93, "toBeGreaterThanOrEqual", v95);
    return {
        message = function()
            return l_matcherHint_0("toBeGreaterThanOrEqual", nil, nil, v95) .. "\n\n" .. string.format("Expected:%s >= %s\n", not l_isNot_2 and "" or " never", l_printExpected_0(v93)) .. string.format("Received:%s    %s", not l_isNot_2 and "" or "      ", l_printReceived_0(v92));
        end,
        pass = v93 <= v92
    };
end;
local function v106(v97, v98, v99)
    local v100 = {
        isNot = v97.isNot,
        promise = v97.promise
    };
    if typeof(v99) ~= "table" then
        error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toBeInstanceOf", nil, nil, v100), string.format("%s value must be a prototype class", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v99, l_printExpected_0))));
    end;
    local v101 = l_instanceof_0(v98, v99);
    local v102 = nil;
    if typeof((getmetatable(v98))) == "table" and typeof(getmetatable(v98).__index) == "table" then
        v102 = getmetatable(v98).__index;
    end;
    local _ = nil;
    return {
        message = not v101 and function()
            local v104 = l_matcherHint_0("toBeInstanceOf", nil, nil, v100) .. "\n\n" .. l_printExpectedConstructorName_0("Expected constructor", v99);
            if l_isPrimitive_0(v98) or v102 == nil then
                return v104 .. string.format("\nReceived value has no prototype\nReceived value: %s", l_printReceived_0(v98));
            else
                return v104 .. l_printReceivedConstructorName_0("Received constructor", v102);
            end;
        end or function()
            local v105 = l_matcherHint_0("toBeInstanceOf", nil, nil, v100) .. "\n\n" .. l_printExpectedConstructorNameNot_0("Expected constructor", v99);
            if v102 and v102 ~= v99 then
                v105 = v105 .. l_printReceivedConstructorNameNot_0("Received constructor", v102, v99);
            end;
            return v105;
        end,
        pass = v101
    };
end;
local function v112(v107, v108, v109)
    local l_isNot_3 = v107.isNot;
    local v111 = {
        isNot = l_isNot_3,
        promise = v107.promise
    };
    l_ensureNumbers_0(v108, v109, "toBeLessThan", v111);
    return {
        message = function()
            return l_matcherHint_0("toBeLessThan", nil, nil, v111) .. "\n\n" .. string.format("Expected:%s < %s\n", not l_isNot_3 and "" or " never", l_printExpected_0(v109)) .. string.format("Received:%s   %s", not l_isNot_3 and "" or "      ", l_printReceived_0(v108));
        end,
        pass = v108 < v109
    };
end;
local function v118(v113, v114, v115)
    local l_isNot_4 = v113.isNot;
    local v117 = {
        isNot = l_isNot_4,
        promise = v113.promise
    };
    l_ensureNumbers_0(v114, v115, "toBeLessThanOrEqual", v117);
    return {
        message = function()
            return l_matcherHint_0("toBeLessThanOrEqual", nil, nil, v117) .. "\n\n" .. string.format("Expected:%s <= %s\n", not l_isNot_4 and "" or " never", l_printExpected_0(v115)) .. string.format("Received:%s    %s", not l_isNot_4 and "" or "      ", l_printReceived_0(v114));
        end,
        pass = v114 <= v115
    };
end;
local function v123(v119, v120, v121)
    local v122 = {
        isNot = v119.isNot,
        promise = v119.promise
    };
    l_ensureNoExpected_0(v121, "toBeNan", v122);
    return {
        message = function()
            return l_matcherHint_0("toBeNan", nil, "", v122) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v120));
        end,
        pass = l_Number_0.isNaN(v120)
    };
end;
local function v128(v124, v125, v126)
    local v127 = {
        isNot = v124.isNot,
        promise = v124.promise
    };
    l_ensureNoExpected_0(v126, "toBeNil", v127);
    return {
        message = function()
            return l_matcherHint_0("toBeNil", nil, "", v127) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v125));
        end,
        pass = v125 == nil
    };
end;
return {
    toBe = v60,
    toBeCloseTo = v74,
    toBeDefined = v79,
    toBeFalsy = v84,
    toBeGreaterThan = v90,
    toBeGreaterThanOrEqual = v96,
    toBeInstanceOf = v106,
    toBeLessThan = v112,
    toBeLessThanOrEqual = v118,
    toBeNan = v123,
    toBeNaN = v123,
    toBeNil = v128,
    toBeNull = v128,
    toBeTruthy = function(v129, v130, v131)
        local v132 = {
            isNot = v129.isNot,
            promise = v129.promise
        };
        l_ensureNoExpected_0(v131, "toBeTruthy", v132);
        return {
            message = function()
                return l_matcherHint_0("toBeTruthy", nil, "", v132) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v130));
            end,
            pass = not not v130
        };
    end,
    toBeUndefined = function(v133, v134, v135)
        local v136 = {
            isNot = v133.isNot,
            promise = v133.promise
        };
        l_ensureNoExpected_0(v135, "toBeUndefined", v136);
        return {
            message = function()
                return l_matcherHint_0("toBeUndefined", nil, "", v136) .. "\n\n" .. string.format("Received: %s", l_printReceived_0(v134));
            end,
            pass = v134 == nil
        };
    end,
    toContain = function(v137, v138, v139)
        local l_isNot_5 = v137.isNot;
        local v141 = {
            comment = "string.find or table.find",
            isNot = l_isNot_5,
            promise = v137.promise
        };
        if v138 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toContain", nil, nil, v141), string.format("%s value must not be nil", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v138, l_printReceived_0))));
        end;
        if typeof(v138) == "string" then
            local v142 = ("%s value must be a string if %s value is a string"):format(l_EXPECTED_COLOR_0("expected"), l_RECEIVED_COLOR_0("received"));
            if typeof(v139) ~= "string" then
                error(l_Error_0.new(l_matcherErrorMessage_0(l_matcherHint_0("toContain", v138, tostring(v139), v141), v142, tostring(l_printWithType_0("Expected", v139, l_printExpected_0)) .. "\n" .. tostring(l_printWithType_0("Received", v138, l_printReceived_0)))));
            end;
            local v143 = v138:find(tostring(v139), 1, true);
            return {
                message = function()
                    local v144 = string.format("Expected %s", typeof(v139) == "string" and "substring" or "value");
                    local v145 = l_getLabelPrinter_0(v144, "Received string");
                    return l_matcherHint_0("toContain", nil, nil, v141) .. "\n\n" .. string.format("%s%s%s\n", v145(v144), not l_isNot_5 and "" or "never ", l_printExpected_0(v139)) .. string.format("%s%s%s", v145("Received string"), not l_isNot_5 and "" or "      ", not not l_isNot_5 and l_printReceivedStringContainExpectedSubstring_0(v138, v143, #tostring(v139)) or l_printReceived_0(v138));
                end,
                pass = v143 ~= nil
            };
        else
            local v146 = table.find(l_Array_0.from(v138), v139);
            return {
                message = function()
                    local v147 = string.format("Received %s", l_getType_0(v138));
                    local v148 = l_getLabelPrinter_0("Expected value", v147);
                    local v149 = l_matcherHint_0("toContain", nil, nil, v141) .. "\n\n" .. string.format("%s%s%s\n", v148("Expected value"), not l_isNot_5 and "" or "never ", l_printExpected_0(v139)) .. string.format("%s%s", v148(v147), not l_isNot_5 and "" or "      ");
                    v149 = if not not l_isNot_5 and l_Array_0.isArray(v138) then v149 .. l_printReceivedArrayContainExpectedItem_0(v138, v146) else v149 .. l_printReceived_0(v138);
                    if not l_isNot_5 and l_Array_0.findIndex(v138, function(v150)
                        return l_equals_0(v150, v139, {
                            l_iterableEquality_0
                        });
                    end) ~= -1 then
                        v149 = v149 .. string.format("\n\n%s", l_SUGGEST_TO_CONTAIN_EQUAL_0);
                    end;
                    return v149;
                end,
                pass = v146 ~= nil
            };
        end;
    end,
    toContainEqual = function(v151, v152, v153)
        local l_isNot_6 = v151.isNot;
        local v155 = {
            comment = "deep equality",
            isNot = l_isNot_6,
            promise = v151.promise
        };
        if v152 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toContainEqual", nil, nil, v155), string.format("%s value must not be nil", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v152, l_printReceived_0))));
        end;
        local v157 = l_Array_0.findIndex(l_Array_0.from(v152), function(v156)
            return l_equals_0(v156, v153, {
                l_iterableEquality_0
            });
        end);
        return {
            message = function()
                local v158 = string.format("Received %s", l_getType_0(v152));
                local v159 = l_getLabelPrinter_0("Expected value", v158);
                local v160 = l_matcherHint_0("toContainEqual", nil, nil, v155) .. "\n\n" .. string.format("%s%s%s\n", v159("Expected value"), not l_isNot_6 and "" or "never ", l_printExpected_0(v153)) .. string.format("%s%s", v159(v158), not l_isNot_6 and "" or "      ");
                if not l_isNot_6 or not l_Array_0.isArray(v152) then
                    return v160 .. l_printReceived_0(v152);
                else
                    return v160 .. l_printReceivedArrayContainExpectedItem_0(v152, v157);
                end;
            end,
            pass = v157 ~= -1
        };
    end,
    toEqual = function(v161, v162, v163)
        local v164 = {
            comment = "deep equality",
            isNot = v161.isNot,
            promise = v161.promise
        };
        local v165 = l_equals_0(v162, v163, {
            l_iterableEquality_0
        });
        local _ = nil;
        return {
            actual = v162,
            expected = v163,
            message = not v165 and function()
                return l_matcherHint_0("toEqual", nil, nil, v164) .. "\n\n" .. l_printDiffOrStringify_0(v163, v162, "Expected", "Received", not not v161.expand);
            end or function()
                local v167 = l_matcherHint_0("toEqual", nil, nil, v164) .. "\n\n" .. string.format("Expected: never %s\n", l_printExpected_0(v163));
                if l_stringify_0(v163) ~= l_stringify_0(v162) then
                    v167 = v167 .. string.format("Received:       %s", l_printReceived_0(v162));
                end;
                return v167;
            end,
            name = "toEqual",
            pass = v165
        };
    end,
    toHaveLength = function(v168, v169, v170)
        local l_isNot_7 = v168.isNot;
        local v172 = {
            isNot = l_isNot_7,
            promise = v168.promise
        };
        local v173 = false;
        if typeof(v169) == "table" then
            v173 = typeof(v169.length) == "number";
        end;
        if not (not (not l_Array_0.isArray(v169) and typeof(v169) ~= "string") or v173) then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toHaveLength", nil, nil, v172), string.format("%s value must have a length property whose value must be a number", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v169, l_printReceived_0))));
        end;
        l_ensureExpectedIsNonNegativeInteger_0(v170, "toHaveLength", v172);
        local v174 = nil;
        local v175 = nil;
        if v169.length ~= nil then
            v175 = v169.length;
            v174 = v175 == v170;
        else
            v175 = #v169;
            v174 = v175 == v170;
        end;
        return {
            message = function()
                local v176 = string.format("Received %s", l_getType_0(v169));
                local v177 = l_getLabelPrinter_0("Expected length", "Received length", v176);
                local v178 = l_matcherHint_0("toHaveLength", nil, nil, v172) .. "\n\n" .. string.format("%s%s%s\n", v177("Expected length"), not l_isNot_7 and "" or "never ", l_printExpected_0(v170));
                if not l_isNot_7 then
                    v178 = v178 .. string.format("%s%s\n", v177("Received length"), l_printReceived_0(v175));
                end;
                return v178 .. string.format("%s%s%s", v177(v176), not l_isNot_7 and "" or "      ", l_printReceived_0(v169));
            end,
            pass = v174
        };
    end,
    toHaveProperty = function(v179, v180, v181, v182)
        local v183 = v182 ~= nil;
        local v184 = {
            isNot = v179.isNot,
            promise = v179.promise,
            secondArgument = not v183 and "" or "value"
        };
        if v180 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toHaveProperty", nil, "path", v184), string.format("%s value must not be nil", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v180, l_printReceived_0))));
        end;
        local v185 = l_getType_0(v181);
        if v185 ~= "string" and v185 ~= "table" then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toHaveProperty", nil, "path", v184), string.format("%s path must be a string or array", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v181, l_printExpected_0))));
        end;
        local v186 = nil;
        v186 = if typeof(v181) == "string" then #l_pathAsArray_0(v181) else #v181;
        if v185 == "table" and v186 == 0 then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toHaveProperty", nil, "path", v184), string.format("%s path must not be an empty array", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v181, l_printExpected_0))));
        end;
        local v187 = l_getPath_0(v180, v181);
        local l_lastTraversedObject_0 = v187.lastTraversedObject;
        local l_hasEndProp_0 = v187.hasEndProp;
        local l_traversedPath_0 = v187.traversedPath;
        local v191 = #l_traversedPath_0 == v186;
        local v192 = nil;
        v192 = if not v191 then l_lastTraversedObject_0 else v187.value;
        local v193 = nil;
        v193 = if not v183 then not not l_hasEndProp_0 else l_equals_0(v187.value, v182, {
            l_iterableEquality_0
        });
        local _ = nil;
        return {
            message = not v193 and function()
                local v195 = l_matcherHint_0("toHaveProperty", nil, "path", v184) .. "\n\n" .. string.format("Expected path: %s\n", l_printExpected_0(v181));
                if not v191 then
                    v195 = v195 .. "Received path: ";
                    v195 = if not (v185 ~= "table") or #l_traversedPath_0 == 0 then v195 .. string.format("%s\n\n", l_printReceived_0(l_traversedPath_0)) else v195 .. string.format("%s\n\n", l_printReceived_0(table.concat(l_traversedPath_0, ".")));
                    if v183 then
                        v195 = v195 .. string.format("Expected value: %s\n", l_printExpected_0(v182));
                    end;
                    return v195 .. string.format("Received value: %s", l_printReceived_0(v192));
                else
                    return v195 .. "\n" .. l_printDiffOrStringify_0(v182, v192, "Expected value", "Received value", not not v179.expand);
                end;
            end or function()
                local v196 = l_matcherHint_0("toHaveProperty", nil, "path", v184) .. "\n\n";
                if not v183 then
                    return v196 .. string.format("Expected path: never %s\n\n", l_printExpected_0(v181)) .. string.format("Received value: %s", l_printReceived_0(v192));
                else
                    v196 = v196 .. string.format("Expected path: %s\n\n", l_printExpected_0(v181)) .. string.format("Expected value: never %s", l_printExpected_0(v182));
                    if l_stringify_0(v182) ~= l_stringify_0(v192) then
                        return v196 .. string.format("\nReceived value:       %s", l_printReceived_0(v192));
                    else
                        return v196;
                    end;
                end;
            end,
            pass = v193
        };
    end,
    toMatch = function(v197, v198, v199)
        local v200 = {
            isNot = v197.isNot,
            promise = v197.promise
        };
        if typeof(v198) ~= "string" then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatch", nil, nil, v200), string.format("%s value must be a string", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v198, l_printReceived_0))));
        end;
        if typeof(v199) ~= "string" and l_getType_0(v199) ~= "regexp" then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatch", nil, nil, v200), string.format("%s value must be a string or regular expression", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v199, l_printExpected_0))));
        end;
        local v201 = nil;
        if typeof(v199) == "string" then
            v199 = string.gsub(v199, string.char(27) .. "%[", string.char(27) .. "%%[");
            v201 = v198:find(v199) ~= nil;
        else
            v201 = v199:test(v198);
        end;
        local _ = nil;
        return {
            message = not v201 and function()
                local v203 = l_getLabelPrinter_0("Expected pattern", "Received string");
                return l_matcherHint_0("toMatch", nil, nil, v200) .. "\n\n" .. string.format("%s%s\n", v203("Expected pattern"), l_printExpected_0(v199)) .. string.format("%s%s", v203("Received string"), l_printReceived_0(v198));
            end or function()
                local v204 = l_matcherHint_0("toMatch", nil, nil, v200) .. "\n\n" .. string.format("Expected pattern: never %s\n", l_printExpected_0(v199));
                if typeof(v199) == "string" then
                    return v204 .. string.format("Received string:        %s", l_printReceivedStringContainExpectedSubstring_0(v198, v198:find(v199), #v199));
                else
                    return v204 .. string.format("Received string:        %s", l_printReceivedStringContainExpectedResult_0(v198, v199:exec(v198)));
                end;
            end,
            pass = v201
        };
    end,
    toMatchObject = function(v205, v206, v207)
        local v208 = {
            isNot = v205.isNot,
            promise = v205.promise
        };
        if not (typeof(v206) == "table") or v206 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatchObject", nil, nil, v208), string.format("%s value must be a non-nil object", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v206, l_printReceived_0))));
        end;
        if not (typeof(v207) == "table") or v207 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatchObject", nil, nil, v208), string.format("%s value must be a non-nil object", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v207, l_printExpected_0))));
        end;
        local v209 = l_equals_0(v206, v207, {
            l_iterableEquality_0,
            l_subsetEquality_0
        });
        local _ = nil;
        return {
            message = not v209 and function()
                return l_matcherHint_0("toMatchObject", nil, nil, v208) .. "\n\n" .. l_printDiffOrStringify_0(v207, l_getObjectSubset_0(v206, v207), "Expected", "Received", not not v205.expand);
            end or function()
                local v211 = l_matcherHint_0("toMatchObject", nil, nil, v208) .. "\n\n" .. string.format("Expected: never %s", l_printExpected_0(v207));
                if l_stringify_0(v207) ~= l_stringify_0(v206) then
                    return v211 .. string.format("\nReceived:       %s", l_printReceived_0(v206));
                else
                    return v211;
                end;
            end,
            pass = v209
        };
    end,
    toStrictEqual = function(v212, v213, v214)
        local v215 = {
            comment = "deep equality",
            isNot = v212.isNot,
            promise = v212.promise
        };
        local v216 = l_equals_0(v213, v214, v51, true);
        local _ = nil;
        return {
            actual = v213,
            expected = v214,
            message = not v216 and function()
                return l_matcherHint_0("toStrictEqual", nil, nil, v215) .. "\n\n" .. l_printDiffOrStringify_0(v214, v213, "Expected", "Received", not not v212.expand);
            end or function()
                local v218 = l_matcherHint_0("toStrictEqual", nil, nil, v215) .. "\n\n" .. string.format("Expected: not %s\n", l_printExpected_0(v214));
                if l_stringify_0(v214) ~= l_stringify_0(v213) then
                    v218 = v218 .. string.format("Received:     %s", l_printReceived_0(v213));
                end;
                return v218;
            end,
            name = "toStrictEqual",
            pass = v216
        };
    end,
    toMatchInstance = function(v219, v220, v221)
        local v222 = {
            isNot = v219.isNot,
            promise = v219.promise
        };
        if not (l_getType_0(v220) == "Instance") or v220 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatchInstance", nil, nil, v222), string.format("%s value must be a Roblox Instance", l_RECEIVED_COLOR_0("received")), l_printWithType_0("Received", v220, l_printReceived_0))));
        end;
        if not (typeof(v221) == "table") or v221 == nil then
            error(l_Error_0(l_matcherErrorMessage_0(l_matcherHint_0("toMatchInstance", nil, nil, v222), string.format("%s value must be a table", l_EXPECTED_COLOR_0("expected")), l_printWithType_0("Expected", v221, l_printExpected_0))));
        end;
        local v223 = l_equals_0(v220, v221, {
            l_instanceSubsetEquality_0
        });
        local v224 = nil;
        if not v223 then
            local v225, v226 = l_getInstanceSubset_0(v220, v221);
            v224 = function()
                return l_matcherHint_0("toMatchInstance", nil, nil, v222) .. "\n\n" .. l_printDiffOrStringify_0(v226, v225, "Expected", "Received", not not v219.expand);
            end;
        else
            v224 = function()
                local v227 = l_matcherHint_0("toMatchInstance", nil, nil, v222) .. "\n\n" .. string.format("Expected: never %s", l_printExpected_0(v221));
                if l_stringify_0(v221) ~= l_stringify_0(v220) then
                    return v227 .. string.format("\nReceived:       %s", l_printReceived_0(v220));
                else
                    return v227;
                end;
            end;
        end;
        return {
            message = v224,
            pass = v223
        };
    end
};


local l_Parent_0 = script.Parent.Parent;
local l_Number_0 = require(l_Parent_0.LuauPolyfill).Number;
local v2 = require(l_Parent_0.JestMatcherUtils);
local l_EXPECTED_COLOR_0 = v2.EXPECTED_COLOR;
local l_INVERTED_COLOR_0 = v2.INVERTED_COLOR;
local l_RECEIVED_COLOR_0 = v2.RECEIVED_COLOR;
local l_printReceived_0 = v2.printReceived;
local l_stringify_0 = v2.stringify;
local function _(v8)
    return (v8:gsub("(\\)", "\\%1"):gsub("(\")", "\\%1"));
end;
local function v13(v10, v11, v12)
    return l_RECEIVED_COLOR_0("\"" .. v10:sub(0, v11 - 1):gsub("(\\)", "\\%1"):gsub("(\")", "\\%1")) .. l_INVERTED_COLOR_0((v10:sub(v11, (v11 + v12) - 1):gsub("(\\)", "\\%1"):gsub("(\")", "\\%1"))) .. l_RECEIVED_COLOR_0((v10:sub(v11 + v12, #v10):gsub("(\\)", "\\%1"):gsub("(\")", "\\%1"))) .. "\"";
end;
local function v16(v14, v15)
    if v15 == nil then
        return l_printReceived_0(v14);
    else
        return (v13(v14, v15.index, #v15[1]));
    end;
end;
local function v23(v17, v18)
    local v19 = {};
    for v20, v21 in ipairs(v17) do
        local v22 = l_stringify_0(v21);
        if v20 == v18 then
            v19[v20] = l_INVERTED_COLOR_0(v22);
        else
            v19[v20] = l_RECEIVED_COLOR_0(v22);
        end;
    end;
    return l_RECEIVED_COLOR_0("{") .. table.concat(v19, l_RECEIVED_COLOR_0(", ")) .. l_RECEIVED_COLOR_0("}");
end;
local function v30(v24, v25, v26, v27)
    local v28 = l_stringify_0(v24);
    local v29 = nil;
    if not v28:find("e") then
        v29 = if v26 >= 0 and v26 < 20 then string.format("%." .. v26 + 1 .. "f", v25) else l_stringify_0(v25);
    else
        v28 = v28:gsub("%+0", "+"):gsub("%-0", "-");
        v29 = l_Number_0.toExponential(v25, 0);
    end;
    if not v27 then
        return string.format("Expected precision:  %s  %s\n" .. "Expected difference: %s< %s\n" .. "Received difference: %s  %s", "", l_stringify_0(v26), "", l_EXPECTED_COLOR_0(v29), "", l_RECEIVED_COLOR_0(v28));
    else
        return string.format("Expected precision:  %s  %s\n" .. "Expected difference: %s< %s\n" .. "Received difference: %s  %s", "      ", l_stringify_0(v26), "never ", l_EXPECTED_COLOR_0(v29), "      ", l_RECEIVED_COLOR_0(v28));
    end;
end;
local function v33(v31, v32)
    return printConstructorName(v31, v32, false, true) .. "\n";
end;
local function v36(v34, v35)
    return printConstructorName(v34, v35, true, true) .. "\n";
end;
local function v39(v37, v38)
    return printConstructorName(v37, v38, false, false) .. "\n";
end;
local function v41(v40)
    if typeof(v40) == "table" then
        return tostring(v40):find("table: 0x") == nil;
    elseif typeof(v40) == "function" then
        return tostring(v40):find("function: 0x") == nil;
    elseif typeof(v40) == "userdata" then
        return tostring(v40):find("userdata: 0x") == nil;
    elseif typeof(v40) == "thread" then
        return tostring(v40):find("thread: 0x") == nil;
    else
        return true;
    end;
end;
local function v46(v42, v43, v44)
    local v45 = nil;
    if ((typeof((tostring(v44))) == "string" and #tostring(v44) ~= 0) and typeof((tostring(v43))) == "string") and #tostring(v43) ~= 0 then
        if not v41(v44) or not v41(v43) then
            return printConstructorName(v42, v43, true, false) .. "\n";
        else
            v45 = printConstructorName(v42, v43, true, false);
            return if not not getmetatable(v43) and getmetatable(v43).__index == v44 then v45 .. " extends " else v45 .. " extends \226\128\166 extends " .. l_EXPECTED_COLOR_0((tostring(v44))) .. "\n";
        end;
    else
        return printConstructorName(v42, v43, false, false) .. "\n";
    end;
end;
printConstructorName = function(v47, v48, v49, v50)
    local v51 = v47 .. ": ";
    v51 = if v49 then if v50 then v51 .. "never " else v51 .. "      " else v51 .. "";
    if not v41(v48) then
        local v52 = "{ ";
        local v53 = true;
        local v54 = false;
        for v55, v56 in pairs(v48) do
            local v57 = nil;
            if not v41(v55) or not v41(v56) then
                if v41(v55) and v55:find("__") ~= 1 then
                    v57 = string.format("%s, ", l_stringify_0(v55));
                end;
            else
                v57 = string.format("%s: %s, ", l_stringify_0(v55), l_stringify_0(v56));
            end;
            if v57 then
                if #v52 + #v57 > 64 then
                    v53 = false;
                    break;
                else
                    v54 = true;
                    v52 = v52 .. v57;
                end;
            end;
        end;
        if v54 == false then
            if not v50 then
                return v51 .. l_RECEIVED_COLOR_0((tostring(v48)));
            else
                return v51 .. l_EXPECTED_COLOR_0((tostring(v48)));
            end;
        else
            v52 = if not v53 then v52 .. "... }" else v52:sub(1, -3) .. " }";
            if not v50 then
                return v51 .. l_RECEIVED_COLOR_0(v52);
            else
                return v51 .. l_EXPECTED_COLOR_0(v52);
            end;
        end;
    elseif #tostring(v48) == 0 then
        return string.format("%s name is an empty string", v47);
    elseif not v50 then
        return v51 .. l_RECEIVED_COLOR_0((tostring(v48)));
    else
        return v51 .. l_EXPECTED_COLOR_0((tostring(v48)));
    end;
end;
return {
    printReceivedStringContainExpectedSubstring = v13,
    printReceivedStringContainExpectedResult = v16,
    printReceivedArrayContainExpectedItem = v23,
    printCloseTo = v30,
    printExpectedConstructorName = v33,
    printExpectedConstructorNameNot = v36,
    printReceivedConstructorName = v39,
    printReceivedConstructorNameNot = v46
};