local _ = require(script.Parent.Parent.LuauPolyfill);
local v1 = nil;
local v2 = nil;
local l_sub_0 = string.sub;
local l_byte_0 = string.byte;
local l_match_0 = string.match;
local l_find_0 = string.find;
local l_max_0 = math.max;
local l_min_0 = math.min;
local l_floor_0 = math.floor;
local l_insert_0 = table.insert;
local l_remove_0 = table.remove;
local v12 = {};
v12.__index = v12;
v12.new = function(v13, v14)
    return (setmetatable({
        v13,
        v14
    }, v12));
end;
local function v21(v15, v16)
    if not (#v15 ~= 0 and #v16 ~= 0) or l_byte_0(v15, 1, 1) ~= l_byte_0(v16, 1, 1) then
        return 0;
    else
        local v17 = 1;
        local v18 = l_min_0(#v15, #v16);
        local l_v18_0 = v18;
        local v20 = 1;
        while v17 < l_v18_0 do
            if l_sub_0(v15, v20, l_v18_0) == l_sub_0(v16, v20, l_v18_0) then
                v17 = l_v18_0;
                v20 = v17;
            else
                v18 = l_v18_0;
            end;
            l_v18_0 = l_floor_0(v17 + (v18 - v17) / 2);
        end;
        return l_v18_0;
    end;
end;
local function v28(v22, v23)
    if not (#v22 ~= 0 and #v23 ~= 0) or l_byte_0(v22, -1) ~= l_byte_0(v23, -1) then
        return 0;
    else
        local v24 = 1;
        local v25 = l_min_0(#v22, #v23);
        local l_v25_0 = v25;
        local v27 = 1;
        while v24 < l_v25_0 do
            if l_sub_0(v22, -l_v25_0, -v27) == l_sub_0(v23, -l_v25_0, -v27) then
                v24 = l_v25_0;
                v27 = v24;
            else
                v25 = l_v25_0;
            end;
            l_v25_0 = l_floor_0(v24 + (v25 - v24) / 2);
        end;
        return l_v25_0;
    end;
end;
local function v37(v29, v30)
    local v31 = #v29;
    local v32 = #v30;
    if not (v31 ~= 0) or v32 == 0 then
        return 0;
    else
        if v32 < v31 then
            v29 = l_sub_0(v29, (v31 - v32) + 1);
        elseif v31 < v32 then
            v30 = l_sub_0(v30, 1, v31);
        end;
        local v33 = l_min_0(v31, v32);
        if v29 == v30 then
            return v33;
        else
            local v34 = 0;
            local v35 = 1;
            while true do
                local v36 = l_find_0(v30, l_sub_0(v29, (v33 - v35) + 1), 1, true);
                if not (v36 == nil) then
                    v35 = v35 + (v36 - 1);
                    if not (v36 ~= 1) or l_sub_0(v29, (v33 - v35) + 1) == l_sub_0(v30, 1, v35) then
                        v34 = v35;
                        v35 = v35 + 1;
                    end;
                else
                    break;
                end;
            end;
            return v34;
        end;
    end;
end;
local function v52(v38)
    local v39 = false;
    local v40 = {};
    local v41 = 0;
    local v42 = nil;
    local v43 = 1;
    local v44 = 0;
    local v45 = 0;
    local v46 = 0;
    local v47 = 0;
    while v38[v43] do
        if v38[v43][1] == 0 then
            v41 = v41 + 1;
            v40[v41] = v43;
            v44 = v46;
            v45 = v47;
            v46 = 0;
            v47 = 0;
            v42 = v38[v43][2];
        else
            if v38[v43][1] == 1 then
                v46 = v46 + #v38[v43][2];
            else
                v47 = v47 + #v38[v43][2];
            end;
            if (v42 and #v42 <= l_max_0(v44, v45)) and #v42 <= l_max_0(v46, v47) then
                l_insert_0(v38, v40[v41], v12.new(-1, v42));
                v38[v40[v41] + 1][1] = 1;
                v41 = (v41 - 1) - 1;
                v43 = v41 > 0 and v40[v41] or 0;
                v44 = 0;
                v45 = 0;
                v46 = 0;
                v47 = 0;
                v42 = nil;
                v39 = true;
            end;
        end;
        v43 = v43 + 1;
    end;
    if v39 then
        v2(v38);
    end;
    v1(v38);
    v43 = 2;
    while v38[v43] do
        if v38[v43 - 1][1] == -1 and v38[v43][1] == 1 then
            local v48 = v38[v43 - 1][2];
            local v49 = v38[v43][2];
            local v50 = v37(v48, v49);
            local v51 = v37(v49, v48);
            if v51 <= v50 then
                if not (#v48 / 2 > v50) or #v49 / 2 <= v50 then
                    l_insert_0(v38, v43, v12.new(0, (l_sub_0(v49, 1, v50))));
                    v38[v43 - 1][2] = l_sub_0(v48, 1, #v48 - v50);
                    v38[v43 + 1][2] = l_sub_0(v49, v50 + 1);
                    v43 = v43 + 1;
                end;
            elseif not (#v48 / 2 > v51) or #v49 / 2 <= v51 then
                l_insert_0(v38, v43, v12.new(0, (l_sub_0(v48, 1, v51))));
                v38[v43 - 1] = {
                    1,
                    (l_sub_0(v49, 1, #v49 - v51))
                };
                v38[v43 + 1] = {
                    -1,
                    (l_sub_0(v48, v51 + 1))
                };
                v43 = v43 + 1;
            end;
            v43 = v43 + 1;
        end;
        v43 = v43 + 1;
    end;
end;
local function v65(v53, v54)
    if not (#v53 ~= 0) or #v54 == 0 then
        return 6;
    else
        local v55 = l_sub_0(v53, -1);
        local v56 = l_sub_0(v54, 1, 1);
        local v57 = l_match_0(v55, "%W");
        local v58 = l_match_0(v56, "%W");
        local v59 = v57 and l_match_0(v55, "%s");
        local v60 = v58 and l_match_0(v56, "%s");
        local v61 = v59 and l_match_0(v55, "%c");
        local v62 = v60 and l_match_0(v56, "%c");
        local v63 = v61 and l_match_0(v53, "\n\r?\n$");
        local v64 = v62 and l_match_0(v54, "^\r?\n\r?\n");
        if not v63 and not v64 then
            if not v61 and not v62 then
                if (not v57 or v59) or not v60 then
                    if not v59 and not v60 then
                        if not v57 and not v58 then
                            return 0;
                        else
                            return 1;
                        end;
                    else
                        return 2;
                    end;
                else
                    return 3;
                end;
            else
                return 4;
            end;
        else
            return 5;
        end;
    end;
end;
v1 = function(v66)
    local v67 = 2;
    while v66[v67 + 1] do
        local v68 = v66[v67 - 1];
        local v69 = v66[v67 + 1];
        if v68[1] == 0 and v69[1] == 0 then
            local v70 = v66[v67];
            local v71 = v68[2];
            local v72 = v70[2];
            local v73 = v69[2];
            local v74 = v28(v71, v72);
            if v74 > 0 then
                local v75 = l_sub_0(v72, -v74);
                v71 = l_sub_0(v71, 1, -v74 - 1);
                v72 = v75 .. l_sub_0(v72, 1, -v74 - 1);
                v73 = v75 .. v73;
            end;
            local l_v71_0 = v71;
            local l_v72_0 = v72;
            local l_v73_0 = v73;
            local v79 = v65(v71, v72) + v65(v72, v73);
            while l_byte_0(v72, 1) == l_byte_0(v73, 1) do
                v71 = v71 .. l_sub_0(v72, 1, 1);
                v72 = l_sub_0(v72, 2) .. l_sub_0(v73, 1, 1);
                v73 = l_sub_0(v73, 2);
                local v80 = v65(v71, v72) + v65(v72, v73);
                if v79 <= v80 then
                    v79 = v80;
                    l_v71_0 = v71;
                    l_v72_0 = v72;
                    l_v73_0 = v73;
                end;
            end;
            if v68[2] ~= l_v71_0 then
                if #l_v71_0 > 0 then
                    v66[v67 - 1][2] = l_v71_0;
                else
                    l_remove_0(v66, v67 - 1);
                    v67 = v67 - 1;
                end;
                v66[v67][2] = l_v72_0;
                if #l_v73_0 > 0 then
                    v66[v67 + 1][2] = l_v73_0;
                else
                    l_remove_0(v66, v67 + 1);
                    v67 = v67 - 1;
                end;
            end;
        end;
        v67 = v67 + 1;
    end;
end;
v2 = function(v81)
    v81[#v81 + 1] = v12.new(0, "");
    local v82 = 1;
    local v83 = 0;
    local v84 = 0;
    local v85 = "";
    local v86 = "";
    local v87 = nil;
    while v81[v82] do
        local v88 = v81[v82][1];
        if v88 == 1 then
            v84 = v84 + 1;
            v86 = v86 .. v81[v82][2];
            v82 = v82 + 1;
        elseif v88 == -1 then
            v83 = v83 + 1;
            v85 = v85 .. v81[v82][2];
            v82 = v82 + 1;
        elseif v88 == 0 then
            if v83 + v84 > 1 then
                if v83 > 0 and v84 > 0 then
                    v87 = v21(v86, v85);
                    if v87 > 0 then
                        local v89 = (v82 - v83) - v84;
                        if v89 > 1 and v81[v89 - 1][1] == 0 then
                            v81[v89 - 1][2] = v81[v89 - 1][2] .. l_sub_0(v86, 1, v87);
                        else
                            l_insert_0(v81, 1, v12.new(0, (l_sub_0(v86, 1, v87))));
                            v82 = v82 + 1;
                        end;
                        v86 = l_sub_0(v86, v87 + 1);
                        v85 = l_sub_0(v85, v87 + 1);
                    end;
                    v87 = v28(v86, v85);
                    if v87 ~= 0 then
                        v81[v82][2] = l_sub_0(v86, -v87) .. v81[v82][2];
                        v86 = l_sub_0(v86, 1, -v87 - 1);
                        v85 = l_sub_0(v85, 1, -v87 - 1);
                    end;
                end;
                v82 = (v82 - v83) - v84;
                for _ = 1, v83 + v84 do
                    l_remove_0(v81, v82);
                end;
                if #v85 > 0 then
                    l_insert_0(v81, v82, v12.new(-1, v85));
                    v82 = v82 + 1;
                end;
                if #v86 > 0 then
                    l_insert_0(v81, v82, v12.new(1, v86));
                    v82 = v82 + 1;
                end;
                v82 = v82 + 1;
            elseif v82 > 1 and v81[v82 - 1][1] == 0 then
                v81[v82 - 1][2] = v81[v82 - 1][2] .. v81[v82][2];
                l_remove_0(v81, v82);
            else
                v82 = v82 + 1;
            end;
            v84 = 0;
            v83 = 0;
            v85 = "";
            v86 = "";
        end;
    end;
    if v81[#v81][2] == "" then
        v81[#v81] = nil;
    end;
    local v91 = false;
    v82 = 2;
    while v82 < #v81 do
        local v92 = v81[v82 - 1];
        local v93 = v81[v82 + 1];
        if v92[1] == 0 and v93[1] == 0 then
            local v94 = v81[v82];
            local v95 = v94[2];
            local v96 = v92[2];
            local v97 = v93[2];
            if #v96 == 0 then
                l_remove_0(v81, v82 - 1);
                v91 = true;
            elseif l_sub_0(v95, -#v96) == v96 then
                v94[2] = v96 .. l_sub_0(v95, 1, -#v96 - 1);
                v93[2] = v96 .. v93[2];
                l_remove_0(v81, v82 - 1);
                v91 = true;
            elseif l_sub_0(v95, 1, #v97) == v97 then
                v92[2] = v96 .. v97;
                v94[2] = l_sub_0(v95, #v97 + 1) .. v97;
                l_remove_0(v81, v82 + 1);
                v91 = true;
            end;
        end;
        v82 = v82 + 1;
    end;
    if not v91 then
        return ;
    else
        return v2(v81);
    end;
end;
return {
    Diff = v12,
    DIFF_EQUAL = 0,
    DIFF_DELETE = -1,
    DIFF_INSERT = 1,
    cleanupSemantic = v52,
    _diff_commonPrefix = v21,
    _diff_commonSuffix = v28,
    _diff_commonOverlap = v37,
    _diff_cleanupMerge = v2,
    _diff_cleanupSemanticLossless = v1
};


return {
    NO_DIFF_MESSAGE = "Compared values have no visual difference.",
    SIMILAR_MESSAGE = "Compared values serialize to the same structure.\n" .. "Printing internal object structure without calling `toJSON` instead."
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local _ = require(l_Parent_1.LuauPolyfill);
local v3 = require(l_Parent_1.DiffSequences);
local v4 = require(l_Parent_0.CleanupSemantic);
local l_DIFF_DELETE_0 = v4.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v4.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v4.DIFF_INSERT;
local l_Diff_0 = v4.Diff;
local l_joinAlignedDiffsExpand_0 = require(l_Parent_0.JoinAlignedDiffs).joinAlignedDiffsExpand;
local l_joinAlignedDiffsNoExpand_0 = require(l_Parent_0.JoinAlignedDiffs).joinAlignedDiffsNoExpand;
local l_normalizeDiffOptions_0 = require(l_Parent_0.NormalizeDiffOptions).normalizeDiffOptions;
local _ = require(l_Parent_0.types);
local v13 = nil;
local function _(v14)
    local v15 = false;
    if #v14 == 1 then
        v15 = #v14[1] == 0;
    end;
    return v15;
end;
local function v23(v17)
    local v18 = 0;
    local v19 = 0;
    for _, v21 in ipairs(v17) do
        local v22 = v21[1];
        if v22 == l_DIFF_DELETE_0 then
            v18 = v18 + 1;
        elseif v22 == l_DIFF_INSERT_0 then
            v19 = v19 + 1;
        end;
    end;
    return {
        a = v18,
        b = v19
    };
end;
local function v43(v24, v25)
    local l_aAnnotation_0 = v24.aAnnotation;
    local l_aColor_0 = v24.aColor;
    local l_aIndicator_0 = v24.aIndicator;
    local l_bAnnotation_0 = v24.bAnnotation;
    local l_bColor_0 = v24.bColor;
    local l_bIndicator_0 = v24.bIndicator;
    local l_includeChangeCounts_0 = v24.includeChangeCounts;
    if not v24.omitAnnotationLines then
        local v33 = "";
        local v34 = "";
        if l_includeChangeCounts_0 then
            local v35 = tostring(v25.a);
            local v36 = tostring(v25.b);
            local v37 = #l_bAnnotation_0 - #l_aAnnotation_0;
            local v38 = string.rep(" ", (math.max(0, v37)));
            local v39 = string.rep(" ", (math.max(0, -v37)));
            local v40 = #v36 - #v35;
            local v41 = string.rep(" ", (math.max(0, v40)));
            local v42 = string.rep(" ", (math.max(0, -v40)));
            v33 = v38 .. "  " .. l_aIndicator_0 .. " " .. v41 .. v35;
            v34 = v39 .. "  " .. l_bIndicator_0 .. " " .. v42 .. v36;
        end;
        return l_aColor_0(l_aIndicator_0 .. " " .. l_aAnnotation_0 .. v33) .. "\n" .. l_bColor_0(l_bIndicator_0 .. " " .. l_bAnnotation_0 .. v34) .. "\n\n";
    else
        return "";
    end;
end;
local function v46(v44, v45)
    if not v45.expand then
        return v43(v45, (v23(v44))) .. l_joinAlignedDiffsNoExpand_0(v44, v45);
    else
        return v43(v45, (v23(v44))) .. l_joinAlignedDiffsExpand_0(v44, v45);
    end;
end;
local function v52(v47, v48, v49)
    local l_v47_0 = v47;
    local v51 = false;
    if #l_v47_0 == 1 then
        v51 = #l_v47_0[1] == 0;
    end;
    if v51 then
        v47 = {};
    end;
    l_v47_0 = v48;
    v51 = false;
    if #l_v47_0 == 1 then
        v51 = #l_v47_0[1] == 0;
    end;
    if v51 then
        v48 = {};
    end;
    return (v46(v13(v47, v48), l_normalizeDiffOptions_0(v49)));
end;
local function v64(v53, v54, v55, v56, v57)
    local l_v53_0 = v53;
    local v59 = false;
    if #l_v53_0 == 1 then
        v59 = #l_v53_0[1] == 0;
    end;
    if v59 then
        l_v53_0 = v55;
        v59 = false;
        if #l_v53_0 == 1 then
            v59 = #l_v53_0[1] == 0;
        end;
        if v59 then
            v53 = {};
            v55 = {};
        end;
    end;
    l_v53_0 = v54;
    v59 = false;
    if #l_v53_0 == 1 then
        v59 = #l_v53_0[1] == 0;
    end;
    if v59 then
        l_v53_0 = v56;
        v59 = false;
        if #l_v53_0 == 1 then
            v59 = #l_v53_0[1] == 0;
        end;
        if v59 then
            v54 = {};
            v56 = {};
        end;
    end;
    if not (#v53 == #v55) or #v54 ~= #v56 then
        return (v52(v53, v54, v57));
    else
        v59 = v13(v55, v56);
        l_v53_0 = 0;
        local v60 = 0;
        for _, v62 in ipairs(v59) do
            local v63 = v62[1];
            if v63 == l_DIFF_DELETE_0 then
                v62[2] = v53[l_v53_0 + 1];
                l_v53_0 = l_v53_0 + 1;
            elseif v63 == l_DIFF_INSERT_0 then
                v62[2] = v54[v60 + 1];
                v60 = v60 + 1;
            else
                v62[2] = v54[v60 + 1];
                l_v53_0 = l_v53_0 + 1;
                v60 = v60 + 1;
            end;
        end;
        return (v46(v59, l_normalizeDiffOptions_0(v57)));
    end;
end;
v13 = function(v65, v66)
    local v67 = #v65;
    local v68 = #v66;
    local function v71(v69, v70)
        return v65[v69 + 1] == v66[v70 + 1];
    end;
    local v72 = {};
    local v73 = 0;
    local v74 = 0;
    v3(v67, v68, v71, function(v75, v76, v77)
        while v73 ~= v76 do
            table.insert(v72, l_Diff_0.new(l_DIFF_DELETE_0, v65[v73 + 1]));
            v73 = v73 + 1;
        end;
        while v74 ~= v77 do
            table.insert(v72, l_Diff_0.new(l_DIFF_INSERT_0, v66[v74 + 1]));
            v74 = v74 + 1;
        end;
        while v75 ~= 0 do
            table.insert(v72, l_Diff_0.new(l_DIFF_EQUAL_0, v66[v74 + 1]));
            v75 = v75 - 1;
            v73 = v73 + 1;
            v74 = v74 + 1;
        end;
    end);
    while v73 ~= v67 do
        table.insert(v72, l_Diff_0.new(l_DIFF_DELETE_0, v65[v73 + 1]));
        v73 = v73 + 1;
    end;
    while v74 ~= v68 do
        table.insert(v72, l_Diff_0.new(l_DIFF_INSERT_0, v66[v74 + 1]));
        v74 = v74 + 1;
    end;
    return v72;
end;
return {
    printDiffLines = v46,
    diffLinesUnified = v52,
    diffLinesUnified2 = v64,
    diffLinesRaw = v13
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local _ = require(l_Parent_1.LuauPolyfill);
local v3 = require(l_Parent_1.DiffSequences);
local v4 = require(l_Parent_0.CleanupSemantic);
local l_DIFF_DELETE_0 = v4.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v4.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v4.DIFF_INSERT;
local l_Diff_0 = v4.Diff;
return function(v9, v10)
    local function v13(v11, v12)
        return v9:sub(v11 + 1, v11 + 1) == v10:sub(v12 + 1, v12 + 1);
    end;
    local v14 = 0;
    local v15 = 0;
    local v16 = {};
    v3(#v9, #v10, v13, function(v17, v18, v19)
        if v14 ~= v18 then
            table.insert(v16, l_Diff_0.new(l_DIFF_DELETE_0, v9:sub(v14 + 1, v18)));
        end;
        if v15 ~= v19 then
            table.insert(v16, l_Diff_0.new(l_DIFF_INSERT_0, v10:sub(v15 + 1, v19)));
        end;
        v14 = v18 + v17;
        v15 = v19 + v17;
        table.insert(v16, l_Diff_0.new(l_DIFF_EQUAL_0, v10:sub(v19 + 1, v15)));
    end);
    if v14 ~= #v9 then
        table.insert(v16, l_Diff_0.new(l_DIFF_DELETE_0, v9:sub(v14 + 1)));
    end;
    if v15 ~= #v10 then
        table.insert(v16, l_Diff_0.new(l_DIFF_INSERT_0, v10:sub(v15 + 1)));
    end;
    return v16;
end;


local l_Parent_0 = script.Parent;
local l_Array_0 = require(l_Parent_0.Parent.LuauPolyfill).Array;
local v2 = require(l_Parent_0.CleanupSemantic);
local l_DIFF_DELETE_0 = v2.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v2.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v2.DIFF_INSERT;
local l_Diff_0 = v2.Diff;
local _ = require(l_Parent_0.types);
local function v13(v8, v9, v10)
    return l_Array_0.reduce(v9, function(v11, v12)
        if v12[1] == l_DIFF_EQUAL_0 then
            return v11 .. v12[2];
        elseif v12[1] == v8 and #v12[2] ~= 0 then
            return v11 .. v10(v12[2]);
        else
            return v11 .. "";
        end;
    end, "");
end;
local v14 = {};
v14.__index = v14;
v14.new = function(v15, v16)
    local v17 = setmetatable({}, v14);
    v17.op = v15;
    v17.line = {};
    v17.lines = {};
    v17.changeColor = v16;
    return v17;
end;
v14.pushSubstring = function(v18, v19)
    v18:pushDiff(l_Diff_0.new(v18.op, v19));
end;
v14.pushLine = function(v20)
    table.insert(v20.lines, if #v20.line ~= 1 then l_Diff_0.new(v20.op, v13(v20.op, v20.line, v20.changeColor)) else if v20.line[1][1] == v20.op then v20.line[1] else l_Diff_0.new(v20.op, v20.line[1][2]));
    v20.line = {};
end;
v14.isLineEmpty = function(v21)
    return #v21.line == 0;
end;
v14.pushDiff = function(v22, v23)
    table.insert(v22.line, v23);
end;
v14.align = function(v24, v25)
    local v26 = v25[2];
    if not v26:match("\n") then
        v24:pushDiff(v25);
        return ;
    else
        local v27 = v26:split("\n");
        local v28 = #v27;
        for v29, v30 in ipairs(v27) do
            if v29 < v28 then
                v24:pushSubstring(v30);
                v24:pushLine();
            elseif #v30 ~= 0 then
                v24:pushSubstring(v30);
            end;
        end;
        return ;
    end;
end;
v14.moveLinesTo = function(v31, v32)
    if not v31:isLineEmpty() then
        v31:pushLine();
    end;
    for _, v34 in ipairs(v31.lines) do
        table.insert(v32, v34);
    end;
    v31.lines = {};
end;
local v35 = {};
v35.__index = v35;
v35.new = function(v36, v37)
    local v38 = {
        deleteBuffer = v36,
        insertBuffer = v37,
        lines = {}
    };
    setmetatable(v38, v35);
    return v38;
end;
v35.pushDiffCommonLine = function(v39, v40)
    table.insert(v39.lines, v40);
end;
v35.pushDiffChangeLines = function(v41, v42)
    local v43 = #v42[2] == 0;
    if not (v43 and not v41.deleteBuffer:isLineEmpty()) then
        v41.deleteBuffer:pushDiff(v42);
    end;
    if not (v43 and not v41.insertBuffer:isLineEmpty()) then
        v41.insertBuffer:pushDiff(v42);
    end;
end;
v35.flushChangeLines = function(v44)
    v44.deleteBuffer:moveLinesTo(v44.lines);
    v44.insertBuffer:moveLinesTo(v44.lines);
end;
v35.align = function(v45, v46)
    local v47 = v46[1];
    local v48 = v46[2];
    if not v48:match("\n") then
        v45:pushDiffChangeLines(v46);
        return ;
    else
        local v49 = v48:split("\n");
        local v50 = #v49;
        for v51, v52 in ipairs(v49) do
            if v51 == 1 then
                local v53 = l_Diff_0.new(v47, v52);
                if not v45.deleteBuffer:isLineEmpty() or not v45.insertBuffer:isLineEmpty() then
                    v45:pushDiffChangeLines(v53);
                    v45:flushChangeLines();
                else
                    v45:flushChangeLines();
                    v45:pushDiffCommonLine(v53);
                end;
            elseif v51 < v50 then
                v45:pushDiffCommonLine(l_Diff_0.new(v47, v52));
            elseif #v52 ~= 0 then
                v45:pushDiffChangeLines(l_Diff_0.new(v47, v52));
            end;
        end;
        return ;
    end;
end;
v35.getLines = function(v54)
    v54:flushChangeLines();
    return v54.lines;
end;
return function(v55, v56)
    local v57 = v14.new(l_DIFF_DELETE_0, v56);
    local v58 = v14.new(l_DIFF_INSERT_0, v56);
    local v59 = v35.new(v57, v58);
    for _, v61 in ipairs(v55) do
        local v62 = v61[1];
        if v62 == l_DIFF_DELETE_0 then
            v57:align(v61);
        elseif v62 == l_DIFF_INSERT_0 then
            v58:align(v61);
        else
            v59:align(v61);
        end;
    end;
    return v59:getLines();
end;


local l_Parent_0 = script.Parent;
local l_Array_0 = require(l_Parent_0.Parent.LuauPolyfill).Array;
local v2 = require(l_Parent_0.CleanupSemantic);
local l_DIFF_DELETE_0 = v2.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v2.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v2.DIFF_INSERT;
local _ = require(l_Parent_0.types);
local function _(v7, v8)
    return v7:gsub("%s+$", function(v9)
        return v8(v9);
    end);
end;
local function v18(v11, v12, v13, v14, v15, v16)
    if #v11 ~= 0 then
        return v13(v14 .. " " .. v11:gsub("%s+$", function(v17)
            return v15(v17);
        end));
    elseif v14 ~= " " then
        return v13(v14);
    elseif v12 and #v16 ~= 0 then
        return v13(v14 .. " " .. v16);
    else
        return "";
    end;
end;
local function v22(v19, v20, v21)
    return v18(v19, v20, v21.aColor, v21.aIndicator, v21.changeLineTrailingSpaceColor, v21.emptyFirstOrLastLinePlaceholder);
end;
local function v26(v23, v24, v25)
    return v18(v23, v24, v25.bColor, v25.bIndicator, v25.changeLineTrailingSpaceColor, v25.emptyFirstOrLastLinePlaceholder);
end;
local function v30(v27, v28, v29)
    return v18(v27, v28, v29.commonColor, v29.commonIndicator, v29.commonLineTrailingSpaceColor, v29.emptyFirstOrLastLinePlaceholder);
end;
local function _(v31, v32, v33, v34, v35)
    return v35.patchColor(string.format("@@ -%d,%d +%d,%d @@", v31 + 1, v32 - v31, v33 + 1, v34 - v33));
end;
return {
    joinAlignedDiffsNoExpand = function(v37, v38)
        local v39 = #v37;
        local l_contextLines_0 = v38.contextLines;
        local v41 = l_contextLines_0 + l_contextLines_0;
        local l_v39_0 = v39;
        local v43 = false;
        local v44 = 0;
        local v45 = 0;
        while v45 ~= v39 do
            local l_v45_0 = v45;
            while v45 ~= v39 and v37[v45 + 1][1] == l_DIFF_EQUAL_0 do
                v45 = v45 + 1;
            end;
            if l_v45_0 ~= v45 then
                if l_v45_0 == 0 then
                    if l_contextLines_0 < v45 then
                        l_v39_0 = l_v39_0 - (v45 - l_contextLines_0);
                        v43 = true;
                    end;
                elseif v45 == v39 then
                    local v47 = v45 - l_v45_0;
                    if l_contextLines_0 < v47 then
                        l_v39_0 = l_v39_0 - (v47 - l_contextLines_0);
                        v43 = true;
                    end;
                else
                    local v48 = v45 - l_v45_0;
                    if v41 < v48 then
                        l_v39_0 = l_v39_0 - (v48 - v41);
                        v44 = v44 + 1;
                    end;
                end;
            end;
            while v45 ~= v39 and v37[v45 + 1][1] ~= l_DIFF_EQUAL_0 do
                v45 = v45 + 1;
            end;
        end;
        local v49 = true;
        if v44 == 0 then
            v49 = v43;
        end;
        if v44 ~= 0 then
            l_v39_0 = l_v39_0 + (v44 + 1);
        elseif v43 then
            l_v39_0 = l_v39_0 + 1;
        end;
        local v50 = l_v39_0 - 1;
        local v51 = {};
        local v52 = 0;
        if v49 then
            table.insert(v51, "");
        end;
        local v53 = 0;
        local v54 = 0;
        local v55 = 0;
        local v56 = 0;
        local function _(v57)
            local v58 = #v51;
            local l_v51_0 = v51;
            local l_v30_0 = v30;
            local l_v57_0 = v57;
            local v62 = true;
            if v58 ~= 0 then
                v62 = v58 == v50;
            end;
            table.insert(l_v51_0, l_v30_0(l_v57_0, v62, v38));
            v55 = v55 + 1;
            v56 = v56 + 1;
        end;
        local function _(v64)
            local v65 = #v51;
            local l_v51_1 = v51;
            local l_v22_0 = v22;
            local l_v64_0 = v64;
            local v69 = true;
            if v65 ~= 0 then
                v69 = v65 == v50;
            end;
            table.insert(l_v51_1, l_v22_0(l_v64_0, v69, v38));
            v55 = v55 + 1;
        end;
        local function _(v71)
            local v72 = #v51;
            local l_v51_2 = v51;
            local l_v26_0 = v26;
            local l_v71_0 = v71;
            local v76 = true;
            if v72 ~= 0 then
                v76 = v72 == v50;
            end;
            table.insert(l_v51_2, l_v26_0(l_v71_0, v76, v38));
            v56 = v56 + 1;
        end;
        v45 = 0;
        while v45 ~= v39 do
            local l_v45_1 = v45;
            while v45 ~= v39 and v37[v45 + 1][1] == l_DIFF_EQUAL_0 do
                v45 = v45 + 1;
            end;
            if l_v45_1 ~= v45 then
                if l_v45_1 == 0 then
                    if l_contextLines_0 < v45 then
                        l_v45_1 = v45 - l_contextLines_0;
                        v53 = l_v45_1;
                        v54 = l_v45_1;
                        v55 = v53;
                        v56 = v54;
                    end;
                    local l_l_v45_1_0 = l_v45_1;
                    while l_l_v45_1_0 ~= v45 do
                        local v80 = v37[l_l_v45_1_0 + 1][2];
                        local v81 = #v51;
                        local l_v51_3 = v51;
                        local l_v30_1 = v30;
                        local l_v80_0 = v80;
                        local v85 = true;
                        if v81 ~= 0 then
                            v85 = v81 == v50;
                        end;
                        table.insert(l_v51_3, l_v30_1(l_v80_0, v85, v38));
                        v55 = v55 + 1;
                        v56 = v56 + 1;
                        l_l_v45_1_0 = l_l_v45_1_0 + 1;
                    end;
                elseif v45 == v39 then
                    local l_v45_2 = v45;
                    if l_contextLines_0 < v45 - l_v45_1 then
                        l_v45_2 = l_v45_1 + l_contextLines_0;
                    end;
                    local l_l_v45_1_1 = l_v45_1;
                    while l_l_v45_1_1 ~= l_v45_2 do
                        local v88 = v37[l_l_v45_1_1 + 1][2];
                        local v89 = #v51;
                        local l_v51_4 = v51;
                        local l_v30_2 = v30;
                        local l_v88_0 = v88;
                        local v93 = true;
                        if v89 ~= 0 then
                            v93 = v89 == v50;
                        end;
                        table.insert(l_v51_4, l_v30_2(l_v88_0, v93, v38));
                        v55 = v55 + 1;
                        v56 = v56 + 1;
                        l_l_v45_1_1 = l_l_v45_1_1 + 1;
                    end;
                else
                    local v94 = v45 - l_v45_1;
                    if v41 < v94 then
                        local v95 = l_v45_1 + l_contextLines_0;
                        local l_l_v45_1_2 = l_v45_1;
                        while l_l_v45_1_2 ~= v95 do
                            local v97 = v37[l_l_v45_1_2 + 1][2];
                            local v98 = #v51;
                            local l_v51_5 = v51;
                            local l_v30_3 = v30;
                            local l_v97_0 = v97;
                            local v102 = true;
                            if v98 ~= 0 then
                                v102 = v98 == v50;
                            end;
                            table.insert(l_v51_5, l_v30_3(l_v97_0, v102, v38));
                            v55 = v55 + 1;
                            v56 = v56 + 1;
                            l_l_v45_1_2 = l_l_v45_1_2 + 1;
                        end;
                        local v103 = v52 + 1;
                        local l_v53_0 = v53;
                        local l_v55_0 = v55;
                        local l_v54_0 = v54;
                        v51[v103] = v38.patchColor(string.format("@@ -%d,%d +%d,%d @@", l_v53_0 + 1, l_v55_0 - l_v53_0, l_v54_0 + 1, v56 - l_v54_0));
                        v52 = #v51;
                        table.insert(v51, "");
                        v103 = v94 - v41;
                        v53 = v55 + v103;
                        v54 = v56 + v103;
                        v55 = v53;
                        v56 = v54;
                        l_l_v45_1_2 = v45 - l_contextLines_0;
                        while l_l_v45_1_2 ~= v45 do
                            local v107 = v37[l_l_v45_1_2 + 1][2];
                            l_v53_0 = #v51;
                            l_v54_0 = v51;
                            local l_v30_4 = v30;
                            local l_v107_0 = v107;
                            local v110 = true;
                            if l_v53_0 ~= 0 then
                                v110 = l_v53_0 == v50;
                            end;
                            table.insert(l_v54_0, l_v30_4(l_v107_0, v110, v38));
                            v55 = v55 + 1;
                            v56 = v56 + 1;
                            l_l_v45_1_2 = l_l_v45_1_2 + 1;
                        end;
                    else
                        local l_l_v45_1_3 = l_v45_1;
                        while l_l_v45_1_3 ~= v45 do
                            local v112 = v37[l_l_v45_1_3 + 1][2];
                            local v113 = #v51;
                            local l_v51_6 = v51;
                            local l_v30_5 = v30;
                            local l_v112_0 = v112;
                            local v117 = true;
                            if v113 ~= 0 then
                                v117 = v113 == v50;
                            end;
                            table.insert(l_v51_6, l_v30_5(l_v112_0, v117, v38));
                            v55 = v55 + 1;
                            v56 = v56 + 1;
                            l_l_v45_1_3 = l_l_v45_1_3 + 1;
                        end;
                    end;
                end;
            end;
            while v45 ~= v39 and v37[v45 + 1][1] == l_DIFF_DELETE_0 do
                local v118 = v37[v45 + 1][2];
                local v119 = #v51;
                local l_v51_7 = v51;
                local l_v22_1 = v22;
                local l_v118_0 = v118;
                local v123 = true;
                if v119 ~= 0 then
                    v123 = v119 == v50;
                end;
                table.insert(l_v51_7, l_v22_1(l_v118_0, v123, v38));
                v55 = v55 + 1;
                v45 = v45 + 1;
            end;
            while v45 ~= v39 and v37[v45 + 1][1] == l_DIFF_INSERT_0 do
                local v124 = v37[v45 + 1][2];
                local v125 = #v51;
                local l_v51_8 = v51;
                local l_v26_1 = v26;
                local l_v124_0 = v124;
                local v129 = true;
                if v125 ~= 0 then
                    v129 = v125 == v50;
                end;
                table.insert(l_v51_8, l_v26_1(l_v124_0, v129, v38));
                v56 = v56 + 1;
                v45 = v45 + 1;
            end;
        end;
        if v49 then
            local v130 = v52 + 1;
            local l_v53_1 = v53;
            local l_v55_1 = v55;
            local l_v54_1 = v54;
            v51[v130] = v38.patchColor(string.format("@@ -%d,%d +%d,%d @@", l_v53_1 + 1, l_v55_1 - l_v53_1, l_v54_1 + 1, v56 - l_v54_1));
        end;
        return table.concat(v51, "\n");
    end,
    joinAlignedDiffsExpand = function(v134, v135)
        return table.concat(l_Array_0.map(v134, function(v136, v137, v138)
            local v139 = v136[2];
            local v140 = true;
            if v137 ~= 1 then
                v140 = v137 == #v138;
            end;
            local v141 = v136[1];
            if v141 == l_DIFF_DELETE_0 then
                return v22(v139, v140, v135);
            elseif v141 == l_DIFF_INSERT_0 then
                return v26(v139, v140, v135);
            else
                return v30(v139, v140, v135);
            end;
        end), "\n");
    end
};


local l_Parent_0 = script.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_1.LuauPolyfill);
local l_Number_0 = v2.Number;
local l_Object_0 = v2.Object;
local v5 = require(l_Parent_1.ChalkLua);
local _ = require(l_Parent_0.types);
local function v8(v7)
    return v7;
end;
local v9 = {
    aAnnotation = "Expected",
    aColor = v5.green,
    aIndicator = "-",
    bAnnotation = "Received",
    bColor = v5.red,
    bIndicator = "+",
    changeColor = v5.inverse,
    changeLineTrailingSpaceColor = v8,
    commonColor = v5.dim,
    commonIndicator = " ",
    commonLineTrailingSpaceColor = v8,
    compareKeys = l_Object_0.None,
    contextLines = 5,
    emptyFirstOrLastLinePlaceholder = "",
    expand = true,
    includeChangeCounts = false,
    omitAnnotationLines = false,
    patchColor = v5.yellow
};
local function _(v10)
    if v10 and typeof(v10) == "function" then
        return v10;
    else
        return v9.compareKeys;
    end;
end;
local function _(v12)
    if not (not (typeof(v12) == "number") or not l_Number_0.isSafeInteger(v12)) and v12 >= 0 then
        return v12;
    else
        return 5;
    end;
end;
return {
    noColor = v8,
    normalizeDiffOptions = function(v14)
        local v15 = v14 or {};
        local l_assign_0 = l_Object_0.assign;
        local v17 = {};
        local l_v9_0 = v9;
        local l_v15_0 = v15;
        local v20 = {};
        local l_compareKeys_0 = v15.compareKeys;
        v20.compareKeys = if not not l_compareKeys_0 and typeof(l_compareKeys_0) == "function" then l_compareKeys_0 else v9.compareKeys;
        l_compareKeys_0 = v15.contextLines;
        v20.contextLines = if (typeof(l_compareKeys_0) == "number" and l_Number_0.isSafeInteger(l_compareKeys_0)) and l_compareKeys_0 >= 0 then l_compareKeys_0 else 5;
        return (l_assign_0(v17, l_v9_0, l_v15_0, v20));
    end
};


local l_Parent_0 = script.Parent;
local l_Array_0 = require(l_Parent_0.Parent.LuauPolyfill).Array;
local v2 = require(l_Parent_0.CleanupSemantic);
local l_DIFF_EQUAL_0 = v2.DIFF_EQUAL;
local l_cleanupSemantic_0 = v2.cleanupSemantic;
local v5 = require(l_Parent_0.DiffLines);
local l_diffLinesUnified_0 = v5.diffLinesUnified;
local l_printDiffLines_0 = v5.printDiffLines;
local v8 = require(l_Parent_0.DiffStrings);
local v9 = require(l_Parent_0.GetAlignedDiffs);
local l_normalizeDiffOptions_0 = require(l_Parent_0.NormalizeDiffOptions).normalizeDiffOptions;
local _ = require(l_Parent_0.types);
local v12 = nil;
local function v20(v13, v14)
    if not v14 then
        return l_Array_0.some(v13, function(v15)
            return v15[1] == l_DIFF_EQUAL_0;
        end);
    else
        local v16 = #v13;
        return l_Array_0.some(v13, function(v17, v18)
            local v19 = false;
            if v17[1] == l_DIFF_EQUAL_0 then
                v19 = true;
                if v18 == v16 then
                    v19 = v17[2] ~= "\n";
                end;
            end;
            return v19;
        end);
    end;
end;
local function v27(v21, v22, v23)
    if (v21 ~= v22 and #v21 ~= 0) and #v22 ~= 0 then
        local v24 = true;
        if v21:find("\n") == nil then
            v24 = v22:find("\n") ~= nil;
        end;
        local v25 = v12(not not v24 and v21 .. "\n" or v21, not not v24 and v22 .. "\n" or v22, true);
        if v20(v25, v24) then
            local v26 = l_normalizeDiffOptions_0(v23);
            return l_printDiffLines_0(v9(v25, v26.changeColor), v26);
        end;
    end;
    return l_diffLinesUnified_0(v21:split("\n"), v22:split("\n"), v23);
end;
v12 = function(v28, v29, v30)
    local v31 = v8(v28, v29);
    if v30 then
        l_cleanupSemantic_0(v31);
    end;
    return v31;
end;
return {
    diffStringsUnified = v27,
    diffStringsRaw = v12
};


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_String_0 = v2.String;
local l_Symbol_0 = v2.Symbol;
local v6 = require(l_Parent_0.PrettyFormat);
local l_format_0 = v6.format;
local _ = require(l_script_0.PrettyFormat);
local v9 = require(l_Parent_0.ChalkLua);
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local v11 = require(l_script_0.CleanupSemantic);
local l_DIFF_DELETE_0 = v11.DIFF_DELETE;
local l_DIFF_EQUAL_0 = v11.DIFF_EQUAL;
local l_DIFF_INSERT_0 = v11.DIFF_INSERT;
local l_Diff_0 = v11.Diff;
local l_normalizeDiffOptions_0 = require(l_script_0.NormalizeDiffOptions).normalizeDiffOptions;
local l_diffLinesRaw_0 = require(l_script_0.DiffLines).diffLinesRaw;
local l_diffLinesUnified_0 = require(l_script_0.DiffLines).diffLinesUnified;
local l_diffLinesUnified2_0 = require(l_script_0.DiffLines).diffLinesUnified2;
local l_diffStringsRaw_0 = require(l_script_0.PrintDiffs).diffStringsRaw;
local l_diffStringsUnified_0 = require(l_script_0.PrintDiffs).diffStringsUnified;
local _ = require(l_script_0.types);
local l_NO_DIFF_MESSAGE_0 = require(l_script_0.Constants).NO_DIFF_MESSAGE;
local l_SIMILAR_MESSAGE_0 = require(l_script_0.Constants).SIMILAR_MESSAGE;
local v25 = nil;
local v26 = nil;
local v27 = nil;
local v28 = nil;
local function v31(v29, v30)
    return l_normalizeDiffOptions_0(v30).commonColor(v29);
end;
local l_plugins_0 = v6.plugins;
local v33 = {
    l_plugins_0.AsymmetricMatcher,
    l_plugins_0.RobloxInstance
};
local v34 = {
    plugins = v33
};
local v35 = {
    callToJSON = false,
    maxDepth = 10,
    plugins = v33
};
local function v42(v36, v37, v38)
    if not l_Object_0.is(v36, v37) then
        local v39 = l_getType_0(v36);
        local l_v39_0 = v39;
        local v41 = false;
        if v39 == "table" and l_getType_0(v36.asymmetricMatch) == "function" then
            if v36["$$typeof"] ~= l_Symbol_0.for_("jest.asymmetricMatcher") then
                return nil;
            elseif typeof(v36.getExpectedType) ~= "function" then
                return nil;
            else
                l_v39_0 = v36:getExpectedType();
                v41 = l_v39_0 == "string";
            end;
        end;
        if l_v39_0 ~= l_getType_0(v37) then
            return string.format("  Comparing two different types of values." .. " Expected %s but " .. "received %s.", v9.green(l_v39_0), v9.red(l_getType_0(v37)));
        elseif not v41 then
            if v39 == "string" then
                return l_diffLinesUnified_0(string.split(v36, "\n"), string.split(v37, "\n"), v38);
            elseif not (v39 ~= "boolean") or v39 == "number" then
                return v25(v36, v37, v38);
            else
                return v26(v36, v37, v38);
            end;
        else
            return nil;
        end;
    else
        return v31(l_NO_DIFF_MESSAGE_0, v38);
    end;
end;
v25 = function(v43, v44, v45)
    local v46 = l_format_0(v43, v34);
    local v47 = l_format_0(v44, v34);
    if v46 == v47 then
        return v31(l_NO_DIFF_MESSAGE_0, v45);
    else
        return l_diffLinesUnified_0(string.split(v46, "\n"), string.split(v47, "\n"), v45);
    end;
end;
v26 = function(v48, v49, v50)
    local v51 = nil;
    local v52 = false;
    local l_status_0, _ = pcall(function()
        v51 = v28(v48, v49, v27(v34, v50), v50);
    end);
    if not l_status_0 then
        v52 = true;
    end;
    local v55 = l_normalizeDiffOptions_0(v50).commonColor(l_NO_DIFF_MESSAGE_0);
    if not (v51 ~= nil) or v51 == v55 then
        v51 = v28(v48, v49, v27(v35, v50), v50);
        if not (not (v51 ~= v55) or v52) then
            v51 = l_normalizeDiffOptions_0(v50).commonColor(l_SIMILAR_MESSAGE_0) .. "\n\n" .. v51;
        end;
    end;
    return v51;
end;
v27 = function(v56, v57)
    return l_Object_0.assign({}, v56, {
        compareKeys = l_normalizeDiffOptions_0(v57).compareKeys
    });
end;
v28 = function(v58, v59, v60, v61)
    local v62 = l_Object_0.assign({}, v60, {
        indent = 0
    });
    local v63 = l_format_0(v58, v62);
    local v64 = l_format_0(v59, v62);
    if v63 == v64 then
        return v31(l_NO_DIFF_MESSAGE_0, v61);
    else
        return l_diffLinesUnified2_0(l_String_0.split(l_format_0(v58, v60), "\n"), l_String_0.split(l_format_0(v59, v60), "\n"), l_String_0.split(v63, "\n"), l_String_0.split(v64, "\n"), v61);
    end;
end;
return {
    diffLinesRaw = l_diffLinesRaw_0,
    diffLinesUnified = l_diffLinesUnified_0,
    diffLinesUnified2 = l_diffLinesUnified2_0,
    diffStringsRaw = l_diffStringsRaw_0,
    diffStringsUnified = l_diffStringsUnified_0,
    DIFF_DELETE = l_DIFF_DELETE_0,
    DIFF_EQUAL = l_DIFF_EQUAL_0,
    DIFF_INSERT = l_DIFF_INSERT_0,
    Diff = l_Diff_0,
    diff = v42
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local l_String_0 = v1.String;
local v5 = require(script.Parent.nilPlaceholder);
local v6 = {};
local _ = require(l_Parent_0.JestTypes);
local l_ErrorWithStack_0 = require(l_Parent_0.JestUtil).ErrorWithStack;
local l_default_0 = require(script.Parent.table.array).default;
local l_default_1 = require(script.Parent.table.template).default;
local v11 = require(script.Parent.validation);
local l_extractValidTemplateHeadings_0 = v11.extractValidTemplateHeadings;
local l_validateArrayTable_0 = v11.validateArrayTable;
local l_validateTemplateTableArguments_0 = v11.validateTemplateTableArguments;
local function v15()
    error("Method unavailable");
end;
local v16 = nil;
local v17 = nil;
local v18 = nil;
local v19 = nil;
local v20 = nil;
v6.default = function(v21, v22)
    local v23 = not (v22 ~= nil) or v22;
    local v24 = v21 or v15;
    return function(v25, ...)
        local v26 = if select("#", ...) > 0 then {
            ...
        } else {};
        local function v27(v28, v29, v30)
            local l_status_0, l_result_0 = pcall(function()
                return (l_Array_0.forEach(if not v16(v26) then v18(v28, v25, v26) else v17(v28, v25), function(v31)
                    return v24(v31.title, v20(v23, v31.arguments, v29), v30);
                end));
            end);
            if l_status_0 then
                return l_result_0;
            else
                local v34 = l_ErrorWithStack_0.new(l_result_0.message, v27);
                return v24(v28, function()
                    error(v34);
                end);
            end;
        end;
        return v27;
    end;
end;
v16 = function(v35)
    return #v35 == 0;
end;
v17 = function(v36, v37)
    l_validateArrayTable_0(v37);
    return l_default_0(v36, v37);
end;
v18 = function(v38, v39, v40)
    local v41 = v19(v39[1]);
    l_validateTemplateTableArguments_0(v41, v40);
    return l_default_1(v38, v41, v40);
end;
v19 = function(v42)
    return l_String_0.split(l_extractValidTemplateHeadings_0(v42):gsub("%s+", ""), "|");
end;
v20 = function(v43, v44, v45)
    local v46 = nil;
    v46 = if typeof(v45) == "function" then debug.info(v45, "a") else 0;
    local v47 = nil;
    v47 = function(v48)
        if v48 == v5 then
            return nil;
        elseif not l_Array_0.isArray(v48) then
            if typeof(v48) == "table" then
                l_Array_0.forEach(l_Object_0.keys(v48), function(v49)
                    v48[v49] = v47(v48[v49]);
                end);
                return v48;
            else
                return v48;
            end;
        else
            return l_Array_0.map(v48, function(v50)
                return v47(v50);
            end);
        end;
    end;
    local v51 = nil;
    v51 = function(v52, v53, ...)
        local v54 = if v53 ~= nil then v53 else #v52;
        if v54 == 0 then
            return ...;
        else
            return v51(v52, v54 - 1, v47(v52[v54]), ...);
        end;
    end;
    return (not not v43 and #v44 < v46) and function(v55)
        return v45(v51(v44), v55);
    end or function()
        return v45(v51(v44));
    end;
end;
return v6;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Error_0 = v1.Error;
local l_Object_0 = v1.Object;
local v6 = require(script.nilPlaceholder);
local v7 = {};
local _ = require(l_Parent_0.JestTypes);
local l_default_0 = require(script.bind).default;
local function v33(v10, v11, ...)
    local v12 = if select("#", ...) > 0 then {
        ...
    } else {};
    local v13 = #v12 == 0;
    local v14 = l_Array_0.isArray(v11) and l_Boolean_0.toJSBoolean(v11.raw);
    if not (v13 or v14) then
        error(l_Error_0.new("`.each` must only be called with an Array or Tagged Template Literal."));
    end;
    local v19 = setmetatable({}, {
        __call = function(_, v16, v17, v18)
            return l_default_0(v10.test)(v11, table.unpack(v12))(v16, v17, v18);
        end
    });
    v19.skip = l_default_0(if not v10.test then nil else v10.test.skip)(v11, table.unpack(v12));
    v19.only = l_default_0(if not v10.test then nil else v10.test.only)(v11, table.unpack(v12));
    local v24 = setmetatable({}, {
        __call = function(_, v21, v22, v23)
            return l_default_0(v10.it)(v11, table.unpack(v12))(v21, v22, v23);
        end
    });
    v24.skip = l_default_0(if not v10.it then nil else v10.it.skip)(v11, table.unpack(v12));
    v24.only = l_default_0(if not v10.it then nil else v10.it.only)(v11, table.unpack(v12));
    local v25 = l_default_0(v10.xit)(v11, table.unpack(v12));
    local v26 = l_default_0(v10.fit)(v11, table.unpack(v12));
    local v27 = l_default_0(v10.xtest)(v11, table.unpack(v12));
    local v32 = setmetatable({}, {
        __call = function(_, v29, v30, v31)
            return l_default_0(v10.describe, false)(v11, table.unpack(v12))(v29, v30, v31);
        end
    });
    v32.skip = l_default_0(if not v10.describe then nil else v10.describe.skip, false)(v11, table.unpack(v12));
    v32.only = l_default_0(if not v10.describe then nil else v10.describe.only, false)(v11, table.unpack(v12));
    return {
        describe = v32,
        fdescribe = l_default_0(v10.fdescribe, false)(v11, table.unpack(v12)),
        fit = v26,
        it = v24,
        test = v19,
        xdescribe = l_default_0(v10.xdescribe, false)(v11, table.unpack(v12)),
        xit = v25,
        xtest = v27,
        describeSKIP = l_default_0(v10.describeSKIP, false)(v11, table.unpack(v12)),
        describeFOCUS = l_default_0(v10.describeFOCUS, false)(v11, table.unpack(v12)),
        itSKIP = l_default_0(v10.itSKIP)(v11, table.unpack(v12)),
        itFOCUS = l_default_0(v10.itFOCUS)(v11, table.unpack(v12)),
        testSKIP = l_default_0(v10.testSKIP)(v11, table.unpack(v12)),
        testFOCUS = l_default_0(v10.testFOCUS)(v11, table.unpack(v12))
    };
end;
local function v45(v34)
    if typeof(v34) == "string" then
        local v35 = {};
        local v36 = {};
        local v37 = 1;
        local v38 = 1;
        local v39 = false;
        for v40 = 1, #v34 do
            local v41 = string.sub(v34, v40, v40);
            local v42 = if v40 < #v34 then string.sub(v34, v40 + 1, v40 + 1) else nil;
            if v40 == #v34 then
                if v39 then
                    error("expression not closed");
                end;
                table.insert(v35, (string.sub(v34, v37)));
            elseif not v39 and v41 == "$" then
                if v42 == "{" then
                    v39 = true;
                    v38 = v40 - 1;
                end;
            elseif v39 and v41 == "}" then
                local v43 = string.sub(v34, v37, v38);
                local v44 = string.sub(v34, v38 + 3, v40 - 1);
                table.insert(v35, v43);
                table.insert(v36, v44);
                v37 = v40 + 1;
                v39 = false;
            end;
        end;
        return (setmetatable(v35, {
            __index = {
                raw = v34
            }
        }));
    else
        return v34;
    end;
end;
local function v55(v46)
    local v47 = if v46 ~= nil then v46 else {};
    l_Array_0.forEach(l_Object_0.keys(v47), function(v48)
        local v49 = v47[v48];
        v47[v48] = if typeof(v49) == "function" then setmetatable({}, {
            __call = function(_, ...)
                return v49(...);
            end
        }) else v49;
    end);
    return (setmetatable({
        withGlobal = function(v51)
            return function(v52, ...)
                return v33(v51, v45(v52), ...);
            end;
        end
    }, {
        __call = function(_, v54, ...)
            return v33(v47, v45(v54), ...);
        end
    }));
end;
v7.bind = l_default_0;
v7.default = v55;
v7.NIL = v6;
return v7;


local v0 = newproxy(true);
getmetatable(v0).__tostring = function()
    return "nil";
end;
return v0;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = require(l_Parent_0.RegExp);
local v5 = {};
local v6 = require(script.Parent.format);
local _ = require(l_Parent_0.JestTypes);
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local l_interpolateVariables_0 = require(script.Parent.interpolation).interpolateVariables;
local v10 = v4("%[sdifjoOp]");
local v11 = nil;
local v12 = nil;
local v13 = nil;
local v14 = nil;
local v15 = nil;
local v16 = nil;
local v17 = nil;
local v18 = nil;
local v19 = nil;
local v20 = nil;
v5.default = function(v21, v22)
    if not v11(v21, v22) then
        return l_Array_0.map(v12(v22), function(v23, v24)
            return {
                arguments = l_Array_0.map(v23, function(v25)
                    return v25;
                end),
                title = v13(v21, v23, v24)
            };
        end);
    else
        return l_Array_0.map(v22, function(v26, v27)
            return {
                arguments = {
                    v26
                },
                title = l_interpolateVariables_0(v21, v26, v27):gsub("%%%%", "%%")
            };
        end);
    end;
end;
v11 = function(v28, v29)
    return (not v10:test(v14(v28)) and not v15(v29)) and l_Array_0.every(v29, function(v30)
        local v31 = false;
        if v30 ~= nil then
            v31 = typeof(v30) == "table";
        end;
        return v31;
    end);
end;
v12 = function(v32)
    if not v15(v32) then
        return (l_Array_0.map(v32, v16));
    else
        return v32;
    end;
end;
v15 = function(v33)
    return l_Array_0.every(v33, l_Array_0.isArray);
end;
v16 = function(v34)
    return {
        v34
    };
end;
v13 = function(v35, v36, v37)
    return l_Array_0.reduce(v36, function(v38, v39)
        local v40 = v18(v38)[1];
        local v41 = v17(v39);
        if l_Boolean_0.toJSBoolean(v40) then
            if v40 == "%p" then
                return v19(v38, v41);
            else
                return v6(v38, v41);
            end;
        else
            return v38;
        end;
    end, v20(v14(v35), v37)):gsub("@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@", "%%");
end;
v17 = function(v42)
    if typeof(v42) == "string" then
        return (v42:gsub("%%", "@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@"));
    else
        return v42;
    end;
end;
v18 = function(v43)
    local v44 = nil;
    for v45 in v43:gmatch("%%[sdifjoOp]") do
        if v44 == nil then
            v44 = {};
        end;
        table.insert(v44, v45);
    end;
    return v44 or {};
end;
v14 = function(v46)
    return (v46:gsub("%%%%", "@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@"));
end;
v20 = function(v47, v48)
    return (v47:gsub("%%#", tostring(v48), 1));
end;
v19 = function(v49, v50)
    return (v49:gsub("%%p", l_format_0(v50, {
        maxDepth = 1,
        min = true
    }), 1));
end;
return v5;


local l_NaN_0 = require(script.Parent.Parent.Parent.LuauPolyfill).Number.NaN;
local l_HttpService_0 = game:GetService("HttpService");
return function(...)
    local v2 = 2;
    local v3 = {
        ...
    };
    local v4 = v3[1];
    local v5 = #v3;
    return (v4:gsub("%%[sdj%%]", function(v6)
        if v6 == "%%" then
            return "%";
        elseif v5 < v2 then
            return v6;
        elseif v6 == "%s" then
            local v7 = nil;
            v7 = typeof(v3[v2]) == "function" and "Function" or tostring(v3[v2]);
            v2 = v2 + 1;
            return v7;
        elseif v6 == "%d" then
            local v8 = tonumber(v3[v2]) or l_NaN_0;
            v2 = v2 + 1;
            return (tostring(v8));
        elseif v6 == "%j" then
            local l_status_0, l_result_0 = pcall(function()
                local v9 = l_HttpService_0:JSONEncode(v3[v2]);
                v2 = v2 + 1;
                return v9;
            end);
            if l_status_0 then
                return l_result_0;
            else
                v2 = v2 + 1;
                return "[Circular]";
            end;
        else
            return v6;
        end;
    end));
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_String_0 = v1.String;
local v6 = {};
local l_isPrimitive_0 = require(l_Parent_0.JestGetType).isPrimitive;
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local v9 = nil;
local v10 = nil;
local v11 = nil;
v6.interpolateVariables = function(v12, v13, v14)
    return l_Array_0.reduce(l_Array_0.reduce(l_Object_0.keys(v13), v9(v12), {}), v10(v13), v12):gsub("%$#", tostring(v14), 1);
end;
v9 = function(v15)
    return function(v16, v17)
        return l_Array_0.concat(v16, ((function()
            local v18 = {};
            for v19 in v15:gmatch(("%%$%s[%%.%%w]*"):format(v17)) do
                table.insert(v18, v19);
            end;
            return v18;
        end)()));
    end;
end;
v10 = function(v20)
    return function(v21, v22)
        local v23 = v11(v20, (l_String_0.split(v22:gsub("%$", "", 1), "%.")));
        if not l_isPrimitive_0(v23) then
            return v21:gsub(v22, l_format_0(v23, {
                maxDepth = 1,
                min = true
            }), 1);
        else
            return v21:gsub(v22, tostring(v23), 1);
        end;
    end;
end;
v11 = function(v24, v25)
    local v26 = table.unpack(v25, 1, 1);
    local v27 = if #v25 > 1 then {
        table.unpack(v25, 2)
    } else {};
    if not l_Boolean_0.toJSBoolean(v26) or v24[v26] == nil then
        return v24;
    else
        return v11(v24[v26], v27);
    end;
end;
v6.getPath = v11;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local v4 = {};
local v5 = nil;
local v6 = nil;
local _ = require(l_Parent_0.JestTypes);
local _ = require(script.Parent.interpolation);
local l_interpolateVariables_0 = require(script.Parent.interpolation).interpolateVariables;
v4.default = function(v10, v11, v12)
    return l_Array_0.map(v6(v5(v12, v11), v11), function(v13, v14)
        return {
            arguments = {
                l_Object_0.assign({}, v13)
            },
            title = l_interpolateVariables_0(v10, v13, v14)
        };
    end);
end;
v5 = function(v15, _)
    return v15;
end;
v6 = function(v17, v18)
    return l_Array_0.map(v17, function(v19)
        return l_Array_0.reduce(v19, function(v20, v21, v22)
            return l_Object_0.assign(v20, {
                [v18[v22]] = v21
            });
        end, {});
    end);
end;
return v4;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Error_0 = v1.Error;
local l_String_0 = v1.String;
local v5 = {};
local v6 = require(l_Parent_0.ChalkLua);
local _ = require(l_Parent_0.JestTypes);
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local v9 = nil;
local v10 = nil;
local v11 = nil;
local v12 = nil;
local l_green_0 = v6.green;
local l_red_0 = v6.red;
v5.validateArrayTable = function(v15)
    if not l_Array_0.isArray(v15) then
        error(l_Error_0.new("`.each` must be called with an Array or Tagged Template Literal.\n\n" .. ("Instead was called with: %s\n"):format(l_format_0(v15, {
            maxDepth = 1,
            min = true
        }))));
    end;
    if v9(v15) then
        if v10(v15[1]) then
            error(l_Error_0.new("Error: `.each` called with an empty Tagged Template Literal of table data.\n"));
        end;
        error(l_Error_0.new("Error: `.each` called with a Tagged Template Literal with no data, remember to interpolate with ${expression} syntax.\n"));
    end;
    if v11(v15) then
        error(l_Error_0.new("Error: `.each` called with an empty Array of table data.\n"));
    end;
end;
v9 = function(v16)
    return v16.raw ~= nil;
end;
v11 = function(v17)
    return #v17 == 0;
end;
v10 = function(v18)
    local v19 = false;
    if typeof(v18) == "string" then
        v19 = l_String_0.trim(v18) == "";
    end;
    return v19;
end;
v5.validateTemplateTableArguments = function(v20, v21)
    l_Array_0.forEach(v21, function(v22, v23)
        local v24 = #v20 - #v22;
        local v25 = if v24 >= 0 then v24 else v24 - #v20;
        if v25 ~= 0 then
            error(l_Error_0.new(("%s arguments supplied for given headings:\n"):format(v24 > 0 and "Not enough" or "Too many") .. tostring(l_green_0(l_Array_0.join(v20, " | "))) .. "\n\n" .. "Received:\n" .. tostring(l_red_0(l_format_0(v21))) .. "\n\n" .. ("%s %s %s in row %d"):format(v24 > 0 and "Missing" or "Remove", l_red_0((tostring(v25))), v12("argument", v25), v23)));
        end;
    end);
end;
v12 = function(v26, v27)
    return v26 .. (v27 == 1 and "" or "s");
end;
local v28 = "^" .. "s*[^%.*]+s*" .. "$";
v5.extractValidTemplateHeadings = function(v29)
    local v30 = v29:match(v28);
    local v31 = nil;
    local v32 = nil;
    if v30 then
        v31 = l_Array_0.filter(l_String_0.split(v30, "\n"), function(v33)
            return l_String_0.trim(v33) ~= "";
        end);
    end;
    if v31 and #v31 > 0 then
        v32 = l_Array_0.some(l_Array_0.map(l_String_0.split(v31[1], "|"), function(v34)
            return l_String_0.trim(v34);
        end), function(v35)
            return v35:match("%s") ~= nil;
        end);
    end;
    if not (v30 ~= nil and not v32) then
        error(l_Error_0.new("Table headings do not conform to expected format:\n\n" .. l_green_0("heading1 | headingN") .. "\n\n" .. "Received:\n\n" .. l_red_0(l_format_0(v29))));
    end;
    return v31[1];
end;
return v5;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Object_0 = v1.Object;
local l_String_0 = v1.String;
local v5 = require(script.Parent.nilPlaceholder);
local v6 = {};
local _ = require(l_Parent_0.JestTypes);
local v8 = require(l_Parent_0.JestUtil);
local l_ErrorWithStack_0 = v8.ErrorWithStack;
local l_convertDescriptorToString_0 = v8.convertDescriptorToString;
local l_default_0 = require(script.Parent.table.array).default;
local l_default_1 = require(script.Parent.table.template).default;
local v13 = require(script.Parent.validation);
local l_extractValidTemplateHeadings_0 = v13.extractValidTemplateHeadings;
local l_validateArrayTable_0 = v13.validateArrayTable;
local l_validateTemplateTableArguments_0 = v13.validateTemplateTableArguments;
local function v17()
    error("Method unavailable");
end;
local v18 = nil;
local v19 = nil;
local v20 = nil;
local v21 = nil;
local v22 = nil;
v6.default = function(v23, v24)
    local v25 = not (v24 ~= nil) or v24;
    local v26 = v23 or v17;
    return function(v27, ...)
        local v28 = if select("#", ...) > 0 then {
            ...
        } else {};
        local function v29(v30, v31, v32)
            v30 = l_convertDescriptorToString_0(v30);
            local l_status_0, l_result_0 = pcall(function()
                return (l_Array_0.forEach(if not v18(v28) then v20(v30, v27, v28) else v19(v30, v27), function(v33)
                    return v26(v33.title, v22(v25, v33.arguments, v31), v32);
                end));
            end);
            if l_status_0 then
                return l_result_0;
            else
                local v36 = l_ErrorWithStack_0.new(l_result_0.message, v29);
                return v26(v30, function()
                    error(v36);
                end);
            end;
        end;
        return v29;
    end;
end;
v18 = function(v37)
    return #v37 == 0;
end;
v19 = function(v38, v39)
    l_validateArrayTable_0(v39);
    return l_default_0(v38, v39);
end;
v20 = function(v40, v41, v42)
    local v43 = v21(if not l_Array_0.isArray(v41) then v41 else v41[1]);
    l_validateTemplateTableArguments_0(v43, v42);
    return l_default_1(v40, v43, v42);
end;
v21 = function(v44)
    return l_String_0.split(l_extractValidTemplateHeadings_0(v44):gsub("%s+", ""), "|");
end;
v22 = function(v45, v46, v47)
    local v48 = nil;
    v48 = if typeof(v47) == "function" then debug.info(v47, "a") else 0;
    local v49 = nil;
    v49 = function(v50)
        if v50 == v5 then
            return nil;
        elseif not l_Array_0.isArray(v50) then
            if typeof(v50) == "table" then
                l_Array_0.forEach(l_Object_0.keys(v50), function(v51)
                    v50[v51] = v49(v50[v51]);
                end);
                return v50;
            else
                return v50;
            end;
        else
            return l_Array_0.map(v50, function(v52)
                return v49(v52);
            end);
        end;
    end;
    local v53 = nil;
    v53 = function(v54, v55, ...)
        local v56 = if v55 ~= nil then v55 else #v54;
        if v56 == 0 then
            return ...;
        else
            return v53(v54, v56 - 1, v49(v54[v56]), ...);
        end;
    end;
    return (not not v45 and #v46 < v48) and function(v57)
        return v47(v53(v46), v57);
    end or function()
        return v47(v53(v46));
    end;
end;
return v6;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local v4 = require(l_Parent_0.RegExp);
local v5 = {};
local v6 = require(script.Parent.format);
local _ = require(l_Parent_0.JestTypes);
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local l_interpolateVariables_0 = require(script.Parent.interpolation).interpolateVariables;
local v10 = v4("%[sdifjoOp]");
local v11 = nil;
local v12 = nil;
local v13 = nil;
local v14 = nil;
local v15 = nil;
local v16 = nil;
local v17 = nil;
local v18 = nil;
local v19 = nil;
local v20 = nil;
v5.default = function(v21, v22)
    if not v11(v21, v22) then
        return l_Array_0.map(v12(v22), function(v23, v24)
            return {
                arguments = l_Array_0.map(v23, function(v25)
                    return v25;
                end),
                title = v13(v21, v23, v24)
            };
        end);
    else
        return l_Array_0.map(v22, function(v26, v27)
            return {
                arguments = {
                    v26
                },
                title = l_interpolateVariables_0(v21, v26, v27):gsub("%%%%", "%%")
            };
        end);
    end;
end;
v11 = function(v28, v29)
    return (not v10:test(v14(v28)) and not v15(v29)) and l_Array_0.every(v29, function(v30)
        local v31 = false;
        if v30 ~= nil then
            v31 = typeof(v30) == "table";
        end;
        return v31;
    end);
end;
v12 = function(v32)
    if not v15(v32) then
        return (l_Array_0.map(v32, v16));
    else
        return v32;
    end;
end;
v15 = function(v33)
    return l_Array_0.every(v33, l_Array_0.isArray);
end;
v16 = function(v34)
    return {
        v34
    };
end;
v13 = function(v35, v36, v37)
    return l_Array_0.reduce(v36, function(v38, v39)
        local v40 = v18(v38)[1];
        local v41 = v17(v39);
        if l_Boolean_0.toJSBoolean(v40) then
            if v40 == "%p" then
                return v19(v38, v41);
            else
                return v6(v38, v41);
            end;
        else
            return v38;
        end;
    end, v20(v14(v35), v37)):gsub("@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@", "%%");
end;
v17 = function(v42)
    if typeof(v42) == "string" then
        return (v42:gsub("%%", "@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@"));
    else
        return v42;
    end;
end;
v18 = function(v43)
    local v44 = nil;
    for v45 in v43:gmatch("%%[sdifjoOp#]") do
        if v44 == nil then
            v44 = {};
        end;
        table.insert(v44, v45);
    end;
    return v44 or {};
end;
v14 = function(v46)
    return (v46:gsub("%%%%", "@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@"));
end;
v20 = function(v47, v48)
    return (v47:gsub("%%#", tostring(v48), 1));
end;
v19 = function(v49, v50)
    return (v49:gsub("%%p", l_format_0(v50, {
        maxDepth = 1,
        min = true
    }), 1));
end;
return v5;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Array_0 = v1.Array;
local l_Boolean_0 = v1.Boolean;
local l_Object_0 = v1.Object;
local l_String_0 = v1.String;
local v6 = {};
local l_isPrimitive_0 = require(l_Parent_0.JestGetType).isPrimitive;
local l_format_0 = require(l_Parent_0.PrettyFormat).format;
local v9 = nil;
local v10 = nil;
local v11 = nil;
v6.interpolateVariables = function(v12, v13, v14)
    return l_Array_0.reduce(l_Array_0.reduce(l_Object_0.keys(v13), v9(v12), {}), v10(v13), v12):gsub("%$#", tostring(v14), 1):gsub("%%#", tostring(v14), 1);
end;
v9 = function(v15)
    return function(v16, v17)
        return l_Array_0.concat(v16, ((function()
            local v18 = {};
            for v19 in v15:gmatch(("%%$%s[%%.%%w]*"):format(v17)) do
                table.insert(v18, v19);
            end;
            return v18;
        end)()));
    end;
end;
v10 = function(v20)
    return function(v21, v22)
        local v23 = v11(v20, (l_String_0.split(v22:gsub("%$", "", 1), ".")));
        if not l_isPrimitive_0(v23) then
            return v21:gsub(v22, l_format_0(v23, {
                maxDepth = 1,
                min = true
            }), 1);
        else
            return v21:gsub(v22, tostring(v23), 1);
        end;
    end;
end;
v11 = function(v24, v25)
    local v26 = table.unpack(v25, 1, 1);
    local v27 = if #v25 > 1 then {
        table.unpack(v25, 2)
    } else {};
    if not l_Boolean_0.toJSBoolean(v26) or v24[v26] == nil then
        return v24;
    else
        return v11(v24[v26], v27);
    end;
end;
v6.getPath = v11;
return v6;


local l_Parent_0 = script.Parent;
local _ = require(l_Parent_0.LuauPolyfill);
local _ = require(l_Parent_0.JestFakeTimers);
local _ = require(l_Parent_0.JestTypes);
local v4 = require(l_Parent_0.JestMock);
local _ = v4.fn;
local _ = v4.mocked;
return {};


local l_Parent_0 = script.Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v2 = require(l_Parent_0.Promise);
local _ = require(l_Parent_0.JestEnvironment);
local v4 = require(l_Parent_0.JestFakeTimers);
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.JestFakeTimers);
local _ = require(l_Parent_0.JestMock);
local v8 = {};
v8.__index = v8;
v8.new = function(v9)
    local v10 = setmetatable({}, v8);
    v10.context = {};
    local v11 = l_Object_0.assign(v10.context, v9.testEnvironmentOptions);
    v10.global = v11;
    v11.global = v11;
    v10.fakeTimers = v4.new();
    return v10;
end;
v8.getVmContext = function(v12)
    return v12.context;
end;
v8.setup = function(_)
    return v2.resolve();
end;
v8.teardown = function(v14)
    return v2.resolve():andThen(function()
        if v14.fakeTimers ~= nil then
            v14.fakeTimers:dispose();
        end;
        v14.context = {};
        v14.fakeTimers = nil;
    end);
end;
return v8;


local l_Parent_0 = script.Parent;
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local l_ModuleMocker_0 = require(l_Parent_0.JestMock).ModuleMocker;
local l_delay_0 = delay;
local l_tick_0 = tick;
local l_DateTime_0 = DateTime;
local l_os_0 = os;
local v7 = {};
v7.__index = v7;
v7.new = function()
    local v8 = l_ModuleMocker_0.new();
    local v9 = v8:fn(l_delay_0);
    local v10 = v8:fn(l_tick_0);
    local v11 = {
        now = v8:fn(l_DateTime_0.now),
        fromUnixTimestamp = l_DateTime_0.fromUnixTimestamp,
        fromUnixTimestampMillis = l_DateTime_0.fromUnixTimestampMillis,
        fromUniversalTime = l_DateTime_0.fromUniversalTime,
        fromLocalTime = l_DateTime_0.fromLocalTime,
        fromIsoDate = l_DateTime_0.fromIsoDate
    };
    local v12 = {
        time = v8:fn(l_os_0.time),
        clock = v8:fn(l_os_0.clock)
    };
    setmetatable(v12, {
        __index = l_os_0
    });
    local v13 = {
        _fakingTime = false,
        _timeouts = {},
        _mock = v8,
        _mockTime = 0,
        _mockSystemTime = l_DateTime_0.now().UnixTimestamp,
        delayOverride = v9,
        tickOverride = v10,
        dateTimeOverride = v11,
        osOverride = v12
    };
    setmetatable(v13, v7);
    return v13;
end;
v7._advanceToTime = function(v14, v15)
    if v14._mockTime < v15 then
        local v16 = v15 - v14._mockTime;
        v14._mockTime = v15;
        v14._mockSystemTime = v14._mockSystemTime + v16;
    end;
end;
v7.clearAllTimers = function(v17)
    if v17._fakingTime then
        v17._timeouts = {};
    end;
end;
v7.dispose = function(v18)
    v18:useRealTimers();
end;
v7.runAllTimers = function(v19)
    if v19:_checkFakeTimers() then
        for _, v21 in ipairs(v19._timeouts) do
            v19:_advanceToTime(v21.time);
            v21.callback();
        end;
    end;
    v19._timeouts = {};
end;
v7.runOnlyPendingTimers = function(v22)
    if v22:_checkFakeTimers() then
        local v23 = {};
        for _, v25 in ipairs(v22._timeouts) do
            table.insert(v23, v25);
        end;
        v22._timeouts = {};
        for _, v27 in ipairs(v23) do
            v22:_advanceToTime(v27.time);
            v27.callback();
        end;
    end;
end;
v7.advanceTimersToNextTimer = function(v28, v29)
    local v30 = v29 or 1;
    if v28:_checkFakeTimers() then
        local v31 = {};
        local v32 = -1;
        for _, v34 in ipairs(v28._timeouts) do
            if v32 < v34.time and v30 > 0 then
                v32 = v34.time;
                v28:_advanceToTime(v32);
                v30 = v30 - 1;
            end;
            if v34.time <= v28._mockTime then
                v34.callback();
            else
                table.insert(v31, v34);
            end;
        end;
        v28._timeouts = v31;
    end;
end;
v7.advanceTimersByTime = function(v35, v36)
    if v35:_checkFakeTimers() then
        local v37 = v35._mockTime + v36;
        local v38 = {};
        for _, v40 in ipairs(v35._timeouts) do
            if v40.time <= v37 then
                v35:_advanceToTime(v40.time);
                v40.callback();
            else
                table.insert(v38, v40);
            end;
        end;
        v35:_advanceToTime(v37);
        v35._timeouts = v38;
    end;
end;
v7.runAllTicks = function(v41)
    if v41:_checkFakeTimers() then
        error("not implemented");
    end;
end;
v7.useRealTimers = function(v42)
    if v42._fakingTime then
        v42.delayOverride.mockImplementation(l_delay_0);
        v42.tickOverride.mockImplementation(l_tick_0);
        v42.dateTimeOverride.now.mockImplementation(l_DateTime_0.now);
        v42.osOverride.time.mockImplementation(l_os_0.time);
        v42.osOverride.clock.mockImplementation(l_os_0.clock);
        v42._fakingTime = false;
    end;
end;
v7.useFakeTimers = function(v43)
    if not v43._fakingTime then
        v43.delayOverride.mockImplementation(function(v44, v45)
            local v46 = v43._mockTime + v44;
            local v47 = {
                time = v46,
                callback = v45
            };
            local v48 = #v43._timeouts + 1;
            for v49, v50 in ipairs(v43._timeouts) do
                if v46 < v50.time then
                    v48 = v49;
                    break;
                end;
            end;
            table.insert(v43._timeouts, v48, v47);
        end);
        v43.tickOverride.mockImplementation(function()
            return v43._mockSystemTime;
        end);
        v43.dateTimeOverride.now.mockImplementation(function()
            return l_DateTime_0.fromUnixTimestamp(v43._mockSystemTime);
        end);
        v43.osOverride.time.mockImplementation(function(v51)
            if typeof(v51) == "table" then
                return v43._mockSystemTime - l_DateTime_0.fromUniversalTime(v51.year or 1970, v51.month or 1, v51.day or 1, v51.hour or 0, v51.min or 0, v51.sec or 0).UnixTimestamp;
            else
                return v43._mockSystemTime;
            end;
        end);
        v43.osOverride.clock.mockImplementation(function()
            return v43._mockTime;
        end);
        v43._fakingTime = true;
        v43:reset();
    end;
end;
v7.reset = function(v52)
    if v52:_checkFakeTimers() then
        v52._mock:clearAllMocks();
        v52._timeouts = {};
        v52._mockTime = 0;
        v52._mockSystemTime = l_DateTime_0.now().UnixTimestamp;
    end;
end;
v7.setSystemTime = function(v53, v54)
    if v53:_checkFakeTimers() then
        if not v54 then
            v54 = l_DateTime_0.now();
        end;
        if l_getType_0(v54) == "DateTime" then
            v54 = v54.UnixTimestamp;
        end;
        v53._mockSystemTime = v54;
    end;
end;
v7.getRealSystemTime = function(_)
    return l_DateTime_0.now();
end;
v7.getTimerCount = function(v56)
    if not v56:_checkFakeTimers() then
        return 0;
    else
        return #v56._timeouts;
    end;
end;
v7._checkFakeTimers = function(v57)
    if not v57._fakingTime then
        error("A function to advance timers was called but the timers API is not " .. "mocked with fake timers. Call `jest.useFakeTimers()` in this test.");
    end;
    return v57._fakingTime;
end;
return v7;


local l_Parent_0 = script.Parent;
local l_getType_0 = require(l_Parent_0.JestGetType).getType;
local l_ModuleMocker_0 = require(l_Parent_0.JestMock).ModuleMocker;
local l_delay_0 = delay;
local l_tick_0 = tick;
local l_time_0 = time;
local l_DateTime_0 = DateTime;
local l_os_0 = os;
local l_task_0 = task;
local v9 = {};
v9.__index = v9;
v9.new = function()
    local v10 = l_ModuleMocker_0.new();
    local v11 = v10:fn(l_delay_0);
    local v12 = v10:fn(l_tick_0);
    local v13 = v10:fn(l_time_0);
    local v14 = {
        now = v10:fn(l_DateTime_0.now),
        fromUnixTimestamp = l_DateTime_0.fromUnixTimestamp,
        fromUnixTimestampMillis = l_DateTime_0.fromUnixTimestampMillis,
        fromUniversalTime = l_DateTime_0.fromUniversalTime,
        fromLocalTime = l_DateTime_0.fromLocalTime,
        fromIsoDate = l_DateTime_0.fromIsoDate
    };
    local v15 = {
        time = v10:fn(l_os_0.time),
        clock = v10:fn(l_os_0.clock)
    };
    setmetatable(v15, {
        __index = l_os_0
    });
    local v16 = {
        delay = v10:fn(l_task_0.delay)
    };
    setmetatable(v16, {
        __index = l_task_0
    });
    local v17 = {
        _fakingTime = false,
        _timeouts = {},
        _mock = v10,
        _mockTimeMs = 0,
        _mockSystemTime = l_DateTime_0.now().UnixTimestamp,
        _engineFrameTime = 0,
        delayOverride = v11,
        tickOverride = v12,
        timeOverride = v13,
        dateTimeOverride = v14,
        osOverride = v15,
        taskOverride = v16
    };
    setmetatable(v17, v9);
    return v17;
end;
v9._advanceToTime = function(v18, v19)
    local l_v19_0 = v19;
    if v18._mockTimeMs < v19 then
        if v18._engineFrameTime > 0 then
            l_v19_0 = math.floor(v19 / v18._engineFrameTime) * v18._engineFrameTime;
        end;
        local v21 = l_v19_0 - v18._mockTimeMs;
        v18._mockTimeMs = l_v19_0;
        v18._mockSystemTime = v18._mockSystemTime + v21 / 1000;
    end;
end;
v9.clearAllTimers = function(v22)
    if v22._fakingTime then
        v22._timeouts = {};
    end;
end;
v9.dispose = function(v23)
    v23:useRealTimers();
end;
v9.runAllTimers = function(v24)
    if v24:_checkFakeTimers() then
        for _, v26 in v24._timeouts, nil, nil do
            v24:_advanceToTime(v26.time + v24._engineFrameTime);
            v26.callback(unpack(v26.args));
        end;
    end;
    v24._timeouts = {};
end;
v9.runOnlyPendingTimers = function(v27)
    if v27:_checkFakeTimers() then
        local v28 = {};
        for _, v30 in v27._timeouts, nil, nil do
            table.insert(v28, v30);
        end;
        v27._timeouts = {};
        for _, v32 in v28, nil, nil do
            v27:_advanceToTime(v32.time + v27._engineFrameTime);
            v32.callback(unpack(v32.args));
        end;
    end;
end;
v9.advanceTimersToNextTimer = function(v33, v34)
    local v35 = v34 or 1;
    if v33:_checkFakeTimers() then
        local v36 = {};
        local v37 = -1;
        for _, v39 in v33._timeouts, nil, nil do
            if v37 < v39.time and v35 > 0 then
                v37 = if v33._engineFrameTime > 0 then math.floor(v39.time / v33._engineFrameTime + 1) * v33._engineFrameTime else v39.time;
                v33:_advanceToTime(v37);
                v35 = v35 - 1;
            end;
            if v39.time <= v33._mockTimeMs then
                v39.callback(unpack(v39.args));
            else
                table.insert(v36, v39);
            end;
        end;
        v33._timeouts = v36;
    end;
end;
v9.advanceTimersByTime = function(v40, v41)
    if v40:_checkFakeTimers() then
        local v42 = v40._mockTimeMs + v41;
        if v40._engineFrameTime > 0 then
            v42 = (math.floor(v42 / v40._engineFrameTime) + 1) * v40._engineFrameTime;
        end;
        local v43 = {};
        for _, v45 in v40._timeouts, nil, nil do
            if v45.time <= v42 then
                v40:_advanceToTime(v45.time + v40._engineFrameTime);
                v45.callback(unpack(v45.args));
            else
                table.insert(v43, v45);
            end;
        end;
        v40:_advanceToTime(v42);
        v40._timeouts = v43;
    end;
end;
v9.runAllTicks = function(v46)
    if v46:_checkFakeTimers() then
        error("not implemented");
    end;
end;
v9.useRealTimers = function(v47)
    if v47._fakingTime then
        v47.delayOverride.mockImplementation(l_delay_0);
        v47.tickOverride.mockImplementation(l_tick_0);
        v47.timeOverride.mockImplementation(l_time_0);
        v47.dateTimeOverride.now.mockImplementation(l_DateTime_0.now);
        v47.osOverride.time.mockImplementation(l_os_0.time);
        v47.osOverride.clock.mockImplementation(l_os_0.clock);
        v47.taskOverride.delay.mockImplementation(l_task_0.delay);
        v47._fakingTime = false;
    end;
end;
local function v56(v48, v49, v50, ...)
    local v51 = v48._mockTimeMs + (v48._engineFrameTime / 1000 + v49 * 1000);
    local v52 = {
        time = v51,
        callback = v50,
        args = {
            ...
        }
    };
    local v53 = #v48._timeouts + 1;
    for v54, v55 in v48._timeouts, nil, nil do
        if v51 < v55.time then
            v53 = v54;
            break;
        end;
    end;
    table.insert(v48._timeouts, v53, v52);
end;
v9.useFakeTimers = function(v57)
    if not v57._fakingTime then
        v57.delayOverride.mockImplementation(function(v58, v59)
            v56(v57, v58, v59);
        end);
        v57.tickOverride.mockImplementation(function()
            return v57._mockSystemTime;
        end);
        v57.timeOverride.mockImplementation(function()
            return v57._mockTimeMs / 1000;
        end);
        v57.dateTimeOverride.now.mockImplementation(function()
            return l_DateTime_0.fromUnixTimestamp(v57._mockSystemTime);
        end);
        v57.osOverride.time.mockImplementation(function(v60)
            if typeof(v60) == "table" then
                return v57._mockSystemTime - l_DateTime_0.fromUniversalTime(v60.year or 1970, v60.month or 1, v60.day or 1, v60.hour or 0, v60.min or 0, v60.sec or 0).UnixTimestamp;
            else
                return v57._mockSystemTime;
            end;
        end);
        v57.osOverride.clock.mockImplementation(function()
            return v57._mockTimeMs / 1000;
        end);
        v57.taskOverride.delay.mockImplementation(function(v61, v62, ...)
            v56(v57, v61, v62, ...);
        end);
        v57._fakingTime = true;
        v57:reset();
    end;
end;
v9.reset = function(v63)
    if v63:_checkFakeTimers() then
        v63._mock:clearAllMocks();
        v63._timeouts = {};
        v63._mockTimeMs = 0;
        v63._mockSystemTime = l_DateTime_0.now().UnixTimestamp;
        v63._engineFrameTime = 0;
    end;
end;
v9.setSystemTime = function(v64, v65)
    if v64:_checkFakeTimers() then
        if not v65 then
            v65 = l_DateTime_0.now();
        end;
        if l_getType_0(v65) == "DateTime" then
            v65 = v65.UnixTimestamp;
        end;
        v64._mockSystemTime = v65;
    end;
end;
v9.setEngineFrameTime = function(v66, v67)
    if v66:_checkFakeTimers() then
        if v67 < 0 then
            error("Frame Time should be greater than 0");
        end;
        v66._engineFrameTime = v67;
    end;
end;
v9.getEngineFrameTime = function(v68)
    if not v68:_checkFakeTimers() then
        return 0;
    else
        return v68._engineFrameTime;
    end;
end;
v9.getRealSystemTime = function(_)
    return l_DateTime_0.now();
end;
v9.getTimerCount = function(v70)
    if not v70:_checkFakeTimers() then
        return 0;
    else
        return #v70._timeouts;
    end;
end;
v9._checkFakeTimers = function(v71)
    if not v71._fakingTime then
        error("A function to advance timers was called but the timers API is not " .. "mocked with fake timers. Call `jest.useFakeTimers()` in this test.");
    end;
    return v71._fakingTime;
end;
return v9;


local l_Parent_0 = script.Parent;
local v1 = require(l_Parent_0.LuauPolyfill);
local l_Error_0 = v1.Error;
local l_instanceof_0 = v1.instanceof;
local v4 = nil;
local l_Set_0 = v1.Set;
local l_Map_0 = v1.Map;
return {
    getType = function(v7)
        if v7 == nil then
            return "nil";
        elseif typeof(v7) == "boolean" then
            return "boolean";
        elseif typeof(v7) == "function" then
            return "function";
        elseif typeof(v7) == "number" then
            return "number";
        elseif typeof(v7) == "string" then
            return "string";
        elseif typeof(v7) == "DateTime" then
            return "DateTime";
        elseif not (typeof(v7) == "userdata") or not tostring(v7):match("Symbol%(.*%)") then
            if typeof(v7) == "table" then
                local l_status_0, l_result_0 = pcall(function()
                    local v8 = false;
                    if typeof(v7.test) == "function" then
                        v8 = typeof(v7.exec) == "function";
                    end;
                    return v8;
                end);
                if not (not l_status_0 or not l_result_0) then
                    v4 = require(l_Parent_0.RegExp);
                    if l_instanceof_0(v7, v4) then
                        return "regexp";
                    end;
                end;
            end;
            if not l_instanceof_0(v7, l_Error_0) then
                if not l_instanceof_0(v7, l_Map_0) then
                    if not l_instanceof_0(v7, l_Set_0) then
                        if typeof(v7) == "table" then
                            return "table";
                        elseif not (type(v7) ~= typeof(v7)) then
                            if type(v7) == "userdata" then
                                return "userdata";
                            elseif typeof(v7) == "thread" then
                                return "thread";
                            else
                                error(string.format("value of unknown type: %s (%s)", typeof(v7), (tostring(v7))));
                                return ;
                            end;
                        else
                            return (typeof(v7));
                        end;
                    else
                        return "set";
                    end;
                else
                    return "map";
                end;
            else
                return "error";
            end;
        else
            return "symbol";
        end;
    end,
    isPrimitive = function(v11)
        local v12 = false;
        if typeof(v11) ~= "table" then
            v12 = false;
            if typeof(v11) ~= "function" then
                v12 = not (type(v11) ~= typeof(v11));
            end;
        end;
        return v12;
    end,
    isRobloxBuiltin = function(v13)
        return type(v13) ~= typeof(v13);
    end
};


local l_Parent_0 = script.Parent;
local l_Object_0 = require(l_Parent_0.LuauPolyfill).Object;
local v2 = require(l_Parent_0.Expect);
local v3 = require(l_Parent_0.Jest);
local v4 = require(l_Parent_0.JestSnapshot);
local v5 = require(l_Parent_0.TestEZ);
return {
    expect = v2,
    jest = v3,
    testEnv = v3.testEnv,
    jestSnapshot = {
        toMatchSnapshot = v4.toMatchSnapshot,
        toThrowErrorMatchingSnapshot = v4.toThrowErrorMatchingSnapshot
    },
    TestEZ = l_Object_0.assign({}, v5, {
        Reporters = l_Object_0.assign({}, v5.Reporters, require(l_Parent_0.TestEZJestAdapter).Reporters)
    })
};


local l_Parent_0 = script.Parent.Parent;
local l_Error_0 = require(l_Parent_0.LuauPolyfill).Error;
local _ = require(l_Parent_0.JestEnvironment);
local _ = require(l_Parent_0.Expect);
local _ = require(l_Parent_0.JestTypes);
local _ = require(l_Parent_0.Expect);
error(l_Error_0.new("Do not import `JestGlobals` outside of the Jest test environment"));
return {};


local l_getType_0 = require(script.Parent.Parent.JestGetType).getType;
local v1 = {};
v1.__index = v1;
v1.new = function(v2)
    local v3 = {
        object = v2,
        type = l_getType_0(v2)
    };
    if v3.type ~= "table" then
        error("Type " .. v3.type .. " is not supported in Replaceable");
    end;
    setmetatable(v3, v1);
    return v3;
end;
v1.isReplaceable = function(v4, v5)
    local v6 = l_getType_0(v4);
    local v7 = l_getType_0(v5);
    local v8 = false;
    if v6 == v7 then
        v8 = v6 == "table";
    end;
    return v8;
end;
v1.forEach = function(v9, v10)
    for v11, v12 in pairs(v9.object) do
        v10(v12, v11, v9.object);
    end;
end;
v1.get = function(v13, v14)
    return v13.object[v14];
end;
v1.set = function(v15, v16, v17)
    v15.object[v16] = v17;
end;
return v1;


local v0 = nil;
local v1 = nil;
v0 = function(v2, v3)
    local v4 = {};
    v3[v2] = v4;
    for v5, v6 in pairs(v2) do
        v4[v5] = v1(v6, v3);
    end;
    return v4;
end;
v1 = function(v7, v8)
    if typeof(v7) ~= "table" then
        return v7;
    elseif not v8[v7] then
        local v9 = v0(v7, v8);
        local v10 = getmetatable(v7);
        if v10 and typeof(v10) == "table" then
            setmetatable(v9, v10);
        end;
        return v9;
    else
        return v8[v7];
    end;
end;
return function(v11, v12)
    v12 = v12 or {};
    setmetatable(v12, {
        _mode = "kv"
    });
    return v1(v11, v12);
end;


local v0 = nil;
local v1 = nil;
v0 = function(v2, v3)
    local v4 = {};
    v3[v2] = v4;
    for v5, v6 in pairs(v2) do
        v4[v5] = v1(v6, v3);
    end;
    return v4;
end;
v1 = function(v7, v8)
    if typeof(v7) ~= "table" then
        return v7;
    elseif not v8[v7] then
        local v9 = v0(v7, v8);
        local v10 = getmetatable(v7);
        if v10 and typeof(v10) == "table" then
            setmetatable(v9, v10);
        end;
        return v9;
    else
        return v8[v7];
    end;
end;
return function(v11, v12)
    local v13 = v12 or {};
    setmetatable(v13, {
        _mode = "kv"
    });
    return v1(v11, v13);
end;


local v0 = require(script.Parent.LuauPolyfill);
local l_Array_0 = v0.Array;
local l_String_0 = v0.String;
local l_toJSBoolean_0 = v0.Boolean.toJSBoolean;
local _ = nil;
local v5 = nil;
local function v7(v6)
    return l_String_0.trim(v6 or "");
end;
local function _(v8)
    if not v8:find("%s*at.*%(?:%d*:%d*%)?") and not v8:find("%s*at.*%(?native%)?") then
        return v8;
    else
        return v7(v8);
    end;
end;
local function v14(v10, v11)
    local v12 = 0;
    return l_Array_0.filter(v10, function(v13)
        if not v13:find("^%s+at <anonymous>.*$") then
            if not v13:find("^%s+at Promise %(<anonymous>%).*$") and not v13:find("^%s+at new Promise %(<anonymous>%).*$") then
                if not v13:find("^%s+at Generator.next %(<anonymous>%).*$") then
                    if not v13:find("^%s+at next %(native%).*$") then
                        if v13:find("%s*at.*%(?:%d*:%d*%)?") and v13:find("%s*at.*%(?native%)?") then
                            if not v13:find("%s+at(.jasmine%-)") and not v13:find("%s+at(%s+jasmine%.buildExpectationResult)") then
                                v12 = v12 + 1;
                                if v12 == 1 then
                                    return true;
                                elseif not v11.noStackTrace then
                                    return true;
                                else
                                    return false;
                                end;
                            else
                                return false;
                            end;
                        else
                            return true;
                        end;
                    else
                        return false;
                    end;
                else
                    return false;
                end;
            else
                return false;
            end;
        else
            return false;
        end;
    end);
end;
local _ = function(_, _, v17)
    return v17;
end;
v5 = function(v19, v20)
    if v20 == nil then
        v20 = {
            noCodeFrame = false,
            noStackTrace = false
        };
    end;
    return v14(string.split(v19, "\n"), v20);
end;
return {
    formatStackTrace = function(v21, v22, v23, v24)
        local v25 = v5(v21, v23);
        local v26 = nil;
        if v24 then
            v26 = "unsupported";
        end;
        return string.format("\n%s", (table.concat(l_Array_0.map(l_Array_0.filter(v25, l_toJSBoolean_0), function(v27)
            local v28 = "      ";
            local _ = v22;
            local _ = v26;
            return v28 .. if v27:find("%s*at.*%(?:%d*:%d*%)?") or v27:find("%s*at.*%(?native%)?") then l_String_0.trim(v27 or "") else v27;
        end), "\n")));
    end,
    getStackTraceLines = v5
};