diff --git a/resources/[standalone]/bob74_ipl/LICENSE b/resources/[standalone]/bob74_ipl/LICENSE new file mode 100644 index 0000000..2a6e04c --- /dev/null +++ b/resources/[standalone]/bob74_ipl/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Bob74 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/[standalone]/bob74_ipl/README.md b/resources/[standalone]/bob74_ipl/README.md index 43e1959..4ad3fad 100644 --- a/resources/[standalone]/bob74_ipl/README.md +++ b/resources/[standalone]/bob74_ipl/README.md @@ -1,4 +1,4 @@ -# Fix holes and customize the map (Updated to The Criminal Enterprises DLC) +# Fix holes and customize the map (Updated to Agents of Sabotage DLC) The purpose of this script is to fix the holes in the map by loading zones that aren’t loaded by default. I’ve added quite a lot of places to load, based on [Mikeeh’s script](https://forum.fivem.net/t/release-load-unloaded-ipls/5911). If you just want to fix the holes in the map, then use this resource as provided. @@ -30,6 +30,57 @@ This resource has been completely rewritten from scratch since v2.0. You can cus (DD/MM/YYYY) --- +27/12/2024 - 2.4.0 +- Added "Agents of Sabotage" support +- Fixed Eclipse Boulevard Garage tint colors (@DevSekai) + +28/08/2024 - 2.3.3 +- Fixed door on cargo ship (@NeenGame) +- Fixed Franklin interior (@NeenGame) + +24/08/2024 - 2.3.2 +- Added Kosatka and "The Music Locker" interiors +- Removed `Citizen` prefix from code + +10/08/2024 - 2.3.1 +- Fix world not rendering when inside security offices +- Fix typos in "Los Santos Tuners" files + +02/07/2024 - 2.3.0 +- Added "Bottom Dollar Bounties" support + +14/04/2024 - 2.2.1 +- Allow disabling San Andreas Mercenaries fixes +- Allow setting base game cargo ship as sunk +- Rename `ChopShopSalvage.Ipl.Load()` to `ChopShopSalvage.Ipl.Exterior.Load()` +- Rename `DrugWarsFreakshop.Ipl.Load()` to `DrugWarsFreakshop.Ipl.Exterior.Load()` +- Rename `DrugWarsGarage.Ipl.Load()` to `DrugWarsGarage.Ipl.Exterior.Load()` + +06/04/2024 - 2.2.0 +- Added "Los Santos Drug Wars" support +- Added "San Andreas Mercenaries" support +- Added "The Chop Shop" support +- Added missing base IPLs + +27/03/2024 - 2.1.4 +- North Yankton improvements (https://github.com/Bob74/bob74_ipl/pull/131 @TheIndra55) + +05/12/2023 - 2.1.3 +- Added missing train track near Davis Quartz (https://github.com/Bob74/bob74_ipl/pull/129 @TheIndra55) + +10/01/2023 - 2.1.2 +- Fix native and update native names (@NeenGame) + +24/10/2022 - 2.1.1 +- Fix vespucci beach wall hole +- Fix Boat House Door in Sandy Shores +- Fix GTA 5 24/7 Roof in Sandy Shores +- Fix Industrial Building near Lesters Warehouse +- Fix Collision Holes near Lost MC compound + +11/10/2022 - 2.1.0a +- Make Doomsday Facility Objects non network + 03/08/2022 - 2.1.0 - Added "The Criminal Enterprises" support @@ -66,7 +117,7 @@ This resource has been completely rewritten from scratch since v2.0. You can cus 19/07/2021 - 2.0.10 - Added Diamond Casino IPLs: Casino, Garage, VIP garage, Penthouse - Import: Forced refresh of CEO Garages -- Updated fxmanifest fx_version to adamant +- Updated fxmanifest fx_version to cerulean - Updated IPL list link in fxmanifest nad removed outdated Props list and Interior ID list - Fixed export typo in `michael.lua` - Removed unnecessary space in north_yankton IPL @@ -117,8 +168,8 @@ This resource has been completely rewritten from scratch since v2.0. You can cus - Fixed gang members names using an old format - Disabled the Mod shop from CEO garage 3 (ImportCEOGarage3) because it is overlapping with CEO office 3 (FinanceOffice3) -- 08/11/2018 - 2.0.3 -Added biker gang’s name, missions, and members pictures +08/11/2018 - 2.0.3 +- Added biker gang’s name, missions, and members pictures - Added CEO office organization’s name 05/11/2018 - 2.0.1 @@ -150,3 +201,9 @@ Added biker gang’s name, missions, and members pictures 14/06/2017 - Original release + +## Contributors + + + + diff --git a/resources/[standalone]/bob74_ipl/client.lua b/resources/[standalone]/bob74_ipl/client.lua index 44e1215..22f07f8 100644 --- a/resources/[standalone]/bob74_ipl/client.lua +++ b/resources/[standalone]/bob74_ipl/client.lua @@ -1,4 +1,4 @@ -Citizen.CreateThread(function() +CreateThread(function() -- ==================================================================== -- =--------------------- [GTA V: Single player] ---------------------= -- ==================================================================== @@ -25,7 +25,7 @@ Citizen.CreateThread(function() BahamaMamas.Enable(true) -- Pillbox hospital: 307.1680, -590.807, 43.280 - -- PillboxHospital.Enable(false) + --PillboxHospital.Enable(true) -- Zancudo Gates (GTAO like): -1600.30100000, 2806.73100000, 18.79683000 ZancudoGates.LoadDefault() @@ -34,6 +34,7 @@ Citizen.CreateThread(function() Ammunations.LoadDefault() LesterFactory.LoadDefault() StripClub.LoadDefault() + CargoShip.LoadDefault() Graffitis.Enable(true) @@ -144,6 +145,14 @@ Citizen.CreateThread(function() DiamondPenthouse.LoadDefault() -- 976.636, 70.295, 115.164 end + -- ==================================================================== + -- =-------------------- [DLC: Cayo Perico Heist] --------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2189 then + CayoPericoNightclub.LoadDefault() -- 1550.0, 250.0, -50.0 + CayoPericoSubmarine.LoadDefault() -- 1560.0, 400.0, -50.0 + end + -- ==================================================================== -- =------------------- [DLC: Los Santos Tuners] ---------------------= -- ==================================================================== @@ -175,4 +184,49 @@ Citizen.CreateThread(function() CriminalEnterpriseVehicleWarehouse.LoadDefault() -- 800.13696, -3001.4297, -65.14074 CriminalEnterpriseWarehouse.LoadDefault() -- 849.1047, -3000.209, -45.974354 end + + -- ==================================================================== + -- =------------------- [DLC: Los Santos Drug Wars] ------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2802 then + DrugWarsFreakshop.LoadDefault() -- 570.9713, -420.0727, -70.000 + DrugWarsGarage.LoadDefault() -- 519.2477, -2618.788, -50.000 + DrugWarsLab.LoadDefault() -- 483.4252, -2625.071, -50.000 + end + + -- ==================================================================== + -- =------------------- [DLC: San Andreas Mercenaries] ---------------= + -- ==================================================================== + if GetGameBuildNumber() >= 2944 then + MercenariesClub.LoadDefault() -- 1202.407, -3251.251, -50.000 + MercenariesLab.LoadDefault() -- -1916.119, 3749.719, -100.000 + MercenariesFixes.LoadDefault() + end + + -- ==================================================================== + -- =------------------- [DLC: The Chop Shop] -------------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 3095 then + ChopShopCargoShip.LoadDefault() -- -344.4349, -4062.832, 17.000 + ChopShopCartelGarage.LoadDefault() -- 1220.133, -2277.844, -50.000 + ChopShopLifeguard.LoadDefault() -- -1488.153, -1021.166, 5.000 + ChopShopSalvage.LoadDefault() -- 1077.276, -2274.876, -50.000 + end + + -- ==================================================================== + -- =------------------ [DLC: Bottom Dollar Bounties] -----------------= + -- ==================================================================== + if GetGameBuildNumber() >= 3258 then + SummerCarrier.LoadDefault() -- -3208.03, 3954.54, 14.0 + SummerOffice.LoadDefault() -- 565.886, -2688.761, -50.0 + end + + -- ==================================================================== + -- =-------------------- [DLC: Agents of Sabotage] -------------------= + -- ==================================================================== + if GetGameBuildNumber() >= 3407 then + AgentsFactory.LoadDefault() -- 752.31, -997.24, -47.0 + AgentsOffice.LoadDefault() -- 2149.71, 4787.76, -47.0 + AgentsAirstrip.LoadDefault() -- -2106.98, 1468.31, 282.0 + end end) diff --git a/resources/[standalone]/bob74_ipl/dlc_afterhours/nightclubs.lua b/resources/[standalone]/bob74_ipl/dlc_afterhours/nightclubs.lua index 53993d5..0b4c9bf 100644 --- a/resources/[standalone]/bob74_ipl/dlc_afterhours/nightclubs.lua +++ b/resources/[standalone]/bob74_ipl/dlc_afterhours/nightclubs.lua @@ -259,7 +259,7 @@ AfterHoursNightclubs = { Enable = function(trophy, state, color, refresh) SetIplPropState(AfterHoursNightclubs.interiorId, trophy, state, refresh) - SetInteriorPropColor(AfterHoursNightclubs.interiorId, trophy, color) + SetInteriorEntitySetColor(AfterHoursNightclubs.interiorId, trophy, color) end }, DryIce = { @@ -287,11 +287,11 @@ AfterHoursNightclubs = { if state then RequestNamedPtfxAsset("scr_ba_club") while not HasNamedPtfxAssetLoaded("scr_ba_club") do - Citizen.Wait(0) + Wait(0) end for key, emitter in pairs(AfterHoursNightclubs.Interior.DryIce.Emitters) do - UseParticleFxAssetNextCall("scr_ba_club") + UseParticleFxAsset("scr_ba_club") StartParticleFxLoopedAtCoord("scr_ba_club_smoke_machine", emitter.pos.x, emitter.pos.y, emitter.pos.z, emitter.rot.x, emitter.rot.y, emitter.rot.z, AfterHoursNightclubs.Interior.DryIce.scale, false, false, false, true) end else diff --git a/resources/[standalone]/bob74_ipl/dlc_agents/airstrip.lua b/resources/[standalone]/bob74_ipl/dlc_agents/airstrip.lua new file mode 100644 index 0000000..63687b1 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_agents/airstrip.lua @@ -0,0 +1,21 @@ +-- Airstrip: -2106.98, 1468.31, 282.0 +exports("GetAgentsAirstrip", function() + return AgentsAirstrip +end) + +AgentsAirstrip = { + Ipl = { + ipl = "m24_2_airstrip", + + Load = function() + EnableIpl(AgentsAirstrip.Ipl.ipl, true) + end, + Remove = function() + EnableIpl(AgentsAirstrip.Ipl.ipl, false) + end + }, + + LoadDefault = function() + AgentsAirstrip.Ipl.Load() + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_agents/base.lua b/resources/[standalone]/bob74_ipl/dlc_agents/base.lua new file mode 100644 index 0000000..053cdff --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_agents/base.lua @@ -0,0 +1,4 @@ +CreateThread(function() + RequestIpl("m24_2_legacy_fixes") + RequestIpl("m24_2_mp2024_02_additions") +end) diff --git a/resources/[standalone]/bob74_ipl/dlc_agents/factory.lua b/resources/[standalone]/bob74_ipl/dlc_agents/factory.lua new file mode 100644 index 0000000..9942bd8 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_agents/factory.lua @@ -0,0 +1,65 @@ +-- Garment Factory: 752.31, -997.24, -47.0 +exports("GetAgentsFactory", function() + return AgentsFactory +end) + +AgentsFactory = { + interiorId = 297729, + + Ipl = { + Exterior = { + ipl = "m24_2_garment_factory", + + Load = function() + EnableIpl(AgentsFactory.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(AgentsFactory.Ipl.Exterior.ipl, false) + end + } + }, + + Trophy = { + egg = "set_pent_rob_egg", + idol01 = "set_pent_rob_idol_01", + idol02 = "set_pent_rob_idol_02", + scarab = "set_zanc_scarab", + drive = "set_whistle_drive", + plane = "set_cargo", + + Enable = function(trophy, state, refresh) + SetIplPropState(AgentsFactory.interiorId, trophy, state, refresh) + end + }, + + Details = { + sonar = "set_sonar", + drive = "set_malware_drive", + controller = "set_rc_controller", + thermite = "set_thermal", + key = "set_smartkey", + drone = "set_pent_drone", + case = "set_pent_emp", + armor = "set_zanc_armor", + keycard = "set_zanc_keycard", + + Enable = function(details, state, refresh) + SetIplPropState(AgentsFactory.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + -- Exterior + AgentsFactory.Ipl.Exterior.Load() + + -- Interior + AgentsFactory.Trophy.Enable(AgentsFactory.Trophy.idol01, true, false) + AgentsFactory.Trophy.Enable(AgentsFactory.Trophy.idol02, true, false) + + AgentsFactory.Details.Enable(AgentsFactory.Details.armor, true, false) + AgentsFactory.Details.Enable(AgentsFactory.Details.sonar, true, false) + AgentsFactory.Details.Enable(AgentsFactory.Details.drive, true, false) + + RefreshInterior(AgentsFactory.interiorId) + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_agents/office.lua b/resources/[standalone]/bob74_ipl/dlc_agents/office.lua new file mode 100644 index 0000000..70093c9 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_agents/office.lua @@ -0,0 +1,46 @@ +-- McKenzie Field Hangar Office: 2149.71, 4787.76, -47.0 +exports("GetAgentsOffice", function() + return AgentsOffice +end) + +AgentsOffice = { + interiorId = 297985, + + Style = { + bed = "set_bed", + mess = "collision_z9mhn5", + + Set = function(style, refresh) + AgentsOffice.Style.Clear(refresh) + + SetIplPropState(AgentsOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(AgentsOffice.interiorId, { + AgentsOffice.Style.bed, + AgentsOffice.Style.mess + }, false, refresh) + end + }, + + Details = { + laptop = "set_laptop", + ammo = "set_ammo", + intel = "set_intel", + weapons = "set_weapons", + tools = "collision_9k04j35", + booze = "set_24_2", + + Enable = function(details, state, refresh) + SetIplPropState(AgentsOffice.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + AgentsOffice.Style.Set(AgentsOffice.Style.bed, false) + + AgentsOffice.Details.Enable(AgentsOffice.Details.laptop, true, false) + + RefreshInterior(AgentsOffice.interiorId) + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse1.lua b/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse1.lua index bfdcec7..0bddea1 100644 --- a/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse1.lua +++ b/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse1.lua @@ -42,7 +42,7 @@ BikerClubhouse1 = { BikerClubhouse1.Walls.Clear(false) SetIplPropState(BikerClubhouse1.interiorId, walls, true, refresh) - SetInteriorPropColor(BikerClubhouse1.interiorId, walls, color) + SetInteriorEntitySetColor(BikerClubhouse1.interiorId, walls, color) end, Clear = function(refresh) SetIplPropState(BikerClubhouse1.interiorId, { @@ -63,7 +63,7 @@ BikerClubhouse1 = { BikerClubhouse1.Furnitures.Clear(false) SetIplPropState(BikerClubhouse1.interiorId, furn, true, refresh) - SetInteriorPropColor(BikerClubhouse1.interiorId, furn, color) + SetInteriorEntitySetColor(BikerClubhouse1.interiorId, furn, color) end, Clear = function(refresh) SetIplPropState(BikerClubhouse1.interiorId, { diff --git a/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse2.lua b/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse2.lua index bfd6b55..9aba622 100644 --- a/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse2.lua +++ b/resources/[standalone]/bob74_ipl/dlc_bikers/clubhouse2.lua @@ -41,7 +41,7 @@ BikerClubhouse2 = { BikerClubhouse2.Walls.Clear(false) SetIplPropState(BikerClubhouse2.interiorId, walls, true, refresh) - SetInteriorPropColor(BikerClubhouse2.interiorId, walls, color) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, walls, color) end, Clear = function(refresh) SetIplPropState(BikerClubhouse2.interiorId, { @@ -55,7 +55,7 @@ BikerClubhouse2 = { SetColor = function(color, refresh) SetIplPropState(BikerClubhouse2.interiorId, BikerClubhouse2.LowerWalls.default, true, refresh) - SetInteriorPropColor(BikerClubhouse2.interiorId, BikerClubhouse2.LowerWalls.default, color) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, BikerClubhouse2.LowerWalls.default, color) end, }, Furnitures = { @@ -83,7 +83,7 @@ BikerClubhouse2 = { BikerClubhouse2.Furnitures.Clear(false) SetIplPropState(BikerClubhouse2.interiorId, furn, true, refresh) - SetInteriorPropColor(BikerClubhouse2.interiorId, furn, color) + SetInteriorEntitySetColor(BikerClubhouse2.interiorId, furn, color) end, Clear = function(refresh) SetIplPropState(BikerClubhouse2.interiorId, { diff --git a/resources/[standalone]/bob74_ipl/dlc_bikers/gang.lua b/resources/[standalone]/bob74_ipl/dlc_bikers/gang.lua index ef9cec2..d0e9247 100644 --- a/resources/[standalone]/bob74_ipl/dlc_bikers/gang.lua +++ b/resources/[standalone]/bob74_ipl/dlc_bikers/gang.lua @@ -199,10 +199,10 @@ BikerGang = { local IsTextureDictLoaded = LoadStreamedTextureDict(member.textureDict) if not IsTextureDictLoaded then - Citizen.Trace("ERROR: BikerClubhouseDrawMembers - Textures dictionnary \"" .. tostring(member.textureDict) .. "\" cannot be loaded.") + print("ERROR: BikerClubhouseDrawMembers - Textures dictionnary \"" .. tostring(member.textureDict) .. "\" cannot be loaded.") end else - Citizen.Trace("ERROR: BikerClubhouseDrawMembers - PedHeadShot not ready.") + print("ERROR: BikerClubhouseDrawMembers - PedHeadShot not ready.") end end, Clear = function(member) @@ -245,7 +245,7 @@ BikerGang = { ReleaseNamedRendertarget(GetHashKey(BikerGang.Clubhouse.ClubName.target)) end - if HasNamedScaleformMovieLoaded(BikerGang.Clubhouse.ClubName.movieId) then + if HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.ClubName.movieId) then SetScaleformMovieAsNoLongerNeeded(BikerGang.Clubhouse.ClubName.movieId) end @@ -347,7 +347,7 @@ BikerGang = { Init = function() if not DrawEmptyRect(BikerGang.Clubhouse.MissionsWall.target, BikerGang.Clubhouse.MissionsWall.prop) then - Citizen.Trace("ERROR: BikerGang.Clubhouse.MissionsWall.Init() - DrawEmptyRect - Timeout") + print("ERROR: BikerGang.Clubhouse.MissionsWall.Init() - DrawEmptyRect - Timeout") end end, Enable = function(state) @@ -356,25 +356,25 @@ BikerGang = { SelectMission = function(position) if BikerGang.Clubhouse.MissionsWall.movieId ~= -1 then BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "SET_SELECTED_MISSION") - PushScaleformMovieMethodParameterInt(position) -- Mission index 0 to 2 (-1 = no mission) + ScaleformMovieMethodAddParamInt(position) -- Mission index 0 to 2 (-1 = no mission) EndScaleformMovieMethod() end end, SetMission = function(position, title, desc, textDict, x, y) if BikerGang.Clubhouse.MissionsWall.needToLoad then - if not HasNamedScaleformMovieLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then + if not HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then BikerGang.Clubhouse.MissionsWall.movieId = LoadScaleform("BIKER_MISSION_WALL") end if BikerGang.Clubhouse.MissionsWall.movieId ~= -1 then if position > -1 then BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "SET_MISSION") - PushScaleformMovieMethodParameterInt(position) -- Mission index 0 to 2 (-1 = no mission) - PushScaleformMovieMethodParameterString(title) - PushScaleformMovieMethodParameterString(desc) - PushScaleformMovieMethodParameterButtonName(textDict) - PushScaleformMovieMethodParameterFloat(x) -- Mission 0: world coordinates X - PushScaleformMovieMethodParameterFloat(y) -- Mission 0: world coordinates Y + ScaleformMovieMethodAddParamInt(position) -- Mission index 0 to 2 (-1 = no mission) + ScaleformMovieMethodAddParamTextureNameString(title) + ScaleformMovieMethodAddParamTextureNameString(desc) + ScaleformMovieMethodAddParamPlayerNameString(textDict) + ScaleformMovieMethodAddParamFloat(x) -- Mission 0: world coordinates X + ScaleformMovieMethodAddParamFloat(y) -- Mission 0: world coordinates Y EndScaleformMovieMethod() else -- Remove all missions @@ -389,7 +389,7 @@ BikerGang = { end, RemoveMission = function(position) BeginScaleformMovieMethod(BikerGang.Clubhouse.MissionsWall.movieId, "HIDE_MISSION") - PushScaleformMovieMethodParameterInt(position) + ScaleformMovieMethodAddParamInt(position) EndScaleformMovieMethod() end, Clear = function() @@ -402,7 +402,7 @@ BikerGang = { ReleaseNamedRendertarget(GetHashKey(BikerGang.Clubhouse.MissionsWall.prop)) end - if HasNamedScaleformMovieLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then + if HasScaleformMovieFilenameLoaded(BikerGang.Clubhouse.MissionsWall.movieId) then SetScaleformMovieAsNoLongerNeeded(BikerGang.Clubhouse.MissionsWall.movieId) end @@ -433,7 +433,7 @@ BikerGang = { } } -Citizen.CreateThread(function() +CreateThread(function() -- Removing the black texture BikerGang.Clubhouse.Members.President.Init() BikerGang.Clubhouse.Members.VicePresident.Init() @@ -492,14 +492,14 @@ Citizen.CreateThread(function() end end - Citizen.Wait(0) -- We need to call all this every frame + Wait(0) -- We need to call all this every frame else -- Not in a clubhouse - Citizen.Wait(1000) + Wait(1000) end else -- No load needed - Citizen.Wait(1000) + Wait(1000) end end end) @@ -549,7 +549,7 @@ function DrawEmblem(texturesDict, rotation) local IsTextureDictLoaded = LoadStreamedTextureDict(texturesDict) if not IsTextureDictLoaded then - Citizen.Trace("ERROR: DrawEmblem - Textures dictionnary cannot be loaded.") + print("ERROR: DrawEmblem - Textures dictionnary cannot be loaded.") end BikerGang.Clubhouse.Emblem.stage = 1 diff --git a/resources/[standalone]/bob74_ipl/dlc_cayoperico/base.lua b/resources/[standalone]/bob74_ipl/dlc_cayoperico/base.lua new file mode 100644 index 0000000..8ed230a --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_cayoperico/base.lua @@ -0,0 +1,3 @@ +CreateThread(function() + RequestIpl("h4_ch2_mansion_final") +end) \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_cayoperico/nightclub.lua b/resources/[standalone]/bob74_ipl/dlc_cayoperico/nightclub.lua new file mode 100644 index 0000000..a2c35d0 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_cayoperico/nightclub.lua @@ -0,0 +1,207 @@ +-- The Music Locker: 1550.0, 250.0, -50.0 +exports('GetCayoPericoNightclub', function() + return CayoPericoNightclub +end) + +CayoPericoNightclub = { + interiorId = 281089, + + Ipl = { + Posters = { + palmstraxx = "h4_clubposter_palmstraxx", + moodymann = "h4_clubposter_moodymann", + keinemusik = "h4_clubposter_keinemusik", + + Enable = function(poster, state) + EnableIpl(poster, state) + end + } + }, + + Security = { + security = "int01_ba_security_upgrade", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Security.security, state, refresh) + end + }, + + Speakers = { + basic = "int01_ba_equipment_setup", + upgrade = { + "int01_ba_equipment_setup", + "int01_ba_equipment_upgrade" + }, + + Set = function(speakers, refresh) + CayoPericoNightclub.Speakers.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, speakers, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Speakers.basic, + CayoPericoNightclub.Speakers.upgrade + }, false, refresh) + end + }, + + Podium = { + podium = "int01_ba_style02_podium", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Podium.podium, state, refresh) + end + }, + + Turntables = { + style01 = "int01_ba_dj01", + style02 = "int01_ba_dj02", + style03 = "int01_ba_dj03", + style04 = "int01_ba_dj04", + style05 = "int01_ba_dj_palms_trax", + style06 = "int01_ba_dj_keinemusik", + style07 = "int01_ba_dj_moodyman", + + Set = function(style, refresh) + CayoPericoNightclub.Turntables.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, style, true, refresh) + end, + Clear = function(refresh) + for key, value in pairs(CayoPericoNightclub.Turntables) do + if type(value) == "string" then + SetIplPropState(CayoPericoNightclub.interiorId, value, false, refresh) + end + end + end + }, + + Bar = { + bar = "int01_ba_bar_content", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, CayoPericoNightclub.Bar.bar, state, refresh) + end + }, + + Screen = { + front = "int01_ba_lights_screen", + back = "int01_ba_screen", + + Enable = function(screen, state, refresh) + SetIplPropState(CayoPericoNightclub.interiorId, screen, state, refresh) + end + }, + + Lights = { + Droplets = { + style01 = "dj_01_lights_01", + style02 = "dj_02_lights_01", + style03 = "dj_03_lights_01", + style04 = "dj_04_lights_01", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Droplets.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Droplets.style01, + CayoPericoNightclub.Lights.Droplets.style02, + CayoPericoNightclub.Lights.Droplets.style03, + CayoPericoNightclub.Lights.Droplets.style04 + }, false, refresh) + end + }, + + Neons = { + style01 = "dj_01_lights_02", + style02 = "dj_02_lights_02", + style03 = "dj_03_lights_02", + style04 = "dj_04_lights_02", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Neons.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Neons.style01, + CayoPericoNightclub.Lights.Neons.style02, + CayoPericoNightclub.Lights.Neons.style03, + CayoPericoNightclub.Lights.Neons.style04 + }, false, refresh) + end + }, + + Bands = { + style01 = "dj_01_lights_03", + style02 = "dj_02_lights_03", + style03 = "dj_03_lights_03", + style04 = "dj_04_lights_03", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Bands.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Bands.style01, + CayoPericoNightclub.Lights.Bands.style02, + CayoPericoNightclub.Lights.Bands.style03, + CayoPericoNightclub.Lights.Bands.style04 + }, false, refresh) + end + }, + + Lasers = { + style01 = "dj_01_lights_04", + style02 = "dj_02_lights_04", + style03 = "dj_03_lights_04", + style04 = "dj_04_lights_04", + + Set = function(lights, refresh) + CayoPericoNightclub.Lights.Lasers.Clear(false) + + SetIplPropState(CayoPericoNightclub.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoNightclub.interiorId, { + CayoPericoNightclub.Lights.Lasers.style01, + CayoPericoNightclub.Lights.Lasers.style02, + CayoPericoNightclub.Lights.Lasers.style03, + CayoPericoNightclub.Lights.Lasers.style04 + }, false, refresh) + end + }, + + Clear = function(refresh) + CayoPericoNightclub.Lights.Droplets.Clear(refresh) + CayoPericoNightclub.Lights.Neons.Clear(refresh) + CayoPericoNightclub.Lights.Bands.Clear(refresh) + CayoPericoNightclub.Lights.Lasers.Clear(refresh) + end + }, + + LoadDefault = function() + -- Interior + CayoPericoNightclub.Security.Enable(true, false) + CayoPericoNightclub.Speakers.Set(CayoPericoNightclub.Speakers.basic, false) + CayoPericoNightclub.Podium.Enable(true, false) + CayoPericoNightclub.Turntables.Set(CayoPericoNightclub.Turntables.style01, false) + CayoPericoNightclub.Bar.Enable(true, false) + CayoPericoNightclub.Screen.Enable(CayoPericoNightclub.Screen.front, true, false) + CayoPericoNightclub.Lights.Lasers.Set(CayoPericoNightclub.Lights.Lasers.style04, false) + + -- Exterior + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.palmstraxx, true) + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.moodymann, true) + CayoPericoNightclub.Ipl.Posters.Enable(CayoPericoNightclub.Ipl.Posters.keinemusik, true) + + RefreshInterior(CayoPericoNightclub.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_cayoperico/submarine.lua b/resources/[standalone]/bob74_ipl/dlc_cayoperico/submarine.lua new file mode 100644 index 0000000..1cac6c0 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_cayoperico/submarine.lua @@ -0,0 +1,71 @@ +-- Submarine: 1560.0, 400.0, -50.0 +exports('GetCayoPericoSubmarine', function() + return CayoPericoSubmarine +end) + +CayoPericoSubmarine = { + interiorId = 281345, + + Workshop = { + brig = "entity_set_brig", + workshop = "entity_set_weapons", + + Set = function(room, refresh) + CayoPericoSubmarine.Workshop.Clear(false) + + SetIplPropState(CayoPericoSubmarine.interiorId, room, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, { + CayoPericoSubmarine.Workshop.brig, + CayoPericoSubmarine.Workshop.workshop + }, false, refresh) + end + }, + + Chairs = { + chairs = "entity_set_guide", + + Enable = function(state, refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, CayoPericoSubmarine.Chairs.chairs, state, refresh) + end + }, + + Lights = { + on = "entity_set_hatch_lights_on", + off = "entity_set_hatch_lights_off", + + Set = function(lights, refresh) + CayoPericoSubmarine.Lights.Clear(false) + + SetIplPropState(CayoPericoSubmarine.interiorId, lights, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, { + CayoPericoSubmarine.Lights.on, + CayoPericoSubmarine.Lights.off + }, false, refresh) + end + }, + + Details = { + bomb = "entity_set_demolition", + torch = "entity_set_acetylene", + cutter = "entity_set_plasma", + fingerprint = "entity_set_fingerprint", + suppressors = "entity_set_suppressors", + jammer = "entity_set_jammer", + + Enable = function(details, state, refresh) + SetIplPropState(CayoPericoSubmarine.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + CayoPericoSubmarine.Workshop.Set(CayoPericoSubmarine.Workshop.brig, false) + CayoPericoSubmarine.Chairs.Enable(true, false) + CayoPericoSubmarine.Lights.Set(CayoPericoSubmarine.Lights.off, false) + + RefreshInterior(CayoPericoSubmarine.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_chopshop/base.lua b/resources/[standalone]/bob74_ipl/dlc_chopshop/base.lua new file mode 100644 index 0000000..005d1c3 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_chopshop/base.lua @@ -0,0 +1,7 @@ +CreateThread(function() + RequestIpl("m23_2_acp_collision_fixes_01") + RequestIpl("m23_2_acp_collision_fixes_02") + RequestIpl("m23_2_tug_collision") + RequestIpl("m23_2_hei_yacht_collision_fixes") + RequestIpl("m23_2_vinewood_garage") +end) diff --git a/resources/[standalone]/bob74_ipl/dlc_chopshop/cargoship.lua b/resources/[standalone]/bob74_ipl/dlc_chopshop/cargoship.lua new file mode 100644 index 0000000..b3050ee --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_chopshop/cargoship.lua @@ -0,0 +1,24 @@ +-- Cargo ship: -344.4349, -4062.832, 17.000 +exports('GetChopShopCargoShipObject', function() + return ChopShopCargoShip +end) + +ChopShopCargoShip = { + Ipl = { + ipl = { + "m23_2_cargoship", + "m23_2_cargoship_bridge" + }, + + Load = function() + EnableIpl(ChopShopCargoShip.Ipl.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopCargoShip.Ipl.ipl, false) + end + }, + + LoadDefault = function() + ChopShopCargoShip.Ipl.Load() + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_chopshop/cartel_garage.lua b/resources/[standalone]/bob74_ipl/dlc_chopshop/cartel_garage.lua new file mode 100644 index 0000000..7ec8fc6 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_chopshop/cartel_garage.lua @@ -0,0 +1,22 @@ +-- Cartel Garage: 1220.133, -2277.844, -50.000 +exports('GetChopShopCartelGarageObject', function() + return ChopShopCartelGarage +end) + +ChopShopCartelGarage = { + interiorId = 293633, + + Entities = { + entities = "mp2023_02_dlc_int_6_cb", + + Enable = function(state, refresh) + SetIplPropState(ChopShopCartelGarage.interiorId, ChopShopCartelGarage.Entities.entities, state, refresh) + end + }, + + LoadDefault = function() + ChopShopCartelGarage.Entities.Enable(true, false) + + RefreshInterior(ChopShopCartelGarage.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_chopshop/lifeguard.lua b/resources/[standalone]/bob74_ipl/dlc_chopshop/lifeguard.lua new file mode 100644 index 0000000..557eab1 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_chopshop/lifeguard.lua @@ -0,0 +1,21 @@ +-- Lifeguard: -1488.153, -1021.166, 5.000 +exports('GetChopShopLifeguardObject', function() + return ChopShopLifeguard +end) + +ChopShopLifeguard = { + Ipl = { + ipl = "m23_2_lifeguard_access", + + Load = function() + EnableIpl(ChopShopLifeguard.Ipl.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopLifeguard.Ipl.ipl, false) + end + }, + + LoadDefault = function() + ChopShopLifeguard.Ipl.Load() + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_chopshop/salvage.lua b/resources/[standalone]/bob74_ipl/dlc_chopshop/salvage.lua new file mode 100644 index 0000000..ce6c157 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_chopshop/salvage.lua @@ -0,0 +1,115 @@ +-- Salvage Yard: 1077.276, -2274.876, -50.000 +exports('GetChopShopSalvageObject', function() + return ChopShopSalvage +end) + +ChopShopSalvage = { + interiorId = 293377, + + Ipl = { + Exterior = { + ipl = { + "m23_2_sp1_03_reds", + "m23_2_sc1_03_reds", + "m23_2_id2_04_reds", + "m23_2_cs1_05_reds", + "m23_2_cs4_11_reds", + }, + + Load = function() + EnableIpl(ChopShopSalvage.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(ChopShopSalvage.Ipl.Exterior.ipl, false) + end + } + }, + + Style = { + basic = { + "set_mechanic_basic", + "set_safe_basic" + }, + upgrade = { + "set_mechanic_upgrade", + "set_safe_upgrade" + }, + + Set = function(style, refresh) + ChopShopSalvage.Style.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Style.basic, + ChopShopSalvage.Style.upgrade + }, false, refresh) + end + }, + + Lift1 = { + down = "set_car_lift_01_down", + up = "set_car_lift_01_up", + + Set = function(lift, refresh) + ChopShopSalvage.Lift1.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, lift, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Lift1.down, + ChopShopSalvage.Lift1.up + }, false, refresh) + end + }, + + Lift2 = { + down = "set_car_lift_02_down", + up = "set_car_lift_02_up", + + Set = function(lift, refresh) + ChopShopSalvage.Lift2.Clear(false) + + SetIplPropState(ChopShopSalvage.interiorId, lift, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(ChopShopSalvage.interiorId, { + ChopShopSalvage.Lift2.down, + ChopShopSalvage.Lift2.up + }, false, refresh) + end + }, + + Tint = { + gray = 1, + red = 2, + blue = 3, + orange = 4, + yellow = 5, + green = 6, + pink = 7, + teal = 8, + darkGray = 9, + + SetColor = function(color, refresh) + SetIplPropState(ChopShopSalvage.interiorId, "set_tint_b", true, refresh) + SetInteriorEntitySetColor(ChopShopSalvage.interiorId, "set_tint_b", color) + end + }, + + LoadDefault = function() + -- Exterior + ChopShopSalvage.Ipl.Exterior.Load() + + -- Interior + ChopShopSalvage.Tint.SetColor(ChopShopSalvage.Tint.gray, false) + ChopShopSalvage.Style.Set(ChopShopSalvage.Style.upgrade, false) + + ChopShopSalvage.Lift1.Set(ChopShopSalvage.Lift1.up, false) + ChopShopSalvage.Lift2.Set(ChopShopSalvage.Lift2.up, false) + + RefreshInterior(ChopShopSalvage.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_doomsday/facility.lua b/resources/[standalone]/bob74_ipl/dlc_doomsday/facility.lua index a9ef2ab..f5aec8f 100644 --- a/resources/[standalone]/bob74_ipl/dlc_doomsday/facility.lua +++ b/resources/[standalone]/bob74_ipl/dlc_doomsday/facility.lua @@ -57,7 +57,7 @@ DoomsdayFacility = { }, Walls = { SetColor = function(color, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, "set_int_02_shell", color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, "set_int_02_shell", color) if refresh then RefreshInterior(DoomsdayFacility.interiorId) @@ -104,7 +104,7 @@ DoomsdayFacility = { DoomsdayFacility.Lounge.Clear(false) SetIplPropState(DoomsdayFacility.interiorId, lounge, true, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, lounge, color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, lounge, color) end, Clear = function(refresh) SetIplPropState(DoomsdayFacility.interiorId, { @@ -124,7 +124,7 @@ DoomsdayFacility = { DoomsdayFacility.Sleeping.Clear(false) SetIplPropState(DoomsdayFacility.interiorId, sleep, true, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, sleep, color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, sleep, color) end, Clear = function(refresh) SetIplPropState(DoomsdayFacility.interiorId, { @@ -143,7 +143,7 @@ DoomsdayFacility = { DoomsdayFacility.Security.Clear(false) SetIplPropState(DoomsdayFacility.interiorId, security, true, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, security, color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, security, color) end, Clear = function(refresh) SetIplPropState(DoomsdayFacility.interiorId, { @@ -160,7 +160,7 @@ DoomsdayFacility = { DoomsdayFacility.Cannon.Clear(false) SetIplPropState(DoomsdayFacility.interiorId, cannon, true, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, cannon, color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, cannon, color) end, Clear = function(refresh) SetIplPropState(DoomsdayFacility.interiorId, { @@ -182,13 +182,13 @@ DoomsdayFacility = { RequestModel(model) while not HasModelLoaded(model) do - Citizen.Wait(0) + Wait(0) end local privacyGlass = CreateObject(model, 367.99, 4827.745, -59.0, false, false, false) SetEntityAsMissionEntity(privacyGlass, true, 0) - SetEntityCollision_2(privacyGlass, false, 0) + SetEntityCompletelyDisableCollision(privacyGlass, false, 0) SetEntityInvincible(privacyGlass, true) SetEntityAlpha(privacyGlass, 254, false) end @@ -211,7 +211,7 @@ DoomsdayFacility = { if handle == 0 then RequestModel(DoomsdayFacility.PrivacyGlass.controlModelHash) while not HasModelLoaded(DoomsdayFacility.PrivacyGlass.controlModelHash) do - Citizen.Wait(0) + Wait(0) end local privacyGlass = CreateObjectNoOffset(DoomsdayFacility.PrivacyGlass.controlModelHash, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.x, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.y, DoomsdayFacility.PrivacyGlass.Bedroom.Control.position.z, true, true, false) @@ -269,13 +269,13 @@ DoomsdayFacility = { if entityToAttach ~= 0 then RequestModel(glass.modelHash) while not HasModelLoaded(glass.modelHash) do - Citizen.Wait(0) + Wait(0) end local privacyGlass = CreateObject(glass.modelHash, glass.entityPos.x, glass.entityPos.y, glass.entityPos.z, false, false, false) SetEntityAsMissionEntity(privacyGlass, true, false) - SetEntityCollision_2(privacyGlass, false, 0) + SetEntityCompletelyDisableCollision(privacyGlass, false, 0) SetEntityInvincible(privacyGlass, true) SetEntityAlpha(privacyGlass, 254, false) AttachEntityToEntity(privacyGlass, entityToAttach, -1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 2, 1) @@ -301,7 +301,7 @@ DoomsdayFacility = { if handle == 0 then RequestModel(DoomsdayFacility.PrivacyGlass.controlModelHash) while not HasModelLoaded(DoomsdayFacility.PrivacyGlass.controlModelHash) do - Citizen.Wait(0) + Wait(0) end local privacyGlass = CreateObjectNoOffset(DoomsdayFacility.PrivacyGlass.controlModelHash, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.x, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.y, DoomsdayFacility.PrivacyGlass.Lounge.Control.position.z, true, true, false) @@ -366,7 +366,7 @@ DoomsdayFacility = { submarine = "set_int_02_trophy_sub", SetColor = function(color, refresh) - SetInteriorPropColor(DoomsdayFacility.interiorId, "set_int_02_trophy_sub", color) + SetInteriorEntitySetColor(DoomsdayFacility.interiorId, "set_int_02_trophy_sub", color) if refresh then RefreshInterior(DoomsdayFacility.interiorId) diff --git a/resources/[standalone]/bob74_ipl/dlc_drugwars/base.lua b/resources/[standalone]/bob74_ipl/dlc_drugwars/base.lua new file mode 100644 index 0000000..ed67d0d --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_drugwars/base.lua @@ -0,0 +1,5 @@ +CreateThread(function() + RequestIpl("xm3_collision_fixes") + RequestIpl("xm3_sum2_fix") + RequestIpl("xm3_security_fix") +end) diff --git a/resources/[standalone]/bob74_ipl/dlc_drugwars/freakshop.lua b/resources/[standalone]/bob74_ipl/dlc_drugwars/freakshop.lua new file mode 100644 index 0000000..7d95059 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_drugwars/freakshop.lua @@ -0,0 +1,51 @@ +-- Freakshop: 570.9713, -420.0727, -70.000 +exports('GetDrugWarsFreakshopObject', function() + return DrugWarsFreakshop +end) + +DrugWarsFreakshop = { + interiorId = 290817, + + Ipl = { + Exterior = { + ipl = { + "xm3_warehouse", + "xm3_warehouse_grnd" + }, + + Load = function() + EnableIpl(DrugWarsFreakshop.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(DrugWarsFreakshop.Ipl.Exterior.ipl, false) + end + } + }, + + Door = { + opened = "entity_set_roller_door_open", + closed = "entity_set_roller_door_closed", + + Set = function(door, refresh) + DrugWarsFreakshop.Door.Clear() + + SetIplPropState(DrugWarsFreakshop.interiorId, door, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(DrugWarsFreakshop.interiorId, { + DrugWarsFreakshop.Door.opened, + DrugWarsFreakshop.Door.closed + }, false, refresh) + end + }, + + LoadDefault = function() + -- Exterior + DrugWarsFreakshop.Ipl.Exterior.Load() + + -- Interior + DrugWarsFreakshop.Door.Set(DrugWarsFreakshop.Door.closed, false) + + RefreshInterior(DrugWarsFreakshop.interiorId) + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_drugwars/garage.lua b/resources/[standalone]/bob74_ipl/dlc_drugwars/garage.lua new file mode 100644 index 0000000..78879b6 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_drugwars/garage.lua @@ -0,0 +1,115 @@ +-- Eclipse Boulevard Garage: 519.2477, -2618.788, -50.000 +exports('GetDrugWarsGarageObject', function() + return DrugWarsGarage +end) + +DrugWarsGarage = { + interiorId = 290561, + + Ipl = { + Exterior = { + ipl = "xm3_garage_fix", + + Load = function() + EnableIpl(DrugWarsGarage.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(DrugWarsGarage.Ipl.Exterior.ipl, false) + end + } + }, + + Banner = { + model = `ss1_13_clth_ss1_13`, + position = vector3(-277.1116, 281.5493, 98.6691), + + Hide = function() + CreateModelHide(DrugWarsGarage.Banner.position, 10.0, DrugWarsGarage.Banner.model, true) + end, + Restore = function() + RemoveModelHide(DrugWarsGarage.Banner.position, 10.0, DrugWarsGarage.Banner.model, false) + end + }, + + Numbering = { + none = "", + level1 = "entity_set_numbers_01", + level2 = "entity_set_numbers_02", + level3 = "entity_set_numbers_03", + level4 = "entity_set_numbers_04", + level5 = "entity_set_numbers_05", + + Set = function(num, refresh) + DrugWarsGarage.Numbering.Clear(false) + + if num ~= "" then + SetIplPropState(DrugWarsGarage.interiorId, num, true, refresh) + else + if refresh then + RefreshInterior(DrugWarsGarage.interiorId) + end + end + end, + Clear = function(refresh) + SetIplPropState(DrugWarsGarage.interiorId, { + DrugWarsGarage.Numbering.level1, + DrugWarsGarage.Numbering.level2, + DrugWarsGarage.Numbering.level3, + DrugWarsGarage.Numbering.level4, + DrugWarsGarage.Numbering.level5 + }, false, refresh) + end + }, + + Style = { + immaculate = "entity_set_shell_01", + industrial = "entity_set_shell_02", + indulgent = "entity_set_shell_03", + + Set = function(style, refresh) + DrugWarsGarage.Style.Clear(false) + + SetIplPropState(DrugWarsGarage.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(DrugWarsGarage.interiorId, { + DrugWarsGarage.Style.immaculate, + DrugWarsGarage.Style.industrial, + DrugWarsGarage.Style.indulgent + }, false, refresh) + end + }, + + Tint = { + white = 1, + gray = 2, + black = 3, + purple = 4, + orange = 5, + yellow = 6, + blue = 7, + red = 8, + green = 9, + lightBlue = 10, + lightRed = 11, + lightGreen = 12, + + SetColor = function(color, refresh) + SetIplPropState(DrugWarsGarage.interiorId, "entity_set_tint_01", true, refresh) + SetInteriorEntitySetColor(DrugWarsGarage.interiorId, "entity_set_tint_01", color) + end + }, + + LoadDefault = function() + -- Exterior + DrugWarsGarage.Ipl.Exterior.Load() + DrugWarsGarage.Banner.Hide() + + -- Interior + DrugWarsGarage.Numbering.Set(DrugWarsGarage.Numbering.level1, false) + DrugWarsGarage.Style.Set(DrugWarsGarage.Style.immaculate, false) + DrugWarsGarage.Tint.SetColor(DrugWarsGarage.Tint.white, false) + + RefreshInterior(DrugWarsGarage.interiorId) + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_drugwars/lab.lua b/resources/[standalone]/bob74_ipl/dlc_drugwars/lab.lua new file mode 100644 index 0000000..953cdd2 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_drugwars/lab.lua @@ -0,0 +1,38 @@ +-- Acid Lab: 483.4252, -2625.071, -50.000 +exports('GetDrugWarsLabObject', function() + return DrugWarsLab +end) + +DrugWarsLab = { + interiorId = 290305, + + Details = { + products = { + "set_product_01", + "set_product_02", + "set_product_03", + "set_product_04", + "set_product_05" + }, + supplies = { + "set_supplies_01", + "set_supplies_02", + "set_supplies_03", + "set_supplies_04", + "set_supplies_05", + }, + equipment = "set_equipment_upgrade", + + Enable = function(details, state, refresh) + SetIplPropState(DrugWarsLab.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + DrugWarsLab.Details.Enable(DrugWarsLab.Details.products, true, false) + DrugWarsLab.Details.Enable(DrugWarsLab.Details.supplies, true, false) + DrugWarsLab.Details.Enable(DrugWarsLab.Details.equipment, true, false) + + RefreshInterior(DrugWarsLab.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_drugwars/traincrash.lua b/resources/[standalone]/bob74_ipl/dlc_drugwars/traincrash.lua new file mode 100644 index 0000000..e7b6f8f --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_drugwars/traincrash.lua @@ -0,0 +1,12 @@ +-- Train crash: 2630.595, 1458.144, 25.3669 +exports('GetDrugWarsTrainCrashObject', function() + return DrugWarsTrainCrash +end) + +DrugWarsTrainCrash = { + ipl = "xm3_train_crash", + + Enable = function(state) + EnableIpl(DrugWarsTrainCrash.ipl, state) + end +} diff --git a/resources/[standalone]/bob74_ipl/dlc_finance/office1.lua b/resources/[standalone]/bob74_ipl/dlc_finance/office1.lua index f1320a6..755df0e 100644 --- a/resources/[standalone]/bob74_ipl/dlc_finance/office1.lua +++ b/resources/[standalone]/bob74_ipl/dlc_finance/office1.lua @@ -116,8 +116,7 @@ FinanceOffice1 = { elseif doorSide:lower() == "right" then FinanceOffice1.Safe.isRightDoorOpen = true else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, Close = function(doorSide) @@ -126,8 +125,7 @@ FinanceOffice1 = { elseif doorSide:lower() == "right" then FinanceOffice1.Safe.isRightDoorOpen = false else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, @@ -152,7 +150,7 @@ FinanceOffice1 = { end if doorHandle == 0 then - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") return end @@ -165,7 +163,7 @@ FinanceOffice1 = { local doorHandle = GetClosestObjectOfType(FinanceOffice1.Safe.Position.x, FinanceOffice1.Safe.Position.y, FinanceOffice1.Safe.Position.z, 5.0, doorHash, false, false, false) while doorHandle == 0 do - Citizen.Wait(25) + Wait(25) doorHandle = GetClosestObjectOfType(FinanceOffice1.Safe.Position.x, FinanceOffice1.Safe.Position.y, FinanceOffice1.Safe.Position.z, 5.0, doorHash, false, false, false) timeout = timeout - 1 @@ -320,8 +318,7 @@ FinanceOffice1 = { }, LoadDefault = function() - FinanceOffice3.Booze.Set(FinanceOffice3.Booze.on, true) - FinanceOffice1.Style.Set(FinanceOffice1.Style.Theme.warm, true) + FinanceOffice1.Style.Set(FinanceOffice1.Style.Theme.polished) FinanceOffice1.Chairs.Set(FinanceOffice1.Chairs.on, true) end } diff --git a/resources/[standalone]/bob74_ipl/dlc_finance/office2.lua b/resources/[standalone]/bob74_ipl/dlc_finance/office2.lua index 75d2593..608a789 100644 --- a/resources/[standalone]/bob74_ipl/dlc_finance/office2.lua +++ b/resources/[standalone]/bob74_ipl/dlc_finance/office2.lua @@ -116,8 +116,7 @@ FinanceOffice2 = { elseif doorSide:lower() == "right" then FinanceOffice2.Safe.isRightDoorOpen = true else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, Close = function(doorSide) @@ -126,8 +125,7 @@ FinanceOffice2 = { elseif doorSide:lower() == "right" then FinanceOffice2.Safe.isRightDoorOpen = false else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, @@ -152,7 +150,7 @@ FinanceOffice2 = { end if doorHandle == 0 then - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") return end @@ -165,7 +163,7 @@ FinanceOffice2 = { local doorHandle = GetClosestObjectOfType(FinanceOffice2.Safe.Position.x, FinanceOffice2.Safe.Position.y, FinanceOffice2.Safe.Position.z, 5.0, doorHash, false, false, false) while doorHandle == 0 do - Citizen.Wait(25) + Wait(25) doorHandle = GetClosestObjectOfType(FinanceOffice2.Safe.Position.x, FinanceOffice2.Safe.Position.y, FinanceOffice2.Safe.Position.z, 5.0, doorHash, false, false, false) timeout = timeout - 1 diff --git a/resources/[standalone]/bob74_ipl/dlc_finance/office3.lua b/resources/[standalone]/bob74_ipl/dlc_finance/office3.lua index 20a8741..e209703 100644 --- a/resources/[standalone]/bob74_ipl/dlc_finance/office3.lua +++ b/resources/[standalone]/bob74_ipl/dlc_finance/office3.lua @@ -116,8 +116,7 @@ FinanceOffice3 = { elseif doorSide:lower() == "right" then FinanceOffice3.Safe.isRightDoorOpen = true else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, Close = function(doorSide) @@ -126,8 +125,7 @@ FinanceOffice3 = { elseif doorSide:lower() == "right" then FinanceOffice3.Safe.isRightDoorOpen = false else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, @@ -152,7 +150,7 @@ FinanceOffice3 = { end if doorHandle == 0 then - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") return end @@ -165,7 +163,7 @@ FinanceOffice3 = { local doorHandle = GetClosestObjectOfType(FinanceOffice3.Safe.Position.x, FinanceOffice3.Safe.Position.y, FinanceOffice3.Safe.Position.z, 5.0, doorHash, false, false, false) while doorHandle == 0 do - Citizen.Wait(25) + Wait(25) doorHandle = GetClosestObjectOfType(FinanceOffice3.Safe.Position.x, FinanceOffice3.Safe.Position.y, FinanceOffice3.Safe.Position.z, 5.0, doorHash, false, false, false) timeout = timeout - 1 diff --git a/resources/[standalone]/bob74_ipl/dlc_finance/office4.lua b/resources/[standalone]/bob74_ipl/dlc_finance/office4.lua index 32e2706..1c6fd8a 100644 --- a/resources/[standalone]/bob74_ipl/dlc_finance/office4.lua +++ b/resources/[standalone]/bob74_ipl/dlc_finance/office4.lua @@ -116,8 +116,7 @@ FinanceOffice4 = { elseif doorSide:lower() == "right" then FinanceOffice4.Safe.isRightDoorOpen = true else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, Close = function(doorSide) @@ -126,8 +125,7 @@ FinanceOffice4 = { elseif doorSide:lower() == "right" then FinanceOffice4.Safe.isRightDoorOpen = false else - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are:") - Citizen.Trace("left right") + print("[bob74_ipl] Warning: " .. doorSide .. " is not a correct value. Valid values are: left right") end end, @@ -152,7 +150,7 @@ FinanceOffice4 = { end if doorHandle == 0 then - Citizen.Trace("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") + print("[bob74_ipl] Warning: " .. doorSide .. " safe door handle is 0") return end @@ -165,7 +163,7 @@ FinanceOffice4 = { local doorHandle = GetClosestObjectOfType(FinanceOffice4.Safe.Position.x, FinanceOffice4.Safe.Position.y, FinanceOffice4.Safe.Position.z, 5.0, doorHash, false, false, false) while doorHandle == 0 do - Citizen.Wait(25) + Wait(25) doorHandle = GetClosestObjectOfType(FinanceOffice4.Safe.Position.x, FinanceOffice4.Safe.Position.y, FinanceOffice4.Safe.Position.z, 5.0, doorHash, false, false, false) timeout = timeout - 1 diff --git a/resources/[standalone]/bob74_ipl/dlc_finance/organization.lua b/resources/[standalone]/bob74_ipl/dlc_finance/organization.lua index a310e3d..d4928d1 100644 --- a/resources/[standalone]/bob74_ipl/dlc_finance/organization.lua +++ b/resources/[standalone]/bob74_ipl/dlc_finance/organization.lua @@ -73,7 +73,7 @@ FinanceOrganization = { ReleaseNamedRendertarget(GetHashKey(FinanceOrganization.Office.target)) end - if HasNamedScaleformMovieLoaded(FinanceOrganization.Office.movieId) then + if HasScaleformMovieFilenameLoaded(FinanceOrganization.Office.movieId) then SetScaleformMovieAsNoLongerNeeded(FinanceOrganization.Office.movieId) end @@ -84,7 +84,7 @@ FinanceOrganization = { } } -Citizen.CreateThread(function() +CreateThread(function() FinanceOrganization.Office.Init() while true do @@ -95,19 +95,19 @@ Citizen.CreateThread(function() FinanceOrganization.Office.loaded = true - Citizen.Wait(0) -- We need to call all this every frame + Wait(0) -- We need to call all this every frame else - Citizen.Wait(1000) -- We are not inside an office + Wait(1000) -- We are not inside an office end elseif FinanceOrganization.Office.loaded then -- Loaded and need to unload FinanceOrganization.Office.Clear() FinanceOrganization.Office.loaded = false - Citizen.Wait(1000) -- We can wait longer when we don't need to display text + Wait(1000) -- We can wait longer when we don't need to display text else -- Not needed to load - Citizen.Wait(1000) -- We can wait longer when we don't need to display text + Wait(1000) -- We can wait longer when we don't need to display text end end end) diff --git a/resources/[standalone]/bob74_ipl/dlc_gunrunning/yacht.lua b/resources/[standalone]/bob74_ipl/dlc_gunrunning/yacht.lua index c34ce5c..c45a028 100644 --- a/resources/[standalone]/bob74_ipl/dlc_gunrunning/yacht.lua +++ b/resources/[standalone]/bob74_ipl/dlc_gunrunning/yacht.lua @@ -34,7 +34,7 @@ GunrunningYacht = { if handle == 0 then RequestModel(GunrunningYacht.Water.modelHash) while not HasModelLoaded(GunrunningYacht.Water.modelHash) do - Citizen.Wait(0) + Wait(0) end local water = CreateObjectNoOffset(GunrunningYacht.Water.modelHash, -1369.0, 6736.0, 5.40, false, false, false) diff --git a/resources/[standalone]/bob74_ipl/dlc_heists/yacht.lua b/resources/[standalone]/bob74_ipl/dlc_heists/yacht.lua index 71af6cd..fc7f42c 100644 --- a/resources/[standalone]/bob74_ipl/dlc_heists/yacht.lua +++ b/resources/[standalone]/bob74_ipl/dlc_heists/yacht.lua @@ -34,7 +34,7 @@ HeistYacht = { if handle == 0 then RequestModel(HeistYacht.Water.modelHash) while not HasModelLoaded(HeistYacht.Water.modelHash) do - Citizen.Wait(0) + Wait(0) end local water = CreateObjectNoOffset(HeistYacht.Water.modelHash, -2023.773, -1038.0, 5.40, false, false, false) diff --git a/resources/[standalone]/bob74_ipl/dlc_mercenaries/club.lua b/resources/[standalone]/bob74_ipl/dlc_mercenaries/club.lua new file mode 100644 index 0000000..a4c3483 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_mercenaries/club.lua @@ -0,0 +1,44 @@ +-- Vinewood Car Club: 1202.407, -3251.251, -50.000 +exports('GetMercenariesClubObject', function() + return MercenariesClub +end) + +MercenariesClub = { + interiorId = 291841, + + Style = { + empty = "entity_set_no_plus", -- The lamps if the podium is not there + club = { + "entity_set_plus", + "entity_set_backdrop_frames", + "entity_set_signs" + }, + + Set = function(style, refresh) + MercenariesClub.Style.Clear(false) + + SetIplPropState(MercenariesClub.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(MercenariesClub.interiorId, { + MercenariesClub.Style.empty, + MercenariesClub.Style.club + }, false, refresh) + end + }, + + Stairs = { + stairs = "entity_set_stairs", + + Enable = function(state, refresh) + SetIplPropState(MercenariesClub.interiorId, MercenariesClub.Stairs.stairs, state, refresh) + end + }, + + LoadDefault = function() + MercenariesClub.Style.Set(MercenariesClub.Style.club, false) + MercenariesClub.Stairs.Enable(true, false) + + RefreshInterior(MercenariesClub.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_mercenaries/fixes.lua b/resources/[standalone]/bob74_ipl/dlc_mercenaries/fixes.lua new file mode 100644 index 0000000..90a8dfb --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_mercenaries/fixes.lua @@ -0,0 +1,16 @@ +-- Map fixes +exports('GetMercenariesFixesObject', function() + return MercenariesFixes +end) + +MercenariesFixes = { + ipl = "m23_1_legacy_fixes", + + Enable = function(state) + EnableIpl(MercenariesFixes.ipl, state) + end, + + LoadDefault = function() + MercenariesFixes.Enable(true) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_mercenaries/lab.lua b/resources/[standalone]/bob74_ipl/dlc_mercenaries/lab.lua new file mode 100644 index 0000000..aa483b5 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_mercenaries/lab.lua @@ -0,0 +1,28 @@ +-- Fort Zancudo Lab: -1916.119, 3749.719, -100.000 +exports('GetMercenariesLabObject', function() + return MercenariesLab +end) + +MercenariesLab = { + interiorId = 292097, + + Details = { + levers = "entity_set_levers", + crates = "entity_set_crates", + weapons = "entity_set_weapons", + lights = "entity_set_lift_lights", + + Enable = function(details, state, refresh) + SetIplPropState(MercenariesLab.interiorId, details, state, refresh) + end + }, + + LoadDefault = function() + MercenariesLab.Details.Enable(MercenariesLab.Details.levers, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.crates, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.weapons, true, false) + MercenariesLab.Details.Enable(MercenariesLab.Details.lights, true, false) + + RefreshInterior(MercenariesLab.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_smuggler/hangar.lua b/resources/[standalone]/bob74_ipl/dlc_smuggler/hangar.lua index 1880880..8dd37d2 100644 --- a/resources/[standalone]/bob74_ipl/dlc_smuggler/hangar.lua +++ b/resources/[standalone]/bob74_ipl/dlc_smuggler/hangar.lua @@ -34,7 +34,7 @@ SmugglerHangar = { SetColor = function(color, refresh) SetIplPropState(SmugglerHangar.interiorId, SmugglerHangar.Walls.default, true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, SmugglerHangar.Walls.default, color) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, SmugglerHangar.Walls.default, color) end, }, Floor = { @@ -73,7 +73,7 @@ SmugglerHangar = { SmugglerHangar.Floor.Decals.Clear(false) SetIplPropState(SmugglerHangar.interiorId, decal, true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, decal, color) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, decal, color) end, Clear = function(refresh) SetIplPropState(SmugglerHangar.interiorId, { @@ -99,7 +99,7 @@ SmugglerHangar = { if crane ~= "" then SetIplPropState(SmugglerHangar.interiorId, crane, true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, crane, color) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, crane, color) else if refresh then RefreshInterior(SmugglerHangar.interiorId) @@ -123,7 +123,7 @@ SmugglerHangar = { if mod ~= "" then SetIplPropState(SmugglerHangar.interiorId, mod, true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, mod, color) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, mod, color) else if refresh then RefreshInterior(SmugglerHangar.interiorId) @@ -173,7 +173,7 @@ SmugglerHangar = { if bed ~= "" then SetIplPropState(SmugglerHangar.interiorId, bed, true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, "set_bedroom_tint", color) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, "set_bedroom_tint", color) else if refresh then RefreshInterior(SmugglerHangar.interiorId) @@ -223,7 +223,7 @@ SmugglerHangar = { if light ~= "" then SetIplPropState(SmugglerHangar.interiorId, "set_lighting_tint_props", true, refresh) - SetInteriorPropColor(SmugglerHangar.interiorId, "set_lighting_tint_props", light) + SetInteriorEntitySetColor(SmugglerHangar.interiorId, "set_lighting_tint_props", light) else if refresh then RefreshInterior(SmugglerHangar.interiorId) diff --git a/resources/[standalone]/bob74_ipl/dlc_summer/base.lua b/resources/[standalone]/bob74_ipl/dlc_summer/base.lua new file mode 100644 index 0000000..b146580 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_summer/base.lua @@ -0,0 +1,4 @@ +CreateThread(function() + RequestIpl("m24_1_legacyfixes") + RequestIpl("m24_1_pizzasigns") +end) \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_summer/carrier.lua b/resources/[standalone]/bob74_ipl/dlc_summer/carrier.lua new file mode 100644 index 0000000..953ea87 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_summer/carrier.lua @@ -0,0 +1,25 @@ +-- Aircraft carrier: -3208.03, 3954.54, 14.0 +exports('GetSummerCarrierObject', function() + return SummerCarrier +end) + +SummerCarrier = { + ipl = { + "m24_1_carrier", + "m24_1_carrier_int1", + "m24_1_carrier_int2", + "m24_1_carrier_int3", + "m24_1_carrier_int4", + "m24_1_carrier_int5", + "m24_1_carrier_int6", + "m24_1_carrier_ladders" + }, + + Enable = function(state) + EnableIpl(SummerCarrier.ipl, state) + end, + + LoadDefault = function() + SummerCarrier.Enable(true) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_summer/office.lua b/resources/[standalone]/bob74_ipl/dlc_summer/office.lua new file mode 100644 index 0000000..d22ce8d --- /dev/null +++ b/resources/[standalone]/bob74_ipl/dlc_summer/office.lua @@ -0,0 +1,114 @@ +-- Bail office: 565.886, -2688.761, -50.0 +exports('GetSummerOfficeObject', function() + return SummerOffice +end) + +SummerOffice = { + interiorId = 295425, + + Ipl = { + Exterior = { + ipl = { + "m24_1_bailoffice_davis", + "m24_1_bailoffice_delperro", + "m24_1_bailoffice_missionrow", + "m24_1_bailoffice_paletobay", + "m24_1_bailoffice_vinewood" + }, + + Load = function() + EnableIpl(SummerOffice.Ipl.Exterior.ipl, true) + end, + Remove = function() + EnableIpl(SummerOffice.Ipl.Exterior.ipl, false) + end + } + }, + + Style = { + vintage = "set_style_01", + patterns = "set_style_02", + teak = "set_style_03", + + Set = function(style, refresh) + SummerOffice.Style.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Style.vintage, + SummerOffice.Style.patterns, + SummerOffice.Style.teak + }, false, refresh) + end + }, + + Desk = { + files = "set_no_staff", + computers = "set_staff_upgrade", + + Set = function(style, refresh) + SummerOffice.Desk.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Desk.files, + SummerOffice.Desk.computers + }, false, refresh) + end + }, + + Gunsafe = { + cabinet = "set_gunsafe_off", + gunsafe = "set_gunsafe_on", + + Set = function(style, refresh) + SummerOffice.Gunsafe.Clear(false) + + SetIplPropState(SummerOffice.interiorId, style, true, refresh) + end, + Clear = function(refresh) + SetIplPropState(SummerOffice.interiorId, { + SummerOffice.Gunsafe.cabinet, + SummerOffice.Gunsafe.gunsafe + }, false, refresh) + end + }, + + Trophy = { + plaque = "set_trophy_10x", + badge = "set_trophy_24x", + handcuffs = "set_trophy_100x", + + Enable = function(trophy, state, refresh) + SetIplPropState(SummerOffice.interiorId, trophy, state, refresh) + end + }, + + Plant = { + plant = "set_new_plant", + + Enable = function(state, refresh) + SetIplPropState(SummerOffice.interiorId, SummerOffice.Plant.plant, state, refresh) + end + }, + + LoadDefault = function() + SummerOffice.Ipl.Exterior.Load() + + SummerOffice.Style.Set(SummerOffice.Style.teak, false) + SummerOffice.Desk.Set(SummerOffice.Desk.files, false) + SummerOffice.Gunsafe.Set(SummerOffice.Gunsafe.cabinet, false) + + SummerOffice.Trophy.Enable(SummerOffice.Trophy.plaque, true, false) + SummerOffice.Trophy.Enable(SummerOffice.Trophy.badge, true, false) + SummerOffice.Trophy.Enable(SummerOffice.Trophy.handcuffs, true, false) + + SummerOffice.Plant.Enable(true, false) + + RefreshInterior(SummerOffice.interiorId) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/dlc_tuner/garage.lua b/resources/[standalone]/bob74_ipl/dlc_tuner/garage.lua index d7f38a4..125f0f8 100644 --- a/resources/[standalone]/bob74_ipl/dlc_tuner/garage.lua +++ b/resources/[standalone]/bob74_ipl/dlc_tuner/garage.lua @@ -6,7 +6,7 @@ TunerGarage = { InteriorId = 285953, Ipl = { - Interior = { + Exterior = { ipl = { 'tr_tuner_shop_burton', 'tr_tuner_shop_mesa', @@ -17,10 +17,10 @@ TunerGarage = { }, Load = function() - EnableIpl(TunerGarage.Ipl.Interior.ipl, true) + EnableIpl(TunerGarage.Ipl.Exterior.ipl, true) end, Remove = function() - EnableIpl(TunerGarage.Ipl.Interior.ipl, false) + EnableIpl(TunerGarage.Ipl.Exterior.ipl, false) end, }, Entities = { @@ -89,6 +89,6 @@ TunerGarage = { TunerGarage.Ipl.Load() TunerGarage.Entities.Load() - RefreshInterior(TunerGarage.interiorId) + RefreshInterior(TunerGarage.InteriorId) end } diff --git a/resources/[standalone]/bob74_ipl/dlc_tuner/meetup.lua b/resources/[standalone]/bob74_ipl/dlc_tuner/meetup.lua index 3048478..cb0ae19 100644 --- a/resources/[standalone]/bob74_ipl/dlc_tuner/meetup.lua +++ b/resources/[standalone]/bob74_ipl/dlc_tuner/meetup.lua @@ -1,3 +1,4 @@ +-- Los Santos Car Meet: -2000.0, 1113.211, -25.36243 exports('GetTunerMeetupObject', function() return TunerMeetup end) @@ -6,7 +7,7 @@ TunerMeetup = { InteriorId = 285697, Ipl = { - Interior = { + Exterior = { ipl = { 'tr_tuner_meetup', 'tr_tuner_race_line' @@ -14,20 +15,20 @@ TunerMeetup = { }, Load = function() - EnableIpl(TunerMeetup.Ipl.Interior.ipl, true) + EnableIpl(TunerMeetup.Ipl.Exterior.ipl, true) end, Remove = function() - EnableIpl(TunerMeetup.Ipl.Interior.ipl, false) + EnableIpl(TunerMeetup.Ipl.Exterior.ipl, false) end }, Entities = { entity_set_meet_crew = true, entity_set_meet_lights = true, - entity_set_meet_lights_cheap = true, + entity_set_meet_lights_cheap = false, entity_set_player = true, entity_set_test_crew = false, entity_set_test_lights = true, - entity_set_test_lights_cheap = true, + entity_set_test_lights_cheap = false, entity_set_time_trial = true, Set = function(name, state) @@ -59,6 +60,6 @@ TunerMeetup = { TunerMeetup.Ipl.Load() TunerMeetup.Entities.Load() - RefreshInterior(TunerMeetup.interiorId) + RefreshInterior(TunerMeetup.InteriorId) end } diff --git a/resources/[standalone]/bob74_ipl/dlc_tuner/methlab.lua b/resources/[standalone]/bob74_ipl/dlc_tuner/methlab.lua index cd8a06e..2e74e26 100644 --- a/resources/[standalone]/bob74_ipl/dlc_tuner/methlab.lua +++ b/resources/[standalone]/bob74_ipl/dlc_tuner/methlab.lua @@ -36,7 +36,7 @@ TunerMethLab = { LoadDefault = function() TunerMethLab.Entities.Load() - SetInteriorEntitySetColor(TunerMethLab.interiorId, TunerMethLab.Entities.tintable_walls, 3) - RefreshInterior(TunerMethLab.interiorId) + SetInteriorEntitySetColor(TunerMethLab.InteriorId, TunerMethLab.Entities.tintable_walls, 3) + RefreshInterior(TunerMethLab.InteriorId) end } diff --git a/resources/[standalone]/bob74_ipl/fxmanifest.lua b/resources/[standalone]/bob74_ipl/fxmanifest.lua index 8de45c6..95b8af1 100644 --- a/resources/[standalone]/bob74_ipl/fxmanifest.lua +++ b/resources/[standalone]/bob74_ipl/fxmanifest.lua @@ -1,13 +1,9 @@ --- Resources: --- ********** --- IPL list: https://wiki.rage.mp/index.php?title=Interiors_and_Locations - fx_version 'adamant' game 'gta5' author 'Bob_74' description 'Load and customize your map' -version '2.0.15' +version '2.4.0' lua54 "yes" @@ -15,12 +11,14 @@ client_scripts { "lib/common.lua" , "lib/observers/interiorIdObserver.lua" , "lib/observers/officeSafeDoorHandler.lua" + , "lib/observers/officeCullHandler.lua" , "client.lua" -- GTA V , "gtav/base.lua" -- Base IPLs to fix holes , "gtav/ammunations.lua" , "gtav/bahama.lua" + , "gtav/cargoship.lua" , "gtav/floyd.lua" , "gtav/franklin.lua" , "gtav/franklin_aunt.lua" @@ -108,6 +106,11 @@ client_scripts { , "dlc_casino/casino.lua" , "dlc_casino/penthouse.lua" + -- DLC Cayo Perico Heist (Requires forced build 2189 or higher) + , "dlc_cayoperico/base.lua" + , "dlc_cayoperico/nightclub.lua" + , "dlc_cayoperico/submarine.lua" + -- DLC Tuners (Requires forced build 2372 or higher) , "dlc_tuner/garage.lua" , "dlc_tuner/meetup.lua" @@ -127,4 +130,34 @@ client_scripts { , "gta_mpsum2/simeonfix.lua" , "gta_mpsum2/vehicle_warehouse.lua" , "gta_mpsum2/warehouse.lua" + + -- DLC Los Santos Drug Wars (Requires forced build 2802 or higher) + , "dlc_drugwars/base.lua" + , "dlc_drugwars/freakshop.lua" + , "dlc_drugwars/garage.lua" + , "dlc_drugwars/lab.lua" + , "dlc_drugwars/traincrash.lua" + + -- DLC San Andreas Mercenaries (Requires forced build 2944 or higher) + , "dlc_mercenaries/club.lua" + , "dlc_mercenaries/lab.lua" + , "dlc_mercenaries/fixes.lua" + + -- DLC The Chop Shop (Requires forced build 3095 or higher) + , "dlc_chopshop/base.lua" + , "dlc_chopshop/cargoship.lua" + , "dlc_chopshop/cartel_garage.lua" + , "dlc_chopshop/lifeguard.lua" + , "dlc_chopshop/salvage.lua" + + -- DLC Bottom Dollar Bounties (Requires forced build 3258 or higher) + , "dlc_summer/base.lua" + , "dlc_summer/carrier.lua" + , "dlc_summer/office.lua" + + -- DLC Agents of Sabotage (Requires forced build 3407 or higher) + , "dlc_agents/base.lua" + , "dlc_agents/factory.lua" + , "dlc_agents/office.lua" + , "dlc_agents/airstrip.lua" } diff --git a/resources/[standalone]/bob74_ipl/gtav/base.lua b/resources/[standalone]/bob74_ipl/gtav/base.lua index befd6d1..9982fd2 100644 --- a/resources/[standalone]/bob74_ipl/gtav/base.lua +++ b/resources/[standalone]/bob74_ipl/gtav/base.lua @@ -1,4 +1,4 @@ -Citizen.CreateThread(function() +CreateThread(function() -- Heist Jewel: -637.20159 -239.16250 38.1 RequestIpl("post_hiest_unload") @@ -106,4 +106,18 @@ Citizen.CreateThread(function() -- Ferris wheel RequestIpl("ferris_finale_anim") + + -- Train track: 2626.374, 2949.869, 39.1409 + RequestIpl("ld_rail_01_track") + RequestIpl("ld_rail_02_track") + + -- Docks cranes: 887.7344, -2922.285, 34.000 + RequestIpl("dockcrane1") + RequestIpl("pcranecont") + + -- Construction lift: -180.5771, -1016.9276, 28.2893 + RequestIpl("dt1_21_prop_lift_on") + + -- Davis Quartz train: 2773.6099, 2835.3274, 35.1903 + RequestIpl("cs5_4_trains") end) diff --git a/resources/[standalone]/bob74_ipl/gtav/cargoship.lua b/resources/[standalone]/bob74_ipl/gtav/cargoship.lua new file mode 100644 index 0000000..1a5b7e7 --- /dev/null +++ b/resources/[standalone]/bob74_ipl/gtav/cargoship.lua @@ -0,0 +1,33 @@ +-- Cargo ship: -168.1825, -2364.8259, 20.000 +exports('GetCargoShipObject', function() + return CargoShip +end) + +CargoShip = { + State = { + normal = { + "cargoship", + "ship_occ_grp1" + }, + sunk = { + "sunkcargoship", + "ship_occ_grp2" + }, + + Set = function(state) + CargoShip.State.Clear(false) + + EnableIpl(state, state) + end, + Clear = function(refresh) + EnableIpl({ + CargoShip.State.normal, + CargoShip.State.sunk + }, false) + end + }, + + LoadDefault = function() + CargoShip.State.Set(CargoShip.State.normal) + end +} \ No newline at end of file diff --git a/resources/[standalone]/bob74_ipl/gtav/north_yankton.lua b/resources/[standalone]/bob74_ipl/gtav/north_yankton.lua index 6def102..d1a9209 100644 --- a/resources/[standalone]/bob74_ipl/gtav/north_yankton.lua +++ b/resources/[standalone]/bob74_ipl/gtav/north_yankton.lua @@ -24,15 +24,51 @@ NorthYankton = { "prologue05b", "prologue06", "prologue06b", + "prologue_occl", "prologue06_int", "prologuerd", "prologuerdb", "prologue_DistantLights", "prologue_LODLights", - "prologue_m2_door" + "DES_ProTree_start", + "prologue_m2_door", + "prologue03_grv_cov" + }, + + Grave = { + covered = "prologue03_grv_cov", + dug = "prologue03_grv_dug", + funeral = "prologue03_grv_fun", + + Set = function(grave) + NorthYankton.Grave.Clear() + + EnableIpl(grave, true) + end, + Clear = function() + EnableIpl({ + NorthYankton.Grave.covered, + NorthYankton.Grave.dug, + NorthYankton.Grave.funeral + }, false) + end + }, + + Traffic = { + Enable = function(state) + SetAllPathsCacheBoundingstruct(state) + + SetRoadsInAngledArea(5526.24, -5137.23, 61.78925, 3679.327, -4973.879, 125.0828, 192, false, state, true); + SetRoadsInAngledArea(3691.211, -4941.24, 94.59368, 3511.115, -4869.191, 126.7621, 16, false, state, true); + SetRoadsInAngledArea(3510.004, -4865.81, 94.69557, 3204.424, -4833.817, 126.8152, 16, false, state, true); + SetRoadsInAngledArea(3186.534, -4832.798, 109.8148, 3202.187, -4833.993, 114.815, 16, false, state, true); + end }, Enable = function(state) + NorthYankton.Grave.Clear() + NorthYankton.Traffic.Enable(state) + EnableIpl(NorthYankton.ipl, state) end } diff --git a/resources/[standalone]/bob74_ipl/gtav/simeon.lua b/resources/[standalone]/bob74_ipl/gtav/simeon.lua index 738097e..0313573 100644 --- a/resources/[standalone]/bob74_ipl/gtav/simeon.lua +++ b/resources/[standalone]/bob74_ipl/gtav/simeon.lua @@ -66,7 +66,7 @@ Simeon = { LoadDefault = function() Simeon.Ipl.Interior.Load() Simeon.Style.Set(Simeon.Style.normal) - Simeon.Shutter.Set(Simeon.Shutter.open) + Simeon.Shutter.Set(Simeon.Shutter.opened) RefreshInterior(Simeon.interiorId) end diff --git a/resources/[standalone]/bob74_ipl/lib/common.lua b/resources/[standalone]/bob74_ipl/lib/common.lua index fefd907..4c57117 100644 --- a/resources/[standalone]/bob74_ipl/lib/common.lua +++ b/resources/[standalone]/bob74_ipl/lib/common.lua @@ -35,11 +35,17 @@ Global = { isInsideApartment5 = false, isInsideApartment6 = false }, + Security = { + isInsideOffice1 = false, + isInsideOffice2 = false, + isInsideOffice3 = false, + isInsideOffice4 = false + }, -- Set all interiors variables to false -- The loop inside 'interiorIdObserver' will set them to true ResetInteriorVariables = function() - for _, parentKey in pairs{"Biker", "FinanceOffices", "HighLife"} do + for _, parentKey in pairs{"Biker", "FinanceOffices", "HighLife", "Security"} do local t = Global[parentKey] for key in pairs(t) do @@ -97,12 +103,12 @@ function SetIplPropState(interiorId, props, state, refresh) end else if state then - if not IsInteriorPropEnabled(interiorId, props) then - EnableInteriorProp(interiorId, props) + if not IsInteriorEntitySetActive(interiorId, props) then + ActivateInteriorEntitySet(interiorId, props) end else - if IsInteriorPropEnabled(interiorId, props) then - DisableInteriorProp(interiorId, props) + if IsInteriorEntitySetActive(interiorId, props) then + DeactivateInteriorEntitySet(interiorId, props) end end end @@ -138,7 +144,7 @@ function DrawEmptyRect(name, model) local renderId = CreateNamedRenderTargetForModel(name, model) while not IsNamedRendertargetRegistered(name) do - Citizen.Wait(step) + Wait(step) currentTime = currentTime + step @@ -167,15 +173,15 @@ function SetupScaleform(movieId, scaleformFunction, parameters) local p = parameters["p" .. tostring(i)] if p.type == "bool" then - PushScaleformMovieMethodParameterBool(p.value) + ScaleformMovieMethodAddParamBool(p.value) elseif p.type == "int" then - PushScaleformMovieMethodParameterInt(p.value) + ScaleformMovieMethodAddParamInt(p.value) elseif p.type == "float" then - PushScaleformMovieMethodParameterFloat(p.value) + ScaleformMovieMethodAddParamFloat(p.value) elseif p.type == "string" then - PushScaleformMovieMethodParameterString(p.value) + ScaleformMovieMethodAddParamTextureNameString(p.value) elseif p.type == "buttonName" then - PushScaleformMovieMethodParameterButtonName(p.value) + ScaleformMovieMethodAddParamPlayerNameString(p.value) end end end @@ -189,9 +195,9 @@ function LoadStreamedTextureDict(texturesDict) local timeout = 5 * 1000 local currentTime = 0 - RequestStreamedTextureDict(texturesDict, 0) + RequestStreamedTextureDict(texturesDict, false) while not HasStreamedTextureDictLoaded(texturesDict) do - Citizen.Wait(step) + Wait(step) currentTime = currentTime + step @@ -210,7 +216,7 @@ function LoadScaleform(scaleform) local handle = RequestScaleformMovie(scaleform) while not HasScaleformMovieLoaded(handle) do - Citizen.Wait(step) + Wait(step) currentTime = currentTime + step @@ -229,7 +235,7 @@ function GetPedheadshot(ped) local pedheadshot = RegisterPedheadshot(ped) while not IsPedheadshotReady(pedheadshot) do - Citizen.Wait(step) + Wait(step) currentTime = currentTime + step @@ -251,10 +257,10 @@ function GetPedheadshotTexture(ped) local IsTextureDictLoaded = LoadStreamedTextureDict(textureDict) if not IsTextureDictLoaded then - Citizen.Trace("ERROR: GetPedheadshotTexture - Textures dictionnary \"" .. tostring(textureDict) .. "\" cannot be loaded.") + print("ERROR: GetPedheadshotTexture - Textures dictionnary \"" .. tostring(textureDict) .. "\" cannot be loaded.") end else - Citizen.Trace("ERROR: GetPedheadshotTexture - PedHeadShot not ready.") + print("ERROR: GetPedheadshotTexture - PedHeadShot not ready.") end return textureDict diff --git a/resources/[standalone]/bob74_ipl/lib/observers/interiorIdObserver.lua b/resources/[standalone]/bob74_ipl/lib/observers/interiorIdObserver.lua index d16d8c5..1d0335b 100644 --- a/resources/[standalone]/bob74_ipl/lib/observers/interiorIdObserver.lua +++ b/resources/[standalone]/bob74_ipl/lib/observers/interiorIdObserver.lua @@ -1,9 +1,8 @@ local _scanDelay = 500 -Citizen.CreateThread(function() +CreateThread(function() while true do - -- /!\ To do: Find a more reliable way to get the current interior ID - Global.currentInteriorId = GetInteriorAtCoords(GetEntityCoords(PlayerPedId())) + Global.currentInteriorId = GetInteriorFromEntity(PlayerPedId()) if Global.currentInteriorId == 0 then Global.ResetInteriorVariables() @@ -41,8 +40,14 @@ Citizen.CreateThread(function() Global.FinanceOffices.isInsideOffice2 = (Global.currentInteriorId == FinanceOffice2.currentInteriorId) Global.FinanceOffices.isInsideOffice3 = (Global.currentInteriorId == FinanceOffice3.currentInteriorId) Global.FinanceOffices.isInsideOffice4 = (Global.currentInteriorId == FinanceOffice4.currentInteriorId) + + -- DLC: The Contract + Global.Security.isInsideOffice1 = (Global.currentInteriorId == MpSecurityOffice1.InteriorId) + Global.Security.isInsideOffice2 = (Global.currentInteriorId == MpSecurityOffice2.InteriorId) + Global.Security.isInsideOffice3 = (Global.currentInteriorId == MpSecurityOffice3.InteriorId) + Global.Security.isInsideOffice4 = (Global.currentInteriorId == MpSecurityOffice4.InteriorId) end - Citizen.Wait(_scanDelay) + Wait(_scanDelay) end end) diff --git a/resources/[standalone]/bob74_ipl/lib/observers/officeCullHandler.lua b/resources/[standalone]/bob74_ipl/lib/observers/officeCullHandler.lua new file mode 100644 index 0000000..a2b7c0c --- /dev/null +++ b/resources/[standalone]/bob74_ipl/lib/observers/officeCullHandler.lua @@ -0,0 +1,35 @@ +CreateThread(function() + while true do + local sleep = 500 + + if Global.Security.isInsideOffice1 or Global.Security.isInsideOffice2 or Global.Security.isInsideOffice3 or Global.Security.isInsideOffice4 then + sleep = 0 + + if Global.Security.isInsideOffice1 then + EnableExteriorCullModelThisFrame(`bh1_05_build1`) + EnableExteriorCullModelThisFrame(`bh1_05_em`) + end + + if Global.Security.isInsideOffice2 then + EnableExteriorCullModelThisFrame(`hei_hw1_08_hotplaz01`) + EnableExteriorCullModelThisFrame(`hw1_08_hotplaz_rail`) + EnableExteriorCullModelThisFrame(`hw1_08_emissive_c`) + end + + if Global.Security.isInsideOffice3 then + EnableExteriorCullModelThisFrame(`hei_kt1_05_01`) + EnableExteriorCullModelThisFrame(`kt1_05_glue_b`) + EnableExteriorCullModelThisFrame(`kt1_05_kt_emissive_kt1_05`) + end + + if Global.Security.isInsideOffice4 then + EnableExteriorCullModelThisFrame(`hei_kt1_08_buildingtop_a`) + EnableExteriorCullModelThisFrame(`hei_kt1_08_kt1_emissive_ema`) + end + + DisableOcclusionThisFrame() + end + + Wait(sleep) + end +end) diff --git a/resources/[standalone]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua b/resources/[standalone]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua index a044284..64b645c 100644 --- a/resources/[standalone]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua +++ b/resources/[standalone]/bob74_ipl/lib/observers/officeSafeDoorHandler.lua @@ -1,7 +1,7 @@ -- Delay between each attempt to open/close the doors corresponding to their state local _scanDelay = 500 -Citizen.CreateThread(function() +CreateThread(function() while true do local office = 0 @@ -42,6 +42,6 @@ Citizen.CreateThread(function() end end - Citizen.Wait(_scanDelay) + Wait(_scanDelay) end end) diff --git a/resources/[standalone]/bob74_ipl/stream/bh1_14_0.ybn b/resources/[standalone]/bob74_ipl/stream/bh1_14_0.ybn new file mode 100644 index 0000000..fe5bd2f Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/bh1_14_0.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hei_ap1_03_4.ybn b/resources/[standalone]/bob74_ipl/stream/hei_ap1_03_4.ybn new file mode 100644 index 0000000..3fec0ff Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hei_ap1_03_4.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hei_bh1_20_0.ybn b/resources/[standalone]/bob74_ipl/stream/hei_bh1_20_0.ybn new file mode 100644 index 0000000..a350c12 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hei_bh1_20_0.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hei_ch3_08_17.ybn b/resources/[standalone]/bob74_ipl/stream/hei_ch3_08_17.ybn new file mode 100644 index 0000000..37e4571 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hei_ch3_08_17.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_16.ybn b/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_16.ybn new file mode 100644 index 0000000..2a572b3 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_16.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_17.ybn b/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_17.ybn new file mode 100644 index 0000000..21e3e3f Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hei_ch3_12_17.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/hi@bh1_33_0.ybn b/resources/[standalone]/bob74_ipl/stream/hi@bh1_33_0.ybn new file mode 100644 index 0000000..548d721 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/hi@bh1_33_0.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/id2_18_1.ybn b/resources/[standalone]/bob74_ipl/stream/id2_18_1.ybn new file mode 100644 index 0000000..780f52d Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/id2_18_1.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/lostmcgapfix.ymap b/resources/[standalone]/bob74_ipl/stream/lostmcgapfix.ymap new file mode 100644 index 0000000..88de0a8 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/lostmcgapfix.ymap differ diff --git a/resources/[standalone]/bob74_ipl/stream/lr_cs4_04_0.ybn b/resources/[standalone]/bob74_ipl/stream/lr_cs4_04_0.ybn new file mode 100644 index 0000000..81c1e8e Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/lr_cs4_04_0.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/lr_cs4_10_3.ybn b/resources/[standalone]/bob74_ipl/stream/lr_cs4_10_3.ybn new file mode 100644 index 0000000..a38ed0d Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/lr_cs4_10_3.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/m23_2_cargoship.ymap b/resources/[standalone]/bob74_ipl/stream/m23_2_cargoship.ymap new file mode 100644 index 0000000..35ed7f8 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/m23_2_cargoship.ymap differ diff --git a/resources/[standalone]/bob74_ipl/stream/m23_2_mp2023_02_dlc_int_5.ytyp b/resources/[standalone]/bob74_ipl/stream/m23_2_mp2023_02_dlc_int_5.ytyp new file mode 100644 index 0000000..fb4c7c0 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/m23_2_mp2023_02_dlc_int_5.ytyp differ diff --git a/resources/[standalone]/bob74_ipl/stream/m24_2_garment_factory_1.ybn b/resources/[standalone]/bob74_ipl/stream/m24_2_garment_factory_1.ybn new file mode 100644 index 0000000..b8b5a47 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/m24_2_garment_factory_1.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/po1_05_4.ybn b/resources/[standalone]/bob74_ipl/stream/po1_05_4.ybn new file mode 100644 index 0000000..c031030 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/po1_05_4.ybn differ diff --git a/resources/[standalone]/bob74_ipl/stream/v_24_lgb_mesh_sofa_old.ydr b/resources/[standalone]/bob74_ipl/stream/v_24_lgb_mesh_sofa_old.ydr new file mode 100644 index 0000000..8e30eab Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/v_24_lgb_mesh_sofa_old.ydr differ diff --git a/resources/[standalone]/bob74_ipl/stream/v_24_llga_mesh_coffeetable_old.ydr b/resources/[standalone]/bob74_ipl/stream/v_24_llga_mesh_coffeetable_old.ydr new file mode 100644 index 0000000..a462418 Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/v_24_llga_mesh_coffeetable_old.ydr differ diff --git a/resources/[standalone]/bob74_ipl/stream/v_int_24.ytyp b/resources/[standalone]/bob74_ipl/stream/v_int_24.ytyp new file mode 100644 index 0000000..0b7cc3b Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/v_int_24.ytyp differ diff --git a/resources/[standalone]/bob74_ipl/stream/vb_20_0.ybn b/resources/[standalone]/bob74_ipl/stream/vb_20_0.ybn new file mode 100644 index 0000000..23f4ffa Binary files /dev/null and b/resources/[standalone]/bob74_ipl/stream/vb_20_0.ybn differ diff --git a/resources/[standalone]/oxmysql/LICENSE b/resources/[standalone]/oxmysql/LICENSE index 0a04128..65c5ca8 100644 --- a/resources/[standalone]/oxmysql/LICENSE +++ b/resources/[standalone]/oxmysql/LICENSE @@ -1,7 +1,7 @@ GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/resources/[standalone]/oxmysql/README.md b/resources/[standalone]/oxmysql/README.md index 38e9019..c9ca245 100644 --- a/resources/[standalone]/oxmysql/README.md +++ b/resources/[standalone]/oxmysql/README.md @@ -7,13 +7,13 @@ A FiveM resource to communicate with a MySQL database using [node-mysql2](https: ![](https://img.shields.io/github/contributors/overextended/oxmysql?logo=github) ![](https://img.shields.io/github/v/release/overextended/oxmysql?logo=github) -## 📚 Documentation - -https://overextended.dev/oxmysql - -## 💾 Download - -https://github.com/overextended/oxmysql/releases/latest/download/oxmysql.zip +## 🔗 Links +- 💾 [Download](https://github.com/overextended/oxmysql/releases/latest/download/oxmysql.zip) + - Download the latest release directly. +- 📚 [Documentation](https://overextended.dev/oxmysql) + - For installation, setup, and everything else. +- 📦 [npm](https://www.npmjs.com/package/@overextended/oxmysql) + - Use our npm package for enhanced functionality and TypeScript support. ## ✨ Features @@ -24,9 +24,9 @@ https://github.com/overextended/oxmysql/releases/latest/download/oxmysql.zip - Support for URI connection strings and semicolon separated values. - Improved parameter checking and error handling. -## npm Package +## 🧾 Logging -https://www.npmjs.com/package/@overextended/oxmysql +We have included a module for submitting error logs to [Fivemanage](https://fivemanage.com/?ref=overextended), a cloud management service tailored for game servers. Additional logging options and support for other services will be available in the future. ## Lua Language Server diff --git a/resources/[standalone]/oxmysql/dist/build.js b/resources/[standalone]/oxmysql/dist/build.js index dbdc85c..323fa9d 100644 --- a/resources/[standalone]/oxmysql/dist/build.js +++ b/resources/[standalone]/oxmysql/dist/build.js @@ -5,7 +5,10 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); +var __typeError = (msg) => { + throw TypeError(msg); +}; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; @@ -33,39 +36,40 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); -var __publicField = (obj, key, value) => { - __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - return value; -}; -var __accessCheck = (obj, member, msg) => { - if (!member.has(obj)) - throw TypeError("Cannot " + msg); -}; -var __privateGet = (obj, member, getter) => { - __accessCheck(obj, member, "read from private field"); - return getter ? getter.call(obj) : member.get(obj); -}; -var __privateAdd = (obj, member, value) => { - if (member.has(obj)) - throw TypeError("Cannot add the same private member more than once"); - member instanceof WeakSet ? member.add(obj) : member.set(obj, value); -}; -var __privateSet = (obj, member, value, setter) => { - __accessCheck(obj, member, "write to private field"); - setter ? setter.call(obj, value) : member.set(obj, value); - return value; -}; -var __privateWrapper = (obj, member, setter, getter) => ({ - set _(value) { - __privateSet(obj, member, value, setter); - }, - get _() { - return __privateGet(obj, member, getter); +var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); +var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); +var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); +var __using = (stack, value, async) => { + if (value != null) { + if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected"); + var dispose; + if (async) dispose = value[__knownSymbol("asyncDispose")]; + if (dispose === void 0) dispose = value[__knownSymbol("dispose")]; + if (typeof dispose !== "function") __typeError("Object not disposable"); + stack.push([async, dispose, value]); + } else if (async) { + stack.push([async]); } -}); -var __privateMethod = (obj, member, method) => { - __accessCheck(obj, member, "access private method"); - return method; + return value; +}; +var __callDispose = (stack, error, hasError) => { + var E = typeof SuppressedError === "function" ? SuppressedError : function(e2, s2, m2, _) { + return _ = Error(m2), _.name = "SuppressedError", _.error = e2, _.suppressed = s2, _; + }; + var fail = (e2) => error = hasError ? new E(e2, error, "An error was suppressed during disposal") : (hasError = true, e2); + var next = (it) => { + while (it = stack.pop()) { + try { + var result = it[1] && it[1].call(it[2]); + if (it[0]) return Promise.resolve(result).then(next, (e2) => (fail(e2), next())); + } catch (e2) { + fail(e2); + } + } + if (hasError) throw error; + }; + return next(); }; // node_modules/.pnpm/lru-cache@7.18.3/node_modules/lru-cache/index.js @@ -522,8 +526,7 @@ var require_lru_cache = __commonJS({ for (const i2 of this.indexes()) { const v = this.valList[i2]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; + if (value === void 0) continue; if (fn(value, this.keyList[i2], this)) { return this.get(this.keyList[i2], getOptions); } @@ -533,8 +536,7 @@ var require_lru_cache = __commonJS({ for (const i2 of this.indexes()) { const v = this.valList[i2]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; + if (value === void 0) continue; fn.call(thisp, value, this.keyList[i2], this); } } @@ -542,8 +544,7 @@ var require_lru_cache = __commonJS({ for (const i2 of this.rindexes()) { const v = this.valList[i2]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; + if (value === void 0) continue; fn.call(thisp, value, this.keyList[i2], this); } } @@ -567,8 +568,7 @@ var require_lru_cache = __commonJS({ const key = this.keyList[i2]; const v = this.valList[i2]; const value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; + if (value === void 0) continue; const entry = { value }; if (this.ttls) { entry.ttl = this.ttls[i2]; @@ -647,8 +647,7 @@ var require_lru_cache = __commonJS({ if (status) { status.set = "replace"; const oldValue = oldVal && this.isBackgroundFetch(oldVal) ? oldVal.__staleWhileFetching : oldVal; - if (oldValue !== void 0) - status.oldValue = oldValue; + if (oldValue !== void 0) status.oldValue = oldValue; } } else if (status) { status.set = "update"; @@ -717,8 +716,7 @@ var require_lru_cache = __commonJS({ if (updateAgeOnHas) { this.updateItemAge(index); } - if (status) - status.has = "hit"; + if (status) status.has = "hit"; this.statusTTL(status, index); return true; } else if (status) { @@ -762,8 +760,7 @@ var require_lru_cache = __commonJS({ if (aborted && !updateCache) { options.status.fetchAborted = true; options.status.fetchError = ac.signal.reason; - if (ignoreAbort) - options.status.fetchAbortIgnored = true; + if (ignoreAbort) options.status.fetchAbortIgnored = true; } else { options.status.fetchResolved = true; } @@ -779,8 +776,7 @@ var require_lru_cache = __commonJS({ this.delete(k); } } else { - if (options.status) - options.status.fetchUpdated = true; + if (options.status) options.status.fetchUpdated = true; this.set(k, v2, fetchOpts.options); } } @@ -826,8 +822,7 @@ var require_lru_cache = __commonJS({ } }); }, "pcall"); - if (options.status) - options.status.fetchDispatched = true; + if (options.status) options.status.fetchDispatched = true; const p = new Promise(pcall).then(cb, eb); p.__abortController = ac; p.__staleWhileFetching = v; @@ -869,8 +864,7 @@ var require_lru_cache = __commonJS({ signal } = {}) { if (!this.fetchMethod) { - if (status) - status.fetch = "get"; + if (status) status.fetch = "get"; return this.get(k, { allowStale, updateAgeOnGet, @@ -896,8 +890,7 @@ var require_lru_cache = __commonJS({ }; let index = this.keyMap.get(k); if (index === void 0) { - if (status) - status.fetch = "miss"; + if (status) status.fetch = "miss"; const p = this.backgroundFetch(k, index, options, fetchContext); return p.__returned = p; } else { @@ -906,15 +899,13 @@ var require_lru_cache = __commonJS({ const stale = allowStale && v.__staleWhileFetching !== void 0; if (status) { status.fetch = "inflight"; - if (stale) - status.returnedStale = true; + if (stale) status.returnedStale = true; } return stale ? v.__staleWhileFetching : v.__returned = v; } const isStale = this.isStale(index); if (!forceRefresh && !isStale) { - if (status) - status.fetch = "hit"; + if (status) status.fetch = "hit"; this.moveToTail(index); if (updateAgeOnGet) { this.updateItemAge(index); @@ -927,8 +918,7 @@ var require_lru_cache = __commonJS({ const staleVal = hasStale && allowStale; if (status) { status.fetch = hasStale && isStale ? "stale" : "refresh"; - if (staleVal && isStale) - status.returnedStale = true; + if (staleVal && isStale) status.returnedStale = true; } return staleVal ? p.__staleWhileFetching : p.__returned = p; } @@ -945,14 +935,12 @@ var require_lru_cache = __commonJS({ const fetching = this.isBackgroundFetch(value); this.statusTTL(status, index); if (this.isStale(index)) { - if (status) - status.get = "stale"; + if (status) status.get = "stale"; if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k); } - if (status) - status.returnedStale = allowStale; + if (status) status.returnedStale = allowStale; return allowStale ? value : void 0; } else { if (status) { @@ -961,8 +949,7 @@ var require_lru_cache = __commonJS({ return allowStale ? value.__staleWhileFetching : void 0; } } else { - if (status) - status.get = "hit"; + if (status) status.get = "hit"; if (fetching) { return value.__staleWhileFetching; } @@ -1502,10 +1489,8 @@ var require_denque = __commonJS({ return void 0; } var len = this.size(); - if (i2 >= len || i2 < -len) - return void 0; - if (i2 < 0) - i2 += len; + if (i2 >= len || i2 < -len) return void 0; + if (i2 < 0) i2 += len; i2 = this._head + i2 & this._capacityMask; return this._list[i2]; }, "peekAt"); @@ -1513,8 +1498,7 @@ var require_denque = __commonJS({ return this.peekAt(i2); }, "get"); Denque.prototype.peek = /* @__PURE__ */ __name(function peek() { - if (this._head === this._tail) - return void 0; + if (this._head === this._tail) return void 0; return this._list[this._head]; }, "peek"); Denque.prototype.peekFront = /* @__PURE__ */ __name(function peekFront() { @@ -1529,42 +1513,31 @@ var require_denque = __commonJS({ }, "length") }); Denque.prototype.size = /* @__PURE__ */ __name(function size() { - if (this._head === this._tail) - return 0; - if (this._head < this._tail) - return this._tail - this._head; - else - return this._capacityMask + 1 - (this._head - this._tail); + if (this._head === this._tail) return 0; + if (this._head < this._tail) return this._tail - this._head; + else return this._capacityMask + 1 - (this._head - this._tail); }, "size"); Denque.prototype.unshift = /* @__PURE__ */ __name(function unshift(item) { - if (arguments.length === 0) - return this.size(); + if (arguments.length === 0) return this.size(); var len = this._list.length; this._head = this._head - 1 + len & this._capacityMask; this._list[this._head] = item; - if (this._tail === this._head) - this._growArray(); - if (this._capacity && this.size() > this._capacity) - this.pop(); - if (this._head < this._tail) - return this._tail - this._head; - else - return this._capacityMask + 1 - (this._head - this._tail); + if (this._tail === this._head) this._growArray(); + if (this._capacity && this.size() > this._capacity) this.pop(); + if (this._head < this._tail) return this._tail - this._head; + else return this._capacityMask + 1 - (this._head - this._tail); }, "unshift"); Denque.prototype.shift = /* @__PURE__ */ __name(function shift() { var head = this._head; - if (head === this._tail) - return void 0; + if (head === this._tail) return void 0; var item = this._list[head]; this._list[head] = void 0; this._head = head + 1 & this._capacityMask; - if (head < 2 && this._tail > 1e4 && this._tail <= this._list.length >>> 2) - this._shrinkArray(); + if (head < 2 && this._tail > 1e4 && this._tail <= this._list.length >>> 2) this._shrinkArray(); return item; }, "shift"); Denque.prototype.push = /* @__PURE__ */ __name(function push(item) { - if (arguments.length === 0) - return this.size(); + if (arguments.length === 0) return this.size(); var tail = this._tail; this._list[tail] = item; this._tail = tail + 1 & this._capacityMask; @@ -1574,21 +1547,17 @@ var require_denque = __commonJS({ if (this._capacity && this.size() > this._capacity) { this.shift(); } - if (this._head < this._tail) - return this._tail - this._head; - else - return this._capacityMask + 1 - (this._head - this._tail); + if (this._head < this._tail) return this._tail - this._head; + else return this._capacityMask + 1 - (this._head - this._tail); }, "push"); Denque.prototype.pop = /* @__PURE__ */ __name(function pop() { var tail = this._tail; - if (tail === this._head) - return void 0; + if (tail === this._head) return void 0; var len = this._list.length; this._tail = tail - 1 + len & this._capacityMask; var item = this._list[this._tail]; this._list[this._tail] = void 0; - if (this._head < 2 && tail > 1e4 && tail <= len >>> 2) - this._shrinkArray(); + if (this._head < 2 && tail > 1e4 && tail <= len >>> 2) this._shrinkArray(); return item; }, "pop"); Denque.prototype.removeOne = /* @__PURE__ */ __name(function removeOne(index) { @@ -1596,14 +1565,11 @@ var require_denque = __commonJS({ if (i2 !== (i2 | 0)) { return void 0; } - if (this._head === this._tail) - return void 0; + if (this._head === this._tail) return void 0; var size = this.size(); var len = this._list.length; - if (i2 >= size || i2 < -size) - return void 0; - if (i2 < 0) - i2 += size; + if (i2 >= size || i2 < -size) return void 0; + if (i2 < 0) i2 += size; i2 = this._head + i2 & this._capacityMask; var item = this._list[i2]; var k; @@ -1629,14 +1595,11 @@ var require_denque = __commonJS({ if (i2 !== (i2 | 0)) { return void 0; } - if (this._head === this._tail) - return void 0; + if (this._head === this._tail) return void 0; var size = this.size(); var len = this._list.length; - if (i2 >= size || i2 < -size || count < 1) - return void 0; - if (i2 < 0) - i2 += size; + if (i2 >= size || i2 < -size || count < 1) return void 0; + if (i2 < 0) i2 += size; if (count === 1 || !count) { removed = new Array(1); removed[0] = this.removeOne(i2); @@ -1647,8 +1610,7 @@ var require_denque = __commonJS({ this.clear(); return removed; } - if (i2 + count > size) - count = size - i2; + if (i2 + count > size) count = size - i2; var k; removed = new Array(count); for (k = 0; k < count; k++) { @@ -1679,8 +1641,7 @@ var require_denque = __commonJS({ this._list[i2 = i2 - 1 + len & this._capacityMask] = void 0; del_count--; } - if (index < 0) - this._tail = i2; + if (index < 0) this._tail = i2; } else { this._tail = i2; i2 = i2 + count + len & this._capacityMask; @@ -1693,8 +1654,7 @@ var require_denque = __commonJS({ del_count--; } } - if (this._head < 2 && this._tail > 1e4 && this._tail <= len >>> 2) - this._shrinkArray(); + if (this._head < 2 && this._tail > 1e4 && this._tail <= len >>> 2) this._shrinkArray(); return removed; }, "remove"); Denque.prototype.splice = /* @__PURE__ */ __name(function splice(index, count) { @@ -1703,10 +1663,8 @@ var require_denque = __commonJS({ return void 0; } var size = this.size(); - if (i2 < 0) - i2 += size; - if (i2 > size) - return void 0; + if (i2 < 0) i2 += size; + if (i2 > size) return void 0; if (arguments.length > 2) { var k; var temp; @@ -1778,8 +1736,7 @@ var require_denque = __commonJS({ this._list = new Array(capacity); this._capacityMask = capacity - 1; this._tail = length; - for (var i2 = 0; i2 < length; i2++) - this._list[i2] = array[i2]; + for (var i2 = 0; i2 < length; i2++) this._list[i2] = array[i2]; }, "_fromArray"); Denque.prototype._copyArray = /* @__PURE__ */ __name(function _copyArray(fullCopy, size) { var src = this._list; @@ -1793,13 +1750,10 @@ var require_denque = __commonJS({ var k = 0; var i2; if (fullCopy || this._head > this._tail) { - for (i2 = this._head; i2 < capacity; i2++) - dest[k++] = src[i2]; - for (i2 = 0; i2 < this._tail; i2++) - dest[k++] = src[i2]; + for (i2 = this._head; i2 < capacity; i2++) dest[k++] = src[i2]; + for (i2 = 0; i2 < this._tail; i2++) dest[k++] = src[i2]; } else { - for (i2 = this._head; i2 < this._tail; i2++) - dest[k++] = src[i2]; + for (i2 = this._head; i2 < this._tail; i2++) dest[k++] = src[i2]; } return dest; }, "_copyArray"); @@ -1828,1287 +1782,241 @@ var require_denque = __commonJS({ } }); -// node_modules/.pnpm/lru-cache@8.0.5/node_modules/lru-cache/dist/cjs/index.js -var require_cjs = __commonJS({ - "node_modules/.pnpm/lru-cache@8.0.5/node_modules/lru-cache/dist/cjs/index.js"(exports2) { +// node_modules/.pnpm/lru.min@1.1.1/node_modules/lru.min/lib/index.js +var require_lib = __commonJS({ + "node_modules/.pnpm/lru.min@1.1.1/node_modules/lru.min/lib/index.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.LRUCache = void 0; - var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date; - var warned = /* @__PURE__ */ new Set(); - var emitWarning = /* @__PURE__ */ __name((msg, type, code, fn) => { - typeof process === "object" && process && typeof process.emitWarning === "function" ? process.emitWarning(msg, type, code, fn) : console.error(`[${code}] ${type}: ${msg}`); - }, "emitWarning"); - var shouldWarn = /* @__PURE__ */ __name((code) => !warned.has(code), "shouldWarn"); - var TYPE = Symbol("type"); - var isPosInt = /* @__PURE__ */ __name((n) => n && n === Math.floor(n) && n > 0 && isFinite(n), "isPosInt"); - var getUintArray = /* @__PURE__ */ __name((max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null, "getUintArray"); - var _ZeroArray = class _ZeroArray extends Array { - constructor(size) { - super(size); - this.fill(0); - } - }; - __name(_ZeroArray, "ZeroArray"); - var ZeroArray = _ZeroArray; - var _constructing; - var _Stack = class _Stack { - heap; - length; - static create(max) { - const HeapCls = getUintArray(max); - if (!HeapCls) - return []; - __privateSet(_Stack, _constructing, true); - const s2 = new _Stack(max, HeapCls); - __privateSet(_Stack, _constructing, false); - return s2; - } - constructor(max, HeapCls) { - if (!__privateGet(_Stack, _constructing)) { - throw new TypeError("instantiate Stack using Stack.create(n)"); - } - this.heap = new HeapCls(max); - this.length = 0; - } - push(n) { - this.heap[this.length++] = n; - } - pop() { - return this.heap[--this.length]; - } - }; - _constructing = new WeakMap(); - __name(_Stack, "Stack"); - // private constructor - __privateAdd(_Stack, _constructing, false); - var Stack = _Stack; - var _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _size2, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _initializeTTLTracking, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, _initializeSizeTracking, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, _indexes, indexes_fn, _rindexes, rindexes_fn, _isValidIndex, isValidIndex_fn, _evict, evict_fn, _backgroundFetch, backgroundFetch_fn, _isBackgroundFetch, isBackgroundFetch_fn, _connect, connect_fn, _moveToTail, moveToTail_fn; - var _LRUCache = class _LRUCache { - constructor(options) { - __privateAdd(this, _initializeTTLTracking); - __privateAdd(this, _initializeSizeTracking); - __privateAdd(this, _indexes); - __privateAdd(this, _rindexes); - __privateAdd(this, _isValidIndex); - __privateAdd(this, _evict); - __privateAdd(this, _backgroundFetch); - __privateAdd(this, _isBackgroundFetch); - __privateAdd(this, _connect); - __privateAdd(this, _moveToTail); - // properties coming in from the options of these, only max and maxSize - // really *need* to be protected. The rest can be modified, as they just - // set defaults for various methods. - __privateAdd(this, _max, void 0); - __privateAdd(this, _maxSize, void 0); - __privateAdd(this, _dispose, void 0); - __privateAdd(this, _disposeAfter, void 0); - __privateAdd(this, _fetchMethod, void 0); - /** - * {@link LRUCache.OptionsBase.ttl} - */ - __publicField(this, "ttl"); - /** - * {@link LRUCache.OptionsBase.ttlResolution} - */ - __publicField(this, "ttlResolution"); - /** - * {@link LRUCache.OptionsBase.ttlAutopurge} - */ - __publicField(this, "ttlAutopurge"); - /** - * {@link LRUCache.OptionsBase.updateAgeOnGet} - */ - __publicField(this, "updateAgeOnGet"); - /** - * {@link LRUCache.OptionsBase.updateAgeOnHas} - */ - __publicField(this, "updateAgeOnHas"); - /** - * {@link LRUCache.OptionsBase.allowStale} - */ - __publicField(this, "allowStale"); - /** - * {@link LRUCache.OptionsBase.noDisposeOnSet} - */ - __publicField(this, "noDisposeOnSet"); - /** - * {@link LRUCache.OptionsBase.noUpdateTTL} - */ - __publicField(this, "noUpdateTTL"); - /** - * {@link LRUCache.OptionsBase.maxEntrySize} - */ - __publicField(this, "maxEntrySize"); - /** - * {@link LRUCache.OptionsBase.sizeCalculation} - */ - __publicField(this, "sizeCalculation"); - /** - * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} - */ - __publicField(this, "noDeleteOnFetchRejection"); - /** - * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} - */ - __publicField(this, "noDeleteOnStaleGet"); - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} - */ - __publicField(this, "allowStaleOnFetchAbort"); - /** - * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} - */ - __publicField(this, "allowStaleOnFetchRejection"); - /** - * {@link LRUCache.OptionsBase.ignoreFetchAbort} - */ - __publicField(this, "ignoreFetchAbort"); - // computed properties - __privateAdd(this, _size2, void 0); - __privateAdd(this, _calculatedSize, void 0); - __privateAdd(this, _keyMap, void 0); - __privateAdd(this, _keyList, void 0); - __privateAdd(this, _valList, void 0); - __privateAdd(this, _next, void 0); - __privateAdd(this, _prev, void 0); - __privateAdd(this, _head, void 0); - __privateAdd(this, _tail, void 0); - __privateAdd(this, _free, void 0); - __privateAdd(this, _disposed, void 0); - __privateAdd(this, _sizes, void 0); - __privateAdd(this, _starts, void 0); - __privateAdd(this, _ttls, void 0); - __privateAdd(this, _hasDispose, void 0); - __privateAdd(this, _hasFetchMethod, void 0); - __privateAdd(this, _hasDisposeAfter, void 0); - // conditionally set private methods related to TTL - __privateAdd(this, _updateItemAge, /* @__PURE__ */ __name(() => { - }, "#updateItemAge")); - __privateAdd(this, _statusTTL, /* @__PURE__ */ __name(() => { - }, "#statusTTL")); - __privateAdd(this, _setItemTTL, /* @__PURE__ */ __name(() => { - }, "#setItemTTL")); - /* c8 ignore stop */ - __privateAdd(this, _isStale, /* @__PURE__ */ __name(() => false, "#isStale")); - __privateAdd(this, _removeItemSize, /* @__PURE__ */ __name((_i) => { - }, "#removeItemSize")); - __privateAdd(this, _addItemSize, /* @__PURE__ */ __name((_i, _s, _st) => { - }, "#addItemSize")); - __privateAdd(this, _requireSize, /* @__PURE__ */ __name((_k, _v, size, sizeCalculation) => { - if (size || sizeCalculation) { - throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache"); + exports2.createLRU = void 0; + var createLRU = /* @__PURE__ */ __name((options) => { + let { max, onEviction } = options; + if (!(Number.isInteger(max) && max > 0)) + throw new TypeError("`max` must be a positive integer"); + let size = 0; + let head = 0; + let tail = 0; + let free = []; + const keyMap = /* @__PURE__ */ new Map(); + const keyList = new Array(max).fill(void 0); + const valList = new Array(max).fill(void 0); + const next = new Array(max).fill(0); + const prev = new Array(max).fill(0); + const setTail = /* @__PURE__ */ __name((index, type) => { + if (index === tail) + return; + const nextIndex = next[index]; + const prevIndex = prev[index]; + if (index === head) + head = nextIndex; + else if (type === "get" || prevIndex !== 0) + next[prevIndex] = nextIndex; + if (nextIndex !== 0) + prev[nextIndex] = prevIndex; + next[tail] = index; + prev[index] = tail; + next[index] = 0; + tail = index; + }, "setTail"); + const _evict = /* @__PURE__ */ __name(() => { + const evictHead = head; + const key = keyList[evictHead]; + onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[evictHead]); + keyMap.delete(key); + keyList[evictHead] = void 0; + valList[evictHead] = void 0; + head = next[evictHead]; + if (head !== 0) + prev[head] = 0; + size--; + if (size === 0) + head = tail = 0; + free.push(evictHead); + return evictHead; + }, "_evict"); + return { + /** Adds a key-value pair to the cache. Updates the value if the key already exists. */ + set(key, value) { + if (key === void 0) + return; + let index = keyMap.get(key); + if (index === void 0) { + index = size === max ? _evict() : free.length > 0 ? free.pop() : size; + keyMap.set(key, index); + keyList[index] = key; + size++; + } else + onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[index]); + valList[index] = value; + if (size === 1) + head = tail = index; + else + setTail(index, "set"); + }, + /** Retrieves the value for a given key and moves the key to the most recent position. */ + get(key) { + const index = keyMap.get(key); + if (index === void 0) + return; + if (index !== tail) + setTail(index, "get"); + return valList[index]; + }, + /** Retrieves the value for a given key without changing its position. */ + peek: /* @__PURE__ */ __name((key) => { + const index = keyMap.get(key); + return index !== void 0 ? valList[index] : void 0; + }, "peek"), + /** Checks if a key exists in the cache. */ + has: /* @__PURE__ */ __name((key) => keyMap.has(key), "has"), + /** Iterates over all keys in the cache, from most recent to least recent. */ + *keys() { + let current = tail; + for (let i2 = 0; i2 < size; i2++) { + yield keyList[current]; + current = prev[current]; } - return 0; - }, "#requireSize")); - const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options; - if (max !== 0 && !isPosInt(max)) { - throw new TypeError("max option must be a nonnegative integer"); - } - const UintArray = max ? getUintArray(max) : Array; - if (!UintArray) { - throw new Error("invalid max value: " + max); - } - __privateSet(this, _max, max); - __privateSet(this, _maxSize, maxSize); - this.maxEntrySize = maxEntrySize || __privateGet(this, _maxSize); - this.sizeCalculation = sizeCalculation; - if (this.sizeCalculation) { - if (!__privateGet(this, _maxSize) && !this.maxEntrySize) { - throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize"); + }, + /** Iterates over all values in the cache, from most recent to least recent. */ + *values() { + let current = tail; + for (let i2 = 0; i2 < size; i2++) { + yield valList[current]; + current = prev[current]; } - if (typeof this.sizeCalculation !== "function") { - throw new TypeError("sizeCalculation set to non-function"); + }, + /** Iterates over `[key, value]` pairs in the cache, from most recent to least recent. */ + *entries() { + let current = tail; + for (let i2 = 0; i2 < size; i2++) { + yield [keyList[current], valList[current]]; + current = prev[current]; } - } - if (fetchMethod !== void 0 && typeof fetchMethod !== "function") { - throw new TypeError("fetchMethod must be a function if specified"); - } - __privateSet(this, _fetchMethod, fetchMethod); - __privateSet(this, _hasFetchMethod, !!fetchMethod); - __privateSet(this, _keyMap, /* @__PURE__ */ new Map()); - __privateSet(this, _keyList, new Array(max).fill(void 0)); - __privateSet(this, _valList, new Array(max).fill(void 0)); - __privateSet(this, _next, new UintArray(max)); - __privateSet(this, _prev, new UintArray(max)); - __privateSet(this, _head, 0); - __privateSet(this, _tail, 0); - __privateSet(this, _free, Stack.create(max)); - __privateSet(this, _size2, 0); - __privateSet(this, _calculatedSize, 0); - if (typeof dispose === "function") { - __privateSet(this, _dispose, dispose); - } - if (typeof disposeAfter === "function") { - __privateSet(this, _disposeAfter, disposeAfter); - __privateSet(this, _disposed, []); - } else { - __privateSet(this, _disposeAfter, void 0); - __privateSet(this, _disposed, void 0); - } - __privateSet(this, _hasDispose, !!__privateGet(this, _dispose)); - __privateSet(this, _hasDisposeAfter, !!__privateGet(this, _disposeAfter)); - this.noDisposeOnSet = !!noDisposeOnSet; - this.noUpdateTTL = !!noUpdateTTL; - this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; - this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; - this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; - this.ignoreFetchAbort = !!ignoreFetchAbort; - if (this.maxEntrySize !== 0) { - if (__privateGet(this, _maxSize) !== 0) { - if (!isPosInt(__privateGet(this, _maxSize))) { - throw new TypeError("maxSize must be a positive integer if specified"); - } + }, + /** Iterates over each value-key pair in the cache, from most recent to least recent. */ + forEach: /* @__PURE__ */ __name((callback) => { + let current = tail; + for (let i2 = 0; i2 < size; i2++) { + const key = keyList[current]; + const value = valList[current]; + callback(value, key); + current = prev[current]; } - if (!isPosInt(this.maxEntrySize)) { - throw new TypeError("maxEntrySize must be a positive integer if specified"); - } - __privateMethod(this, _initializeSizeTracking, initializeSizeTracking_fn).call(this); - } - this.allowStale = !!allowStale; - this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; - this.updateAgeOnGet = !!updateAgeOnGet; - this.updateAgeOnHas = !!updateAgeOnHas; - this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1; - this.ttlAutopurge = !!ttlAutopurge; - this.ttl = ttl || 0; - if (this.ttl) { - if (!isPosInt(this.ttl)) { - throw new TypeError("ttl must be a positive integer if specified"); - } - __privateMethod(this, _initializeTTLTracking, initializeTTLTracking_fn).call(this); - } - if (__privateGet(this, _max) === 0 && this.ttl === 0 && __privateGet(this, _maxSize) === 0) { - throw new TypeError("At least one of max, maxSize, or ttl is required"); - } - if (!this.ttlAutopurge && !__privateGet(this, _max) && !__privateGet(this, _maxSize)) { - const code = "LRU_CACHE_UNBOUNDED"; - if (shouldWarn(code)) { - warned.add(code); - const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption."; - emitWarning(msg, "UnboundedCacheWarning", code, _LRUCache); - } - } - } - /** - * Do not call this method unless you need to inspect the - * inner workings of the cache. If anything returned by this - * object is modified in any way, strange breakage may occur. - * - * These fields are private for a reason! - * - * @internal - */ - static unsafeExposeInternals(c) { - return { - // properties - starts: __privateGet(c, _starts), - ttls: __privateGet(c, _ttls), - sizes: __privateGet(c, _sizes), - keyMap: __privateGet(c, _keyMap), - keyList: __privateGet(c, _keyList), - valList: __privateGet(c, _valList), - next: __privateGet(c, _next), - prev: __privateGet(c, _prev), - get head() { - return __privateGet(c, _head); - }, - get tail() { - return __privateGet(c, _tail); - }, - free: __privateGet(c, _free), - // methods - isBackgroundFetch: (p) => { - var _a4; - return __privateMethod(_a4 = c, _isBackgroundFetch, isBackgroundFetch_fn).call(_a4, p); - }, - backgroundFetch: (k, index, options, context) => { - var _a4; - return __privateMethod(_a4 = c, _backgroundFetch, backgroundFetch_fn).call(_a4, k, index, options, context); - }, - moveToTail: (index) => { - var _a4; - return __privateMethod(_a4 = c, _moveToTail, moveToTail_fn).call(_a4, index); - }, - indexes: (options) => { - var _a4; - return __privateMethod(_a4 = c, _indexes, indexes_fn).call(_a4, options); - }, - rindexes: (options) => { - var _a4; - return __privateMethod(_a4 = c, _rindexes, rindexes_fn).call(_a4, options); - }, - isStale: (index) => { - var _a4; - return __privateGet(_a4 = c, _isStale).call(_a4, index); - } - }; - } - // Protected read-only members - /** - * {@link LRUCache.OptionsBase.max} (read-only) - */ - get max() { - return __privateGet(this, _max); - } - /** - * {@link LRUCache.OptionsBase.maxSize} (read-only) - */ - get maxSize() { - return __privateGet(this, _maxSize); - } - /** - * The total computed size of items in the cache (read-only) - */ - get calculatedSize() { - return __privateGet(this, _calculatedSize); - } - /** - * The number of items stored in the cache (read-only) - */ - get size() { - return __privateGet(this, _size2); - } - /** - * {@link LRUCache.OptionsBase.fetchMethod} (read-only) - */ - get fetchMethod() { - return __privateGet(this, _fetchMethod); - } - /** - * {@link LRUCache.OptionsBase.dispose} (read-only) - */ - get dispose() { - return __privateGet(this, _dispose); - } - /** - * {@link LRUCache.OptionsBase.disposeAfter} (read-only) - */ - get disposeAfter() { - return __privateGet(this, _disposeAfter); - } - /** - * Return the remaining TTL time for a given entry key - */ - getRemainingTTL(key) { - return __privateGet(this, _keyMap).has(key) ? Infinity : 0; - } - /** - * Return a generator yielding `[key, value]` pairs, - * in order from most recently used to least recently used. - */ - *entries() { - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this)) { - if (__privateGet(this, _valList)[i2] !== void 0 && __privateGet(this, _keyList)[i2] !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield [__privateGet(this, _keyList)[i2], __privateGet(this, _valList)[i2]]; - } - } - } - /** - * Inverse order version of {@link LRUCache.entries} - * - * Return a generator yielding `[key, value]` pairs, - * in order from least recently used to most recently used. - */ - *rentries() { - for (const i2 of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { - if (__privateGet(this, _valList)[i2] !== void 0 && __privateGet(this, _keyList)[i2] !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield [__privateGet(this, _keyList)[i2], __privateGet(this, _valList)[i2]]; - } - } - } - /** - * Return a generator yielding the keys in the cache, - * in order from most recently used to least recently used. - */ - *keys() { - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this)) { - const k = __privateGet(this, _keyList)[i2]; - if (k !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield k; - } - } - } - /** - * Inverse order version of {@link LRUCache.keys} - * - * Return a generator yielding the keys in the cache, - * in order from least recently used to most recently used. - */ - *rkeys() { - for (const i2 of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { - const k = __privateGet(this, _keyList)[i2]; - if (k !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield k; - } - } - } - /** - * Return a generator yielding the values in the cache, - * in order from most recently used to least recently used. - */ - *values() { - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this)) { - const v = __privateGet(this, _valList)[i2]; - if (v !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield __privateGet(this, _valList)[i2]; - } - } - } - /** - * Inverse order version of {@link LRUCache.values} - * - * Return a generator yielding the values in the cache, - * in order from least recently used to most recently used. - */ - *rvalues() { - for (const i2 of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { - const v = __privateGet(this, _valList)[i2]; - if (v !== void 0 && !__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i2])) { - yield __privateGet(this, _valList)[i2]; - } - } - } - /** - * Iterating over the cache itself yields the same results as - * {@link LRUCache.entries} - */ - [Symbol.iterator]() { - return this.entries(); - } - /** - * Find a value for which the supplied fn method returns a truthy value, - * similar to Array.find(). fn is called as fn(value, key, cache). - */ - find(fn, getOptions = {}) { - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this)) { - const v = __privateGet(this, _valList)[i2]; - const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; - if (fn(value, __privateGet(this, _keyList)[i2], this)) { - return this.get(__privateGet(this, _keyList)[i2], getOptions); - } - } - } - /** - * Call the supplied function on each item in the cache, in order from - * most recently used to least recently used. fn is called as - * fn(value, key, cache). Does not update age or recenty of use. - * Does not iterate over stale values. - */ - forEach(fn, thisp = this) { - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this)) { - const v = __privateGet(this, _valList)[i2]; - const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; - fn.call(thisp, value, __privateGet(this, _keyList)[i2], this); - } - } - /** - * The same as {@link LRUCache.forEach} but items are iterated over in - * reverse order. (ie, less recently used items are iterated over first.) - */ - rforEach(fn, thisp = this) { - for (const i2 of __privateMethod(this, _rindexes, rindexes_fn).call(this)) { - const v = __privateGet(this, _valList)[i2]; - const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; - if (value === void 0) - continue; - fn.call(thisp, value, __privateGet(this, _keyList)[i2], this); - } - } - /** - * Delete any stale entries. Returns true if anything was removed, - * false otherwise. - */ - purgeStale() { - let deleted = false; - for (const i2 of __privateMethod(this, _rindexes, rindexes_fn).call(this, { allowStale: true })) { - if (__privateGet(this, _isStale).call(this, i2)) { - this.delete(__privateGet(this, _keyList)[i2]); - deleted = true; - } - } - return deleted; - } - /** - * Return an array of [key, {@link LRUCache.Entry}] tuples which can be - * passed to cache.load() - */ - dump() { - const arr = []; - for (const i2 of __privateMethod(this, _indexes, indexes_fn).call(this, { allowStale: true })) { - const key = __privateGet(this, _keyList)[i2]; - const v = __privateGet(this, _valList)[i2]; - const value = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; - if (value === void 0 || key === void 0) - continue; - const entry = { value }; - if (__privateGet(this, _ttls) && __privateGet(this, _starts)) { - entry.ttl = __privateGet(this, _ttls)[i2]; - const age = perf.now() - __privateGet(this, _starts)[i2]; - entry.start = Math.floor(Date.now() - age); - } - if (__privateGet(this, _sizes)) { - entry.size = __privateGet(this, _sizes)[i2]; - } - arr.unshift([key, entry]); - } - return arr; - } - /** - * Reset the cache and load in the items in entries in the order listed. - * Note that the shape of the resulting cache may be different if the - * same options are not used in both caches. - */ - load(arr) { - this.clear(); - for (const [key, entry] of arr) { - if (entry.start) { - const age = Date.now() - entry.start; - entry.start = perf.now() - age; - } - this.set(key, entry.value, entry); - } - } - /** - * Add a value to the cache. - */ - set(k, v, setOptions = {}) { - var _a4, _b, _c; - const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions; - let { noUpdateTTL = this.noUpdateTTL } = setOptions; - const size = __privateGet(this, _requireSize).call(this, k, v, setOptions.size || 0, sizeCalculation); - if (this.maxEntrySize && size > this.maxEntrySize) { - if (status) { - status.set = "miss"; - status.maxEntrySizeExceeded = true; - } - this.delete(k); - return this; - } - let index = __privateGet(this, _size2) === 0 ? void 0 : __privateGet(this, _keyMap).get(k); - if (index === void 0) { - index = __privateGet(this, _size2) === 0 ? __privateGet(this, _tail) : __privateGet(this, _free).length !== 0 ? __privateGet(this, _free).pop() : __privateGet(this, _size2) === __privateGet(this, _max) ? __privateMethod(this, _evict, evict_fn).call(this, false) : __privateGet(this, _size2); - __privateGet(this, _keyList)[index] = k; - __privateGet(this, _valList)[index] = v; - __privateGet(this, _keyMap).set(k, index); - __privateGet(this, _next)[__privateGet(this, _tail)] = index; - __privateGet(this, _prev)[index] = __privateGet(this, _tail); - __privateSet(this, _tail, index); - __privateWrapper(this, _size2)._++; - __privateGet(this, _addItemSize).call(this, index, size, status); - if (status) - status.set = "add"; - noUpdateTTL = false; - } else { - __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); - const oldVal = __privateGet(this, _valList)[index]; - if (v !== oldVal) { - if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, oldVal)) { - oldVal.__abortController.abort(new Error("replaced")); - } else if (!noDisposeOnSet) { - if (__privateGet(this, _hasDispose)) { - (_a4 = __privateGet(this, _dispose)) == null ? void 0 : _a4.call(this, oldVal, k, "set"); - } - if (__privateGet(this, _hasDisposeAfter)) { - (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([oldVal, k, "set"]); - } - } - __privateGet(this, _removeItemSize).call(this, index); - __privateGet(this, _addItemSize).call(this, index, size, status); - __privateGet(this, _valList)[index] = v; - if (status) { - status.set = "replace"; - const oldValue = oldVal && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, oldVal) ? oldVal.__staleWhileFetching : oldVal; - if (oldValue !== void 0) - status.oldValue = oldValue; - } - } else if (status) { - status.set = "update"; - } - } - if (ttl !== 0 && !__privateGet(this, _ttls)) { - __privateMethod(this, _initializeTTLTracking, initializeTTLTracking_fn).call(this); - } - if (__privateGet(this, _ttls)) { - if (!noUpdateTTL) { - __privateGet(this, _setItemTTL).call(this, index, ttl, start); - } - if (status) - __privateGet(this, _statusTTL).call(this, status, index); - } - if (!noDisposeOnSet && __privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { - const dt = __privateGet(this, _disposed); - let task; - while (task = dt == null ? void 0 : dt.shift()) { - (_c = __privateGet(this, _disposeAfter)) == null ? void 0 : _c.call(this, ...task); - } - } - return this; - } - /** - * Evict the least recently used item, returning its value or - * `undefined` if cache is empty. - */ - pop() { - var _a4; - try { - while (__privateGet(this, _size2)) { - const val = __privateGet(this, _valList)[__privateGet(this, _head)]; - __privateMethod(this, _evict, evict_fn).call(this, true); - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, val)) { - if (val.__staleWhileFetching) { - return val.__staleWhileFetching; - } - } else if (val !== void 0) { - return val; - } - } - } finally { - if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { - const dt = __privateGet(this, _disposed); - let task; - while (task = dt == null ? void 0 : dt.shift()) { - (_a4 = __privateGet(this, _disposeAfter)) == null ? void 0 : _a4.call(this, ...task); - } - } - } - } - /** - * Check if a key is in the cache, without updating the recency of use. - * Will return false if the item is stale, even though it is technically - * in the cache. - * - * Will not update item age unless - * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. - */ - has(k, hasOptions = {}) { - const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; - const index = __privateGet(this, _keyMap).get(k); - if (index !== void 0) { - const v = __privateGet(this, _valList)[index]; - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) && v.__staleWhileFetching === void 0) { + }, "forEach"), + /** Deletes a key-value pair from the cache. */ + delete(key) { + const index = keyMap.get(key); + if (index === void 0) return false; + onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[index]); + keyMap.delete(key); + free.push(index); + keyList[index] = void 0; + valList[index] = void 0; + const prevIndex = prev[index]; + const nextIndex = next[index]; + if (prevIndex !== 0) + next[prevIndex] = nextIndex; + if (nextIndex !== 0) + prev[nextIndex] = prevIndex; + if (index === head) + head = nextIndex; + if (index === tail) + tail = prevIndex; + size--; + return true; + }, + /** Evicts the oldest item or the specified number of the oldest items from the cache. */ + evict: /* @__PURE__ */ __name((number) => { + let toPrune = Math.min(number, size); + while (toPrune > 0) { + _evict(); + toPrune--; } - if (!__privateGet(this, _isStale).call(this, index)) { - if (updateAgeOnHas) { - __privateGet(this, _updateItemAge).call(this, index); - } - if (status) { - status.has = "hit"; - __privateGet(this, _statusTTL).call(this, status, index); - } - return true; - } else if (status) { - status.has = "stale"; - __privateGet(this, _statusTTL).call(this, status, index); + }, "evict"), + /** Clears all key-value pairs from the cache. */ + clear() { + if (typeof onEviction === "function") { + const iterator = keyMap.values(); + for (let result = iterator.next(); !result.done; result = iterator.next()) + onEviction(keyList[result.value], valList[result.value]); } - } else if (status) { - status.has = "miss"; - } - return false; - } - /** - * Like {@link LRUCache#get} but doesn't update recency or delete stale - * items. - * - * Returns `undefined` if the item is stale, unless - * {@link LRUCache.OptionsBase.allowStale} is set. - */ - peek(k, peekOptions = {}) { - const { allowStale = this.allowStale } = peekOptions; - const index = __privateGet(this, _keyMap).get(k); - if (index !== void 0 && (allowStale || !__privateGet(this, _isStale).call(this, index))) { - const v = __privateGet(this, _valList)[index]; - return __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v; - } - } - async fetch(k, fetchOptions = {}) { - const { - // get options - allowStale = this.allowStale, - updateAgeOnGet = this.updateAgeOnGet, - noDeleteOnStaleGet = this.noDeleteOnStaleGet, - // set options - ttl = this.ttl, - noDisposeOnSet = this.noDisposeOnSet, - size = 0, - sizeCalculation = this.sizeCalculation, - noUpdateTTL = this.noUpdateTTL, - // fetch exclusive options - noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, - allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, - ignoreFetchAbort = this.ignoreFetchAbort, - allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, - context, - forceRefresh = false, - status, - signal - } = fetchOptions; - if (!__privateGet(this, _hasFetchMethod)) { - if (status) - status.fetch = "get"; - return this.get(k, { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - status - }); - } - const options = { - allowStale, - updateAgeOnGet, - noDeleteOnStaleGet, - ttl, - noDisposeOnSet, - size, - sizeCalculation, - noUpdateTTL, - noDeleteOnFetchRejection, - allowStaleOnFetchRejection, - allowStaleOnFetchAbort, - ignoreFetchAbort, - status, - signal - }; - let index = __privateGet(this, _keyMap).get(k); - if (index === void 0) { - if (status) - status.fetch = "miss"; - const p = __privateMethod(this, _backgroundFetch, backgroundFetch_fn).call(this, k, index, options, context); - return p.__returned = p; - } else { - const v = __privateGet(this, _valList)[index]; - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - const stale = allowStale && v.__staleWhileFetching !== void 0; - if (status) { - status.fetch = "inflight"; - if (stale) - status.returnedStale = true; + keyMap.clear(); + keyList.fill(void 0); + valList.fill(void 0); + free = []; + size = 0; + head = tail = 0; + }, + /** Resizes the cache to a new maximum size, evicting items if necessary. */ + resize: /* @__PURE__ */ __name((newMax) => { + if (!(Number.isInteger(newMax) && newMax > 0)) + throw new TypeError("`max` must be a positive integer"); + if (newMax === max) + return; + if (newMax < max) { + let current = tail; + const preserve = Math.min(size, newMax); + const remove = size - preserve; + const newKeyList = new Array(newMax); + const newValList = new Array(newMax); + const newNext = new Array(newMax); + const newPrev = new Array(newMax); + for (let i2 = 1; i2 <= remove; i2++) + onEviction === null || onEviction === void 0 ? void 0 : onEviction(keyList[i2], valList[i2]); + for (let i2 = preserve - 1; i2 >= 0; i2--) { + newKeyList[i2] = keyList[current]; + newValList[i2] = valList[current]; + newNext[i2] = i2 + 1; + newPrev[i2] = i2 - 1; + keyMap.set(newKeyList[i2], i2); + current = prev[current]; } - return stale ? v.__staleWhileFetching : v.__returned = v; - } - const isStale = __privateGet(this, _isStale).call(this, index); - if (!forceRefresh && !isStale) { - if (status) - status.fetch = "hit"; - __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); - if (updateAgeOnGet) { - __privateGet(this, _updateItemAge).call(this, index); - } - if (status) - __privateGet(this, _statusTTL).call(this, status, index); - return v; - } - const p = __privateMethod(this, _backgroundFetch, backgroundFetch_fn).call(this, k, index, options, context); - const hasStale = p.__staleWhileFetching !== void 0; - const staleVal = hasStale && allowStale; - if (status) { - status.fetch = isStale ? "stale" : "refresh"; - if (staleVal && isStale) - status.returnedStale = true; - } - return staleVal ? p.__staleWhileFetching : p.__returned = p; - } - } - /** - * Return a value from the cache. Will update the recency of the cache - * entry found. - * - * If the key is not found, get() will return `undefined`. - */ - get(k, getOptions = {}) { - const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions; - const index = __privateGet(this, _keyMap).get(k); - if (index !== void 0) { - const value = __privateGet(this, _valList)[index]; - const fetching = __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, value); - if (status) - __privateGet(this, _statusTTL).call(this, status, index); - if (__privateGet(this, _isStale).call(this, index)) { - if (status) - status.get = "stale"; - if (!fetching) { - if (!noDeleteOnStaleGet) { - this.delete(k); - } - if (status && allowStale) - status.returnedStale = true; - return allowStale ? value : void 0; - } else { - if (status && allowStale && value.__staleWhileFetching !== void 0) { - status.returnedStale = true; - } - return allowStale ? value.__staleWhileFetching : void 0; + head = 0; + tail = preserve - 1; + size = preserve; + keyList.length = newMax; + valList.length = newMax; + next.length = newMax; + prev.length = newMax; + for (let i2 = 0; i2 < preserve; i2++) { + keyList[i2] = newKeyList[i2]; + valList[i2] = newValList[i2]; + next[i2] = newNext[i2]; + prev[i2] = newPrev[i2]; } + free = []; + for (let i2 = preserve; i2 < newMax; i2++) + free.push(i2); } else { - if (status) - status.get = "hit"; - if (fetching) { - return value.__staleWhileFetching; - } - __privateMethod(this, _moveToTail, moveToTail_fn).call(this, index); - if (updateAgeOnGet) { - __privateGet(this, _updateItemAge).call(this, index); - } - return value; + const fill = newMax - max; + keyList.push(...new Array(fill).fill(void 0)); + valList.push(...new Array(fill).fill(void 0)); + next.push(...new Array(fill).fill(0)); + prev.push(...new Array(fill).fill(0)); } - } else if (status) { - status.get = "miss"; + max = newMax; + }, "resize"), + /** Returns the maximum number of items that can be stored in the cache. */ + get max() { + return max; + }, + /** Returns the number of items currently stored in the cache. */ + get size() { + return size; + }, + /** Returns the number of currently available slots in the cache before reaching the maximum size. */ + get available() { + return max - size; } - } - /** - * Deletes a key out of the cache. - * Returns true if the key was deleted, false otherwise. - */ - delete(k) { - var _a4, _b, _c, _d2; - let deleted = false; - if (__privateGet(this, _size2) !== 0) { - const index = __privateGet(this, _keyMap).get(k); - if (index !== void 0) { - deleted = true; - if (__privateGet(this, _size2) === 1) { - this.clear(); - } else { - __privateGet(this, _removeItemSize).call(this, index); - const v = __privateGet(this, _valList)[index]; - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - v.__abortController.abort(new Error("deleted")); - } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) { - if (__privateGet(this, _hasDispose)) { - (_a4 = __privateGet(this, _dispose)) == null ? void 0 : _a4.call(this, v, k, "delete"); - } - if (__privateGet(this, _hasDisposeAfter)) { - (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "delete"]); - } - } - __privateGet(this, _keyMap).delete(k); - __privateGet(this, _keyList)[index] = void 0; - __privateGet(this, _valList)[index] = void 0; - if (index === __privateGet(this, _tail)) { - __privateSet(this, _tail, __privateGet(this, _prev)[index]); - } else if (index === __privateGet(this, _head)) { - __privateSet(this, _head, __privateGet(this, _next)[index]); - } else { - __privateGet(this, _next)[__privateGet(this, _prev)[index]] = __privateGet(this, _next)[index]; - __privateGet(this, _prev)[__privateGet(this, _next)[index]] = __privateGet(this, _prev)[index]; - } - __privateWrapper(this, _size2)._--; - __privateGet(this, _free).push(index); - } - } - } - if (__privateGet(this, _hasDisposeAfter) && ((_c = __privateGet(this, _disposed)) == null ? void 0 : _c.length)) { - const dt = __privateGet(this, _disposed); - let task; - while (task = dt == null ? void 0 : dt.shift()) { - (_d2 = __privateGet(this, _disposeAfter)) == null ? void 0 : _d2.call(this, ...task); - } - } - return deleted; - } - /** - * Clear the cache entirely, throwing away all values. - */ - clear() { - var _a4, _b, _c; - for (const index of __privateMethod(this, _rindexes, rindexes_fn).call(this, { allowStale: true })) { - const v = __privateGet(this, _valList)[index]; - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - v.__abortController.abort(new Error("deleted")); - } else { - const k = __privateGet(this, _keyList)[index]; - if (__privateGet(this, _hasDispose)) { - (_a4 = __privateGet(this, _dispose)) == null ? void 0 : _a4.call(this, v, k, "delete"); - } - if (__privateGet(this, _hasDisposeAfter)) { - (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "delete"]); - } - } - } - __privateGet(this, _keyMap).clear(); - __privateGet(this, _valList).fill(void 0); - __privateGet(this, _keyList).fill(void 0); - if (__privateGet(this, _ttls) && __privateGet(this, _starts)) { - __privateGet(this, _ttls).fill(0); - __privateGet(this, _starts).fill(0); - } - if (__privateGet(this, _sizes)) { - __privateGet(this, _sizes).fill(0); - } - __privateSet(this, _head, 0); - __privateSet(this, _tail, 0); - __privateGet(this, _free).length = 0; - __privateSet(this, _calculatedSize, 0); - __privateSet(this, _size2, 0); - if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) { - const dt = __privateGet(this, _disposed); - let task; - while (task = dt == null ? void 0 : dt.shift()) { - (_c = __privateGet(this, _disposeAfter)) == null ? void 0 : _c.call(this, ...task); - } - } - } - }; - _max = new WeakMap(); - _maxSize = new WeakMap(); - _dispose = new WeakMap(); - _disposeAfter = new WeakMap(); - _fetchMethod = new WeakMap(); - _size2 = new WeakMap(); - _calculatedSize = new WeakMap(); - _keyMap = new WeakMap(); - _keyList = new WeakMap(); - _valList = new WeakMap(); - _next = new WeakMap(); - _prev = new WeakMap(); - _head = new WeakMap(); - _tail = new WeakMap(); - _free = new WeakMap(); - _disposed = new WeakMap(); - _sizes = new WeakMap(); - _starts = new WeakMap(); - _ttls = new WeakMap(); - _hasDispose = new WeakMap(); - _hasFetchMethod = new WeakMap(); - _hasDisposeAfter = new WeakMap(); - _initializeTTLTracking = new WeakSet(); - initializeTTLTracking_fn = /* @__PURE__ */ __name(function() { - const ttls = new ZeroArray(__privateGet(this, _max)); - const starts = new ZeroArray(__privateGet(this, _max)); - __privateSet(this, _ttls, ttls); - __privateSet(this, _starts, starts); - __privateSet(this, _setItemTTL, (index, ttl, start = perf.now()) => { - starts[index] = ttl !== 0 ? start : 0; - ttls[index] = ttl; - if (ttl !== 0 && this.ttlAutopurge) { - const t2 = setTimeout(() => { - if (__privateGet(this, _isStale).call(this, index)) { - this.delete(__privateGet(this, _keyList)[index]); - } - }, ttl + 1); - if (t2.unref) { - t2.unref(); - } - } - }); - __privateSet(this, _updateItemAge, (index) => { - starts[index] = ttls[index] !== 0 ? perf.now() : 0; - }); - __privateSet(this, _statusTTL, (status, index) => { - if (ttls[index]) { - const ttl = ttls[index]; - const start = starts[index]; - status.ttl = ttl; - status.start = start; - status.now = cachedNow || getNow(); - status.remainingTTL = status.now + ttl - start; - } - }); - let cachedNow = 0; - const getNow = /* @__PURE__ */ __name(() => { - const n = perf.now(); - if (this.ttlResolution > 0) { - cachedNow = n; - const t2 = setTimeout(() => cachedNow = 0, this.ttlResolution); - if (t2.unref) { - t2.unref(); - } - } - return n; - }, "getNow"); - this.getRemainingTTL = (key) => { - const index = __privateGet(this, _keyMap).get(key); - if (index === void 0) { - return 0; - } - return ttls[index] === 0 || starts[index] === 0 ? Infinity : starts[index] + ttls[index] - (cachedNow || getNow()); }; - __privateSet(this, _isStale, (index) => { - return ttls[index] !== 0 && starts[index] !== 0 && (cachedNow || getNow()) - starts[index] > ttls[index]; - }); - }, "#initializeTTLTracking"); - _updateItemAge = new WeakMap(); - _statusTTL = new WeakMap(); - _setItemTTL = new WeakMap(); - _isStale = new WeakMap(); - _initializeSizeTracking = new WeakSet(); - initializeSizeTracking_fn = /* @__PURE__ */ __name(function() { - const sizes = new ZeroArray(__privateGet(this, _max)); - __privateSet(this, _calculatedSize, 0); - __privateSet(this, _sizes, sizes); - __privateSet(this, _removeItemSize, (index) => { - __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) - sizes[index]); - sizes[index] = 0; - }); - __privateSet(this, _requireSize, (k, v, size, sizeCalculation) => { - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - return 0; - } - if (!isPosInt(size)) { - if (sizeCalculation) { - if (typeof sizeCalculation !== "function") { - throw new TypeError("sizeCalculation must be a function"); - } - size = sizeCalculation(v, k); - if (!isPosInt(size)) { - throw new TypeError("sizeCalculation return invalid (expect positive integer)"); - } - } else { - throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set."); - } - } - return size; - }); - __privateSet(this, _addItemSize, (index, size, status) => { - sizes[index] = size; - if (__privateGet(this, _maxSize)) { - const maxSize = __privateGet(this, _maxSize) - sizes[index]; - while (__privateGet(this, _calculatedSize) > maxSize) { - __privateMethod(this, _evict, evict_fn).call(this, true); - } - } - __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) + sizes[index]); - if (status) { - status.entrySize = size; - status.totalCalculatedSize = __privateGet(this, _calculatedSize); - } - }); - }, "#initializeSizeTracking"); - _removeItemSize = new WeakMap(); - _addItemSize = new WeakMap(); - _requireSize = new WeakMap(); - _indexes = new WeakSet(); - indexes_fn = /* @__PURE__ */ __name(function* ({ allowStale = this.allowStale } = {}) { - if (__privateGet(this, _size2)) { - for (let i2 = __privateGet(this, _tail); true; ) { - if (!__privateMethod(this, _isValidIndex, isValidIndex_fn).call(this, i2)) { - break; - } - if (allowStale || !__privateGet(this, _isStale).call(this, i2)) { - yield i2; - } - if (i2 === __privateGet(this, _head)) { - break; - } else { - i2 = __privateGet(this, _prev)[i2]; - } - } - } - }, "#indexes"); - _rindexes = new WeakSet(); - rindexes_fn = /* @__PURE__ */ __name(function* ({ allowStale = this.allowStale } = {}) { - if (__privateGet(this, _size2)) { - for (let i2 = __privateGet(this, _head); true; ) { - if (!__privateMethod(this, _isValidIndex, isValidIndex_fn).call(this, i2)) { - break; - } - if (allowStale || !__privateGet(this, _isStale).call(this, i2)) { - yield i2; - } - if (i2 === __privateGet(this, _tail)) { - break; - } else { - i2 = __privateGet(this, _next)[i2]; - } - } - } - }, "#rindexes"); - _isValidIndex = new WeakSet(); - isValidIndex_fn = /* @__PURE__ */ __name(function(index) { - return index !== void 0 && __privateGet(this, _keyMap).get(__privateGet(this, _keyList)[index]) === index; - }, "#isValidIndex"); - _evict = new WeakSet(); - evict_fn = /* @__PURE__ */ __name(function(free) { - var _a4, _b; - const head = __privateGet(this, _head); - const k = __privateGet(this, _keyList)[head]; - const v = __privateGet(this, _valList)[head]; - if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - v.__abortController.abort(new Error("evicted")); - } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) { - if (__privateGet(this, _hasDispose)) { - (_a4 = __privateGet(this, _dispose)) == null ? void 0 : _a4.call(this, v, k, "evict"); - } - if (__privateGet(this, _hasDisposeAfter)) { - (_b = __privateGet(this, _disposed)) == null ? void 0 : _b.push([v, k, "evict"]); - } - } - __privateGet(this, _removeItemSize).call(this, head); - if (free) { - __privateGet(this, _keyList)[head] = void 0; - __privateGet(this, _valList)[head] = void 0; - __privateGet(this, _free).push(head); - } - if (__privateGet(this, _size2) === 1) { - __privateSet(this, _head, __privateSet(this, _tail, 0)); - __privateGet(this, _free).length = 0; - } else { - __privateSet(this, _head, __privateGet(this, _next)[head]); - } - __privateGet(this, _keyMap).delete(k); - __privateWrapper(this, _size2)._--; - return head; - }, "#evict"); - _backgroundFetch = new WeakSet(); - backgroundFetch_fn = /* @__PURE__ */ __name(function(k, index, options, context) { - const v = index === void 0 ? void 0 : __privateGet(this, _valList)[index]; - if (__privateMethod(this, _isBackgroundFetch, isBackgroundFetch_fn).call(this, v)) { - return v; - } - const ac = new AbortController(); - const { signal } = options; - signal == null ? void 0 : signal.addEventListener("abort", () => ac.abort(signal.reason), { - signal: ac.signal - }); - const fetchOpts = { - signal: ac.signal, - options, - context - }; - const cb = /* @__PURE__ */ __name((v2, updateCache = false) => { - const { aborted } = ac.signal; - const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0; - if (options.status) { - if (aborted && !updateCache) { - options.status.fetchAborted = true; - options.status.fetchError = ac.signal.reason; - if (ignoreAbort) - options.status.fetchAbortIgnored = true; - } else { - options.status.fetchResolved = true; - } - } - if (aborted && !ignoreAbort && !updateCache) { - return fetchFail(ac.signal.reason); - } - const bf2 = p; - if (__privateGet(this, _valList)[index] === p) { - if (v2 === void 0) { - if (bf2.__staleWhileFetching) { - __privateGet(this, _valList)[index] = bf2.__staleWhileFetching; - } else { - this.delete(k); - } - } else { - if (options.status) - options.status.fetchUpdated = true; - this.set(k, v2, fetchOpts.options); - } - } - return v2; - }, "cb"); - const eb = /* @__PURE__ */ __name((er) => { - if (options.status) { - options.status.fetchRejected = true; - options.status.fetchError = er; - } - return fetchFail(er); - }, "eb"); - const fetchFail = /* @__PURE__ */ __name((er) => { - const { aborted } = ac.signal; - const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; - const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; - const noDelete = allowStale || options.noDeleteOnFetchRejection; - const bf2 = p; - if (__privateGet(this, _valList)[index] === p) { - const del = !noDelete || bf2.__staleWhileFetching === void 0; - if (del) { - this.delete(k); - } else if (!allowStaleAborted) { - __privateGet(this, _valList)[index] = bf2.__staleWhileFetching; - } - } - if (allowStale) { - if (options.status && bf2.__staleWhileFetching !== void 0) { - options.status.returnedStale = true; - } - return bf2.__staleWhileFetching; - } else if (bf2.__returned === bf2) { - throw er; - } - }, "fetchFail"); - const pcall = /* @__PURE__ */ __name((res, rej) => { - var _a4; - const fmp = (_a4 = __privateGet(this, _fetchMethod)) == null ? void 0 : _a4.call(this, k, v, fetchOpts); - if (fmp && fmp instanceof Promise) { - fmp.then((v2) => res(v2), rej); - } - ac.signal.addEventListener("abort", () => { - if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) { - res(); - if (options.allowStaleOnFetchAbort) { - res = /* @__PURE__ */ __name((v2) => cb(v2, true), "res"); - } - } - }); - }, "pcall"); - if (options.status) - options.status.fetchDispatched = true; - const p = new Promise(pcall).then(cb, eb); - const bf = Object.assign(p, { - __abortController: ac, - __staleWhileFetching: v, - __returned: void 0 - }); - if (index === void 0) { - this.set(k, bf, { ...fetchOpts.options, status: void 0 }); - index = __privateGet(this, _keyMap).get(k); - } else { - __privateGet(this, _valList)[index] = bf; - } - return bf; - }, "#backgroundFetch"); - _isBackgroundFetch = new WeakSet(); - isBackgroundFetch_fn = /* @__PURE__ */ __name(function(p) { - if (!__privateGet(this, _hasFetchMethod)) - return false; - const b = p; - return !!b && b instanceof Promise && b.hasOwnProperty("__staleWhileFetching") && b.__abortController instanceof AbortController; - }, "#isBackgroundFetch"); - _connect = new WeakSet(); - connect_fn = /* @__PURE__ */ __name(function(p, n) { - __privateGet(this, _prev)[n] = p; - __privateGet(this, _next)[p] = n; - }, "#connect"); - _moveToTail = new WeakSet(); - moveToTail_fn = /* @__PURE__ */ __name(function(index) { - if (index !== __privateGet(this, _tail)) { - if (index === __privateGet(this, _head)) { - __privateSet(this, _head, __privateGet(this, _next)[index]); - } else { - __privateMethod(this, _connect, connect_fn).call(this, __privateGet(this, _prev)[index], __privateGet(this, _next)[index]); - } - __privateMethod(this, _connect, connect_fn).call(this, __privateGet(this, _tail), index); - __privateSet(this, _tail, index); - } - }, "#moveToTail"); - __name(_LRUCache, "LRUCache"); - var LRUCache = _LRUCache; - exports2.LRUCache = LRUCache; - exports2.default = LRUCache; + }, "createLRU"); + exports2.createLRU = createLRU; } }); -// node_modules/.pnpm/lru-cache@8.0.5/node_modules/lru-cache/dist/cjs/index-cjs.js -var require_index_cjs = __commonJS({ - "node_modules/.pnpm/lru-cache@8.0.5/node_modules/lru-cache/dist/cjs/index-cjs.js"(exports2, module2) { - "use strict"; - var __importDefault = exports2 && exports2.__importDefault || function(mod) { - return mod && mod.__esModule ? mod : { "default": mod }; - }; - var index_js_1 = __importDefault(require_cjs()); - module2.exports = Object.assign(index_js_1.default, { default: index_js_1.default, LRUCache: index_js_1.default }); - } -}); - -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/errors.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/errors.js var require_errors = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/errors.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/errors.js"(exports2) { "use strict"; exports2.EE_CANTCREATEFILE = 1; exports2.EE_READ = 2; @@ -7073,7 +5981,7 @@ var require_umd = __commonJS({ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -7116,44 +6024,34 @@ var require_umd = __commonJS({ value >>>= 0; if (cache = 0 <= value && value < 256) { cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; + if (cachedObj) return cachedObj; } obj = fromBits(value, 0, true); - if (cache) - UINT_CACHE[value] = obj; + if (cache) UINT_CACHE[value] = obj; return obj; } else { value |= 0; if (cache = -128 <= value && value < 128) { cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; + if (cachedObj) return cachedObj; } obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; + if (cache) INT_CACHE[value] = obj; return obj; } } __name(fromInt, "fromInt"); Long2.fromInt = fromInt; function fromNumber(value, unsigned) { - if (isNaN(value)) - return unsigned ? UZERO : ZERO; + if (isNaN(value)) return unsigned ? UZERO : ZERO; if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; + if (value < 0) return UZERO; + if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE; } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; + if (value <= -TWO_PWR_63_DBL) return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE; } - if (value < 0) - return fromNumber(-value, unsigned).neg(); + if (value < 0) return fromNumber(-value, unsigned).neg(); return fromBits(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned); } __name(fromNumber, "fromNumber"); @@ -7165,22 +6063,18 @@ var require_umd = __commonJS({ Long2.fromBits = fromBits; var pow_dbl = Math.pow; function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error("empty string"); + if (str.length === 0) throw Error("empty string"); if (typeof unsigned === "number") { radix = unsigned; unsigned = false; } else { unsigned = !!unsigned; } - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return unsigned ? UZERO : ZERO; + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") return unsigned ? UZERO : ZERO; radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError("radix"); + if (radix < 2 || 36 < radix) throw RangeError("radix"); var p; - if ((p = str.indexOf("-")) > 0) - throw Error("interior hyphen"); + if ((p = str.indexOf("-")) > 0) throw Error("interior hyphen"); else if (p === 0) { return fromString(str.substring(1), unsigned, radix).neg(); } @@ -7202,10 +6096,8 @@ var require_umd = __commonJS({ __name(fromString, "fromString"); Long2.fromString = fromString; function fromValue(val, unsigned) { - if (typeof val === "number") - return fromNumber(val, unsigned); - if (typeof val === "string") - return fromString(val, unsigned); + if (typeof val === "number") return fromNumber(val, unsigned); + if (typeof val === "string") return fromString(val, unsigned); return fromBits(val.low, val.high, typeof unsigned === "boolean" ? unsigned : val.unsigned); } __name(fromValue, "fromValue"); @@ -7237,33 +6129,27 @@ var require_umd = __commonJS({ return this.unsigned ? this.low >>> 0 : this.low; }, "toInt"); LongPrototype.toNumber = /* @__PURE__ */ __name(function toNumber() { - if (this.unsigned) - return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); + if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); return this.high * TWO_PWR_32_DBL + (this.low >>> 0); }, "toNumber"); LongPrototype.toString = /* @__PURE__ */ __name(function toString(radix) { radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError("radix"); - if (this.isZero()) - return "0"; + if (radix < 2 || 36 < radix) throw RangeError("radix"); + if (this.isZero()) return "0"; if (this.isNegative()) { if (this.eq(MIN_VALUE)) { var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this); return div.toString(radix) + rem1.toInt().toString(radix); - } else - return "-" + this.neg().toString(radix); + } else return "-" + this.neg().toString(radix); } var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this; var result = ""; while (true) { var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix); rem = remDiv; - if (rem.isZero()) - return digits + result; + if (rem.isZero()) return digits + result; else { - while (digits.length < 6) - digits = "0" + digits; + while (digits.length < 6) digits = "0" + digits; result = "" + digits + result; } } @@ -7284,9 +6170,7 @@ var require_umd = __commonJS({ if (this.isNegative()) return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & 1 << bit) != 0) - break; + for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break; return this.high != 0 ? bit + 33 : bit + 1; }, "getNumBitsAbs"); LongPrototype.isZero = /* @__PURE__ */ __name(function isZero() { @@ -7306,10 +6190,8 @@ var require_umd = __commonJS({ return (this.low & 1) === 0; }, "isEven"); LongPrototype.equals = /* @__PURE__ */ __name(function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) - return false; + if (!isLong(other)) other = fromValue(other); + if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false; return this.high === other.high && this.low === other.low; }, "equals"); LongPrototype.eq = LongPrototype.equals; @@ -7352,29 +6234,22 @@ var require_umd = __commonJS({ LongPrototype.gte = LongPrototype.greaterThanOrEqual; LongPrototype.ge = LongPrototype.greaterThanOrEqual; LongPrototype.compare = /* @__PURE__ */ __name(function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; + if (!isLong(other)) other = fromValue(other); + if (this.eq(other)) return 0; var thisNeg = this.isNegative(), otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; + if (thisNeg && !otherNeg) return -1; + if (!thisNeg && otherNeg) return 1; + if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1; }, "compare"); LongPrototype.comp = LongPrototype.compare; LongPrototype.negate = /* @__PURE__ */ __name(function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; + if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE; return this.not().add(ONE); }, "negate"); LongPrototype.neg = LongPrototype.negate; LongPrototype.add = /* @__PURE__ */ __name(function add(addend) { - if (!isLong(addend)) - addend = fromValue(addend); + if (!isLong(addend)) addend = fromValue(addend); var a48 = this.high >>> 16; var a32 = this.high & 65535; var a16 = this.low >>> 16; @@ -7398,35 +6273,25 @@ var require_umd = __commonJS({ return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); }, "add"); LongPrototype.subtract = /* @__PURE__ */ __name(function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); + if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend); return this.add(subtrahend.neg()); }, "subtract"); LongPrototype.sub = LongPrototype.subtract; LongPrototype.multiply = /* @__PURE__ */ __name(function multiply(multiplier) { - if (this.isZero()) - return this; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); + if (this.isZero()) return this; + if (!isLong(multiplier)) multiplier = fromValue(multiplier); if (wasm) { var low = wasm["mul"](this.low, this.high, multiplier.low, multiplier.high); return fromBits(low, wasm["get_high"](), this.unsigned); } - if (multiplier.isZero()) - return this.unsigned ? UZERO : ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO; + if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO; if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + if (multiplier.isNegative()) return this.neg().mul(multiplier.neg()); + else return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); var a48 = this.high >>> 16; var a32 = this.high & 65535; var a16 = this.low >>> 16; @@ -7460,10 +6325,8 @@ var require_umd = __commonJS({ }, "multiply"); LongPrototype.mul = LongPrototype.multiply; LongPrototype.divide = /* @__PURE__ */ __name(function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error("division by zero"); + if (!isLong(divisor)) divisor = fromValue(divisor); + if (divisor.isZero()) throw Error("division by zero"); if (wasm) { if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) { return this; @@ -7471,15 +6334,12 @@ var require_umd = __commonJS({ var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])(this.low, this.high, divisor.low, divisor.high); return fromBits(low, wasm["get_high"](), this.unsigned); } - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; + if (this.isZero()) return this.unsigned ? UZERO : ZERO; var approx, rem, res; if (!this.unsigned) { if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; - else if (divisor.eq(MIN_VALUE)) - return ONE; + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) return MIN_VALUE; + else if (divisor.eq(MIN_VALUE)) return ONE; else { var halfThis = this.shr(1); approx = halfThis.div(divisor).shl(1); @@ -7491,20 +6351,15 @@ var require_umd = __commonJS({ return res; } } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; + } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO; if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); + if (divisor.isNegative()) return this.neg().div(divisor.neg()); return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); + } else if (divisor.isNegative()) return this.div(divisor.neg()).neg(); res = ZERO; } else { - if (!divisor.unsigned) - divisor = divisor.toUnsigned(); - if (divisor.gt(this)) - return UZERO; + if (!divisor.unsigned) divisor = divisor.toUnsigned(); + if (divisor.gt(this)) return UZERO; if (divisor.gt(this.shru(1))) return UONE; res = UZERO; @@ -7518,8 +6373,7 @@ var require_umd = __commonJS({ approxRes = fromNumber(approx, this.unsigned); approxRem = approxRes.mul(divisor); } - if (approxRes.isZero()) - approxRes = ONE; + if (approxRes.isZero()) approxRes = ONE; res = res.add(approxRes); rem = rem.sub(approxRem); } @@ -7527,8 +6381,7 @@ var require_umd = __commonJS({ }, "divide"); LongPrototype.div = LongPrototype.divide; LongPrototype.modulo = /* @__PURE__ */ __name(function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); + if (!isLong(divisor)) divisor = fromValue(divisor); if (wasm) { var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])(this.low, this.high, divisor.low, divisor.high); return fromBits(low, wasm["get_high"](), this.unsigned); @@ -7549,63 +6402,45 @@ var require_umd = __commonJS({ }, "countTrailingZeros"); LongPrototype.ctz = LongPrototype.countTrailingZeros; LongPrototype.and = /* @__PURE__ */ __name(function and(other) { - if (!isLong(other)) - other = fromValue(other); + if (!isLong(other)) other = fromValue(other); return fromBits(this.low & other.low, this.high & other.high, this.unsigned); }, "and"); LongPrototype.or = /* @__PURE__ */ __name(function or(other) { - if (!isLong(other)) - other = fromValue(other); + if (!isLong(other)) other = fromValue(other); return fromBits(this.low | other.low, this.high | other.high, this.unsigned); }, "or"); LongPrototype.xor = /* @__PURE__ */ __name(function xor(other) { - if (!isLong(other)) - other = fromValue(other); + if (!isLong(other)) other = fromValue(other); return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); }, "xor"); LongPrototype.shiftLeft = /* @__PURE__ */ __name(function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned); - else - return fromBits(0, this.low << numBits - 32, this.unsigned); + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) return fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned); + else return fromBits(0, this.low << numBits - 32, this.unsigned); }, "shiftLeft"); LongPrototype.shl = LongPrototype.shiftLeft; LongPrototype.shiftRight = /* @__PURE__ */ __name(function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned); + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned); + else return fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned); }, "shiftRight"); LongPrototype.shr = LongPrototype.shiftRight; LongPrototype.shiftRightUnsigned = /* @__PURE__ */ __name(function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - if (numBits < 32) - return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned); - if (numBits === 32) - return fromBits(this.high, 0, this.unsigned); + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned); + if (numBits === 32) return fromBits(this.high, 0, this.unsigned); return fromBits(this.high >>> numBits - 32, 0, this.unsigned); }, "shiftRightUnsigned"); LongPrototype.shru = LongPrototype.shiftRightUnsigned; LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; LongPrototype.rotateLeft = /* @__PURE__ */ __name(function rotateLeft(numBits) { var b; - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - if (numBits === 32) - return fromBits(this.high, this.low, this.unsigned); + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); if (numBits < 32) { b = 32 - numBits; return fromBits(this.low << numBits | this.high >>> b, this.high << numBits | this.low >>> b, this.unsigned); @@ -7617,12 +6452,9 @@ var require_umd = __commonJS({ LongPrototype.rotl = LongPrototype.rotateLeft; LongPrototype.rotateRight = /* @__PURE__ */ __name(function rotateRight(numBits) { var b; - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - if (numBits === 32) - return fromBits(this.high, this.low, this.unsigned); + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); if (numBits < 32) { b = 32 - numBits; return fromBits(this.high << b | this.low >>> numBits, this.low << b | this.high >>> numBits, this.unsigned); @@ -7633,13 +6465,11 @@ var require_umd = __commonJS({ }, "rotateRight"); LongPrototype.rotr = LongPrototype.rotateRight; LongPrototype.toSigned = /* @__PURE__ */ __name(function toSigned() { - if (!this.unsigned) - return this; + if (!this.unsigned) return this; return fromBits(this.low, this.high, false); }, "toSigned"); LongPrototype.toUnsigned = /* @__PURE__ */ __name(function toUnsigned() { - if (this.unsigned) - return this; + if (this.unsigned) return this; return fromBits(this.low, this.high, true); }, "toUnsigned"); LongPrototype.toBytes = /* @__PURE__ */ __name(function toBytes(le) { @@ -7666,12 +6496,10 @@ var require_umd = __commonJS({ exports3.default = _default; return "default" in exports3 ? exports3.default : exports3; }({}); - if (typeof define === "function" && define.amd) - define([], function() { - return Long; - }); - else if (typeof module2 === "object" && typeof exports2 === "object") - module2.exports = Long; + if (typeof define === "function" && define.amd) define([], function() { + return Long; + }); + else if (typeof module2 === "object" && typeof exports2 === "object") module2.exports = Long; } }); @@ -7684,18 +6512,14 @@ var require_safer = __commonJS({ var safer = {}; var key; for (key in buffer) { - if (!buffer.hasOwnProperty(key)) - continue; - if (key === "SlowBuffer" || key === "Buffer") - continue; + if (!buffer.hasOwnProperty(key)) continue; + if (key === "SlowBuffer" || key === "Buffer") continue; safer[key] = buffer[key]; } var Safer = safer.Buffer = {}; for (key in Buffer4) { - if (!Buffer4.hasOwnProperty(key)) - continue; - if (key === "allocUnsafe" || key === "allocUnsafeSlow") - continue; + if (!Buffer4.hasOwnProperty(key)) continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue; Safer[key] = Buffer4[key]; } safer.Buffer.prototype = Buffer4.prototype; @@ -8158,14 +6982,10 @@ var require_utf32 = __commonJS({ return "utf-32be"; } } - if (b[0] !== 0 || b[1] > 16) - invalidBE++; - if (b[3] !== 0 || b[2] > 16) - invalidLE++; - if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) - bmpCharsBE++; - if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) - bmpCharsLE++; + if (b[0] !== 0 || b[1] > 16) invalidBE++; + if (b[3] !== 0 || b[2] > 16) invalidLE++; + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; b.length = 0; charsProcessed++; if (charsProcessed >= 100) { @@ -8174,10 +6994,8 @@ var require_utf32 = __commonJS({ } } } - if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) - return "utf-32be"; - if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) - return "utf-32le"; + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be"; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le"; return defaultEncoding || "utf-32le"; } __name(detectEncoding, "detectEncoding"); @@ -8304,15 +7122,11 @@ var require_utf16 = __commonJS({ b.push(buf[j]); if (b.length === 2) { if (charsProcessed === 0) { - if (b[0] === 255 && b[1] === 254) - return "utf-16le"; - if (b[0] === 254 && b[1] === 255) - return "utf-16be"; + if (b[0] === 255 && b[1] === 254) return "utf-16le"; + if (b[0] === 254 && b[1] === 255) return "utf-16be"; } - if (b[0] === 0 && b[1] !== 0) - asciiCharsBE++; - if (b[0] !== 0 && b[1] === 0) - asciiCharsLE++; + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; b.length = 0; charsProcessed++; if (charsProcessed >= 100) { @@ -8321,10 +7135,8 @@ var require_utf16 = __commonJS({ } } } - if (asciiCharsBE > asciiCharsLE) - return "utf-16be"; - if (asciiCharsBE < asciiCharsLE) - return "utf-16le"; + if (asciiCharsBE > asciiCharsLE) return "utf-16be"; + if (asciiCharsBE < asciiCharsLE) return "utf-16le"; return defaultEncoding || "utf-16le"; } __name(detectEncoding, "detectEncoding"); @@ -9285,10 +8097,8 @@ var require_dbcs_codec = __commonJS({ this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); } this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) - this.defCharSB = this.encodeTable[0]["?"]; - if (this.defCharSB === UNASSIGNED) - this.defCharSB = "?".charCodeAt(0); + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); } __name(DBCSCodec, "DBCSCodec"); DBCSCodec.prototype.encoder = DBCSEncoder; @@ -9370,8 +8180,7 @@ var require_dbcs_codec = __commonJS({ node = this.encodeTableSeq[SEQ_START - bucket[low]]; } else { node = {}; - if (bucket[low] !== UNASSIGNED) - node[DEF_CHAR] = bucket[low]; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; bucket[low] = SEQ_START - this.encodeTableSeq.length; this.encodeTableSeq.push(node); } @@ -9429,8 +8238,7 @@ var require_dbcs_codec = __commonJS({ var newBuf = Buffer4.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i3 = 0, j = 0; while (true) { if (nextChar === -1) { - if (i3 == str.length) - break; + if (i3 == str.length) break; var uCode = str.charCodeAt(i3++); } else { var uCode = nextChar; @@ -10912,12 +9720,12 @@ var require_dbcs_data = __commonJS({ // // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. // - // Overall, it seems that it's a mess :( https://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html "shiftjis": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_shiftjis(); - }, + }, "table"), encodeAdd: { "\xA5": 92, "\u203E": 126 }, encodeSkipVals: [{ from: 60736, to: 63808 }] }, @@ -10933,17 +9741,17 @@ var require_dbcs_data = __commonJS({ "cp932": "shiftjis", "eucjp": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_eucjp(); - }, + }, "table"), encodeAdd: { "\xA5": 92, "\u203E": 126 } }, // TODO: KDDI extension to Shift_JIS // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. // == Chinese/GBK ========================================================== - // https://en.wikipedia.org/wiki/GBK - // We mostly implement W3C recommendation: http://www.w3.org/TR/encoding/#gbk-encoder + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 "gb2312": "cp936", "gb231280": "cp936", @@ -10957,32 +9765,32 @@ var require_dbcs_data = __commonJS({ "936": "cp936", "cp936": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp936(); - } + }, "table") }, // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. "gbk": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp936().concat(require_gbk_added()); - } + }, "table") }, "xgbk": "gbk", "isoir58": "gbk", // GB18030 is an algorithmic extension of GBK. - // Main source: http://www.w3.org/TR/encoding/#gbk-encoder - // https://icu-project.org/docs/papers/gb18030.html - // https://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // https://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 "gb18030": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp936().concat(require_gbk_added()); - }, - gb18030: function() { + }, "table"), + gb18030: /* @__PURE__ */ __name(function() { return require_gb18030_ranges(); - }, + }, "gb18030"), encodeSkipVals: [128], encodeAdd: { "\u20AC": 41699 } }, @@ -10994,9 +9802,9 @@ var require_dbcs_data = __commonJS({ "949": "cp949", "cp949": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp949(); - } + }, "table") }, "cseuckr": "cp949", "csksc56011987": "cp949", @@ -11008,10 +9816,10 @@ var require_dbcs_data = __commonJS({ "ksc5601": "cp949", // == Big5/Taiwan/Hong Kong ================================================ // There are lots of tables for Big5 and cp950. Please see the following links for history: - // https://moztw.org/docs/big5/ https://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. https://me.abelcheung.org/articles/research/what-is-cp951/ + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ // * Big5-2003 (Taiwan standard) almost superset of cp950. // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. @@ -11023,27 +9831,27 @@ var require_dbcs_data = __commonJS({ // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: https://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // https://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, https://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (https://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. "windows950": "cp950", "ms950": "cp950", "950": "cp950", "cp950": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp950(); - } + }, "table") }, // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. "big5": "big5hkscs", "big5hkscs": { type: "_dbcs", - table: function() { + table: /* @__PURE__ */ __name(function() { return require_cp950().concat(require_big5_added()); - }, + }, "table"), encodeSkipVals: [ // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. @@ -11174,8 +9982,7 @@ var require_streams = __commonJS({ return done(new Error("Iconv encoding stream needs strings as its input.")); try { var res = this.conv.write(chunk); - if (res && res.length) - this.push(res); + if (res && res.length) this.push(res); done(); } catch (e2) { done(e2); @@ -11184,8 +9991,7 @@ var require_streams = __commonJS({ IconvLiteEncoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); - if (res && res.length) - this.push(res); + if (res && res.length) this.push(res); done(); } catch (e2) { done(e2); @@ -11217,8 +10023,7 @@ var require_streams = __commonJS({ return done(new Error("Iconv decoding stream needs buffers as its input.")); try { var res = this.conv.write(chunk); - if (res && res.length) - this.push(res, this.encoding); + if (res && res.length) this.push(res, this.encoding); done(); } catch (e2) { done(e2); @@ -11227,8 +10032,7 @@ var require_streams = __commonJS({ IconvLiteDecoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); - if (res && res.length) - this.push(res, this.encoding); + if (res && res.length) this.push(res, this.encoding); done(); } catch (e2) { done(e2); @@ -11254,7 +10058,7 @@ var require_streams = __commonJS({ }); // node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/lib/index.js -var require_lib = __commonJS({ +var require_lib2 = __commonJS({ "node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/lib/index.js"(exports2, module2) { "use strict"; var Buffer4 = require_safer().Buffer; @@ -11373,16 +10177,35 @@ var require_lib = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/string.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/string.js var require_string = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/string.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/string.js"(exports2) { "use strict"; - var Iconv = require_lib(); + var Iconv = require_lib2(); + var { createLRU } = require_lib(); + var decoderCache = createLRU({ + max: 500 + }); exports2.decode = function(buffer, encoding, start, end, options) { if (Buffer.isEncoding(encoding)) { return buffer.toString(encoding, start, end); } - const decoder = Iconv.getDecoder(encoding, options || {}); + let decoder; + if (!options) { + decoder = decoderCache.get(encoding); + if (!decoder) { + decoder = Iconv.getDecoder(encoding); + decoderCache.set(encoding, decoder); + } + } else { + const decoderArgs = { encoding, options }; + const decoderKey = JSON.stringify(decoderArgs); + decoder = decoderCache.get(decoderKey); + if (!decoder) { + decoder = Iconv.getDecoder(decoderArgs.encoding, decoderArgs.options); + decoderCache.set(decoderKey, decoder); + } + } const res = decoder.write(buffer.slice(start, end)); const trail = decoder.end(); return trail ? res + trail : res; @@ -11399,9 +10222,9 @@ var require_string = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/packet.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/packet.js var require_packet = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/packet.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/packet.js"(exports2, module2) { "use strict"; var ErrorCodeToName = require_errors(); var NativeBuffer = require("buffer").Buffer; @@ -11444,12 +10267,12 @@ var require_packet = __commonJS({ return this.buffer.slice(this.start, this.end); } dump() { - // console.log( - // [this.buffer.asciiSlice(this.start, this.end)], - // this.buffer.slice(this.start, this.end), - // this.length(), - // this.sequenceId - // ); + console.log( + [this.buffer.asciiSlice(this.start, this.end)], + this.buffer.slice(this.start, this.end), + this.length(), + this.sequenceId + ); } haveMoreData() { return this.end > this.offset; @@ -11901,6 +10724,15 @@ var require_packet = __commonJS({ __name(parseGeometry, "parseGeometry"); return parseGeometry(); } + parseVector() { + const bufLen = this.readLengthCodedNumber(); + const vectorEnd = this.offset + bufLen; + const result = []; + while (this.offset < vectorEnd && this.offset < this.end) { + result.push(this.readFloat()); + } + return result; + } parseDate(timezone) { const strLen = this.readLengthCodedNumber(); if (strLen === null) { @@ -12177,9 +11009,9 @@ var require_packet = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packet_parser.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packet_parser.js var require_packet_parser = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packet_parser.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packet_parser.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var MAX_PACKET_LENGTH = 16777215; @@ -12347,9 +11179,9 @@ var require_packet_parser = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_next_factor.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_next_factor.js var require_auth_next_factor = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_next_factor.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_next_factor.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var _AuthNextFactor = class _AuthNextFactor { @@ -12383,9 +11215,9 @@ var require_auth_next_factor = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_request.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_request.js var require_auth_switch_request = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_request.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_request.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var _AuthSwitchRequest = class _AuthSwitchRequest { @@ -12419,9 +11251,9 @@ var require_auth_switch_request = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js var require_auth_switch_request_more_data = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var _AuthSwitchRequestMoreData = class _AuthSwitchRequestMoreData { @@ -12452,9 +11284,9 @@ var require_auth_switch_request_more_data = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_response.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_response.js var require_auth_switch_response = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/auth_switch_response.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/auth_switch_response.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var _AuthSwitchResponse = class _AuthSwitchResponse { @@ -12483,9 +11315,9 @@ var require_auth_switch_response = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/types.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/types.js var require_types = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/types.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/types.js"(exports2, module2) { "use strict"; module2.exports = { 0: "DECIMAL", @@ -12561,6 +11393,7 @@ var require_types = __commonJS({ module2.exports.NEWDATE = 14; module2.exports.VARCHAR = 15; module2.exports.BIT = 16; + module2.exports.VECTOR = 242; module2.exports.JSON = 245; module2.exports.NEWDECIMAL = 246; module2.exports.ENUM = 247; @@ -12575,9 +11408,9 @@ var require_types = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binary_row.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binary_row.js var require_binary_row = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binary_row.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binary_row.js"(exports2, module2) { "use strict"; var Types = require_types(); var Packet = require_packet(); @@ -12663,9 +11496,9 @@ var require_binary_row = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/commands.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/commands.js var require_commands = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/commands.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/commands.js"(exports2, module2) { "use strict"; module2.exports = { SLEEP: 0, @@ -12711,9 +11544,9 @@ var require_commands = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binlog_dump.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binlog_dump.js var require_binlog_dump = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binlog_dump.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binlog_dump.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var CommandCodes = require_commands(); @@ -12743,9 +11576,9 @@ var require_binlog_dump = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/client.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/client.js var require_client = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/client.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/client.js"(exports2) { "use strict"; exports2.LONG_PASSWORD = 1; exports2.FOUND_ROWS = 2; @@ -12778,9 +11611,9 @@ var require_client = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_41.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_41.js var require_auth_41 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_41.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_41.js"(exports2) { "use strict"; var crypto = require("crypto"); function sha1(msg, msg1, msg2) { @@ -12841,9 +11674,9 @@ var require_auth_41 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/charset_encodings.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/charset_encodings.js var require_charset_encodings = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/charset_encodings.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/charset_encodings.js"(exports2, module2) { "use strict"; module2.exports = [ "utf8", @@ -13159,9 +11992,9 @@ var require_charset_encodings = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/change_user.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/change_user.js var require_change_user = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/change_user.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/change_user.js"(exports2, module2) { "use strict"; var CommandCode = require_commands(); var ClientConstants = require_client(); @@ -13256,9 +12089,9 @@ var require_change_user = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/close_statement.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/close_statement.js var require_close_statement = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/close_statement.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/close_statement.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var CommandCodes = require_commands(); @@ -13281,9 +12114,9 @@ var require_close_statement = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/field_flags.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/field_flags.js var require_field_flags = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/field_flags.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/field_flags.js"(exports2) { "use strict"; exports2.NOT_NULL = 1; exports2.PRI_KEY = 2; @@ -13303,9 +12136,9 @@ var require_field_flags = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/column_definition.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/column_definition.js var require_column_definition = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/column_definition.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/column_definition.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var StringParser = require_string(); @@ -13520,7 +12353,7 @@ var require_column_definition = __commonJS({ var ColumnDefinition = _ColumnDefinition; var addString = /* @__PURE__ */ __name(function(name) { Object.defineProperty(ColumnDefinition.prototype, name, { - get: function() { + get: /* @__PURE__ */ __name(function() { const start = this[`_${name}Start`]; const end = start + this[`_${name}Length`]; const val = StringParser.decode( @@ -13536,7 +12369,7 @@ var require_column_definition = __commonJS({ enumerable: false }); return val; - } + }, "get") }); }, "addString"); addString("catalog"); @@ -13548,9 +12381,9 @@ var require_column_definition = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/cursor.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/cursor.js var require_cursor = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/cursor.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/cursor.js"(exports2, module2) { "use strict"; module2.exports = { NO_CURSOR: 0, @@ -13561,9 +12394,9 @@ var require_cursor = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/execute.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/execute.js var require_execute = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/execute.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/execute.js"(exports2, module2) { "use strict"; var CursorType = require_cursor(); var CommandCodes = require_commands(); @@ -13731,9 +12564,9 @@ var require_execute = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/handshake.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/handshake.js var require_handshake = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/handshake.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/handshake.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var ClientConstants = require_client(); @@ -13835,9 +12668,9 @@ var require_handshake = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/handshake_response.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/handshake_response.js var require_handshake_response = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/handshake_response.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/handshake_response.js"(exports2, module2) { "use strict"; var ClientConstants = require_client(); var CharsetToEncoding = require_charset_encodings(); @@ -13978,9 +12811,9 @@ var require_handshake_response = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/prepare_statement.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/prepare_statement.js var require_prepare_statement = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/prepare_statement.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/prepare_statement.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var CommandCodes = require_commands(); @@ -14009,9 +12842,9 @@ var require_prepare_statement = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/prepared_statement_header.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/prepared_statement_header.js var require_prepared_statement_header = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/prepared_statement_header.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/prepared_statement_header.js"(exports2, module2) { "use strict"; var _PreparedStatementHeader = class _PreparedStatementHeader { constructor(packet) { @@ -14029,9 +12862,9 @@ var require_prepared_statement_header = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/query.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/query.js var require_query = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/query.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/query.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var CommandCode = require_commands(); @@ -14060,9 +12893,9 @@ var require_query = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/register_slave.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/register_slave.js var require_register_slave = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/register_slave.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/register_slave.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var CommandCodes = require_commands(); @@ -14102,9 +12935,9 @@ var require_register_slave = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/server_status.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/server_status.js var require_server_status = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/server_status.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/server_status.js"(exports2) { "use strict"; exports2.SERVER_STATUS_IN_TRANS = 1; exports2.SERVER_STATUS_AUTOCOMMIT = 2; @@ -14123,9 +12956,9 @@ var require_server_status = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/encoding_charset.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/encoding_charset.js var require_encoding_charset = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/encoding_charset.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/encoding_charset.js"(exports2, module2) { "use strict"; module2.exports = { big5: 1, @@ -14174,9 +13007,9 @@ var require_encoding_charset = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/session_track.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/session_track.js var require_session_track = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/session_track.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/session_track.js"(exports2) { "use strict"; exports2.SYSTEM_VARIABLES = 0; exports2.SCHEMA = 1; @@ -14189,9 +13022,9 @@ var require_session_track = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/resultset_header.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/resultset_header.js var require_resultset_header = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/resultset_header.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/resultset_header.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var ClientConstants = require_client(); @@ -14301,9 +13134,9 @@ var require_resultset_header = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/ssl_request.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/ssl_request.js var require_ssl_request = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/ssl_request.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/ssl_request.js"(exports2, module2) { "use strict"; var ClientConstants = require_client(); var Packet = require_packet(); @@ -14330,9 +13163,9 @@ var require_ssl_request = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/text_row.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/text_row.js var require_text_row = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/text_row.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/text_row.js"(exports2, module2) { "use strict"; var Packet = require_packet(); var _TextRow = class _TextRow { @@ -14379,9 +13212,9 @@ var require_text_row = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/index.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/index.js var require_packets = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/index.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/index.js"(exports2, module2) { "use strict"; var process2 = require("process"); var AuthNextFactor = require_auth_next_factor(); @@ -14515,9 +13348,9 @@ var require_packets = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/command.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/command.js var require_command = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/command.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/command.js"(exports2, module2) { "use strict"; var EventEmitter = require("events").EventEmitter; var Timers = require("timers"); @@ -14571,9 +13404,9 @@ var require_command = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/sha256_password.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/sha256_password.js var require_sha256_password = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/sha256_password.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/sha256_password.js"(exports2, module2) { "use strict"; var PLUGIN_NAME = "sha256_password"; var crypto = require("crypto"); @@ -14626,9 +13459,9 @@ var require_sha256_password = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js var require_caching_sha2_password = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js"(exports2, module2) { "use strict"; var PLUGIN_NAME = "caching_sha2_password"; var crypto = require("crypto"); @@ -14661,7 +13494,10 @@ var require_caching_sha2_password = __commonJS({ Buffer.from(`${password}\0`, "utf8"), scramble ); - return crypto.publicEncrypt(key, stage1); + return crypto.publicEncrypt({ + key, + padding: crypto.constants.RSA_PKCS1_OAEP_PADDING + }, stage1); } __name(encrypt, "encrypt"); module2.exports = (pluginOptions = {}) => ({ connection }) => { @@ -14717,9 +13553,9 @@ var require_caching_sha2_password = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js var require_mysql_native_password = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js"(exports2, module2) { "use strict"; var auth41 = require_auth_41(); module2.exports = (pluginOptions) => ({ connection, command }) => { @@ -14748,9 +13584,9 @@ var require_mysql_native_password = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js var require_mysql_clear_password = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js"(exports2, module2) { "use strict"; function bufferFromStr(str) { return Buffer.from(`${str}\0`); @@ -14766,9 +13602,9 @@ var require_mysql_clear_password = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/auth_switch.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/auth_switch.js var require_auth_switch = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/auth_switch.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/auth_switch.js"(exports2, module2) { "use strict"; var Packets = require_packets(); var sha256_password = require_sha256_password(); @@ -14949,13 +13785,13 @@ var require_seq_queue = __commonJS({ }, timeout); try { task.fn({ - done: function() { + done: /* @__PURE__ */ __name(function() { var res = task.id === self2.curId; process.nextTick(function() { self2._next(task.id); }); return res; - } + }, "done") }); } catch (err) { self2.emit("error", err, task); @@ -14982,9 +13818,9 @@ var require_seq_queue2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/compressed_protocol.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/compressed_protocol.js var require_compressed_protocol = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/compressed_protocol.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/compressed_protocol.js"(exports2, module2) { "use strict"; var zlib2 = require("zlib"); var PacketParser = require_packet_parser(); @@ -15087,9 +13923,9 @@ var require_compressed_protocol = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/client_handshake.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/client_handshake.js var require_client_handshake = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/client_handshake.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/client_handshake.js"(exports2, module2) { "use strict"; var Command = require_command(); var Packets = require_packets(); @@ -15125,11 +13961,11 @@ var require_client_handshake = __commonJS({ } sendCredentials(connection) { if (connection.config.debug) { - // console.log( - // "Sending handshake packet: flags:%d=(%s)", - // this.clientFlags, - // flagNames(this.clientFlags).join(", ") - // ); + console.log( + "Sending handshake packet: flags:%d=(%s)", + this.clientFlags, + flagNames(this.clientFlags).join(", ") + ); } this.user = connection.config.user; this.password = connection.config.password; @@ -15179,11 +14015,11 @@ var require_client_handshake = __commonJS({ }); this.handshake = Packets.Handshake.fromPacket(helloPacket); if (connection.config.debug) { - // console.log( - // "Server hello packet: capability flags:%d=(%s)", - // this.handshake.capabilityFlags, - // flagNames(this.handshake.capabilityFlags).join(", ") - // ); + console.log( + "Server hello packet: capability flags:%d=(%s)", + this.handshake.capabilityFlags, + flagNames(this.handshake.capabilityFlags).join(", ") + ); } connection.serverCapabilityFlags = this.handshake.capabilityFlags; connection.serverEncoding = CharsetToEncoding[this.handshake.characterSet]; @@ -15195,7 +14031,7 @@ var require_client_handshake = __commonJS({ this.clientFlags = this.clientFlags | connection.config.compress; if (connection.config.ssl) { if (!serverSSLSupport) { - const err = new Error("Server does not support secure connnection"); + const err = new Error("Server does not support secure connection"); err.code = "HANDSHAKE_NO_SSL_SUPPORT"; err.fatal = true; this.emit("error", err); @@ -15276,9 +14112,9 @@ var require_client_handshake = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/server_handshake.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/server_handshake.js var require_server_handshake = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/server_handshake.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/server_handshake.js"(exports2, module2) { "use strict"; var CommandCode = require_commands(); var Errors = require_errors(); @@ -15384,8 +14220,7 @@ var require_server_handshake = __commonJS({ connection.emit("stmt_prepare", query); } else if (this._isStatement(query, "EXECUTE")) { connection.emit("stmt_execute", null, null, null, null, query); - } else - connection.emit("query", query); + } else connection.emit("query", query); } else { connection.writeError({ code: Errors.HA_ERR_INTERNAL_ERROR, @@ -15418,7 +14253,7 @@ var require_server_handshake = __commonJS({ if (connection.listeners("packet").length) { connection.emit("packet", packet.clone(), knownCommand, commandCode); } else if (!knownCommand) { - // console.log("Unknown command:", commandCode); + console.log("Unknown command:", commandCode); } return _ServerHandshake.prototype.dispatchCommands; } @@ -15429,9 +14264,9 @@ var require_server_handshake = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/charsets.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/charsets.js var require_charsets = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/charsets.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/charsets.js"(exports2) { "use strict"; exports2.BIG5_CHINESE_CI = 1; exports2.LATIN2_CZECH_CS = 2; @@ -15749,9 +14584,9 @@ var require_charsets = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/helpers.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/helpers.js var require_helpers = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/helpers.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/helpers.js"(exports2) { "use strict"; function srcEscape(str) { return JSON.stringify({ @@ -15768,15 +14603,19 @@ var require_helpers = __commonJS({ } catch (err) { highlightFn = /* @__PURE__ */ __name((text) => { if (!cardinalRecommended) { - // console.log("For nicer debug output consider install cardinal@^2.0.0"); + console.log("For nicer debug output consider install cardinal@^2.0.0"); cardinalRecommended = true; } return text; }, "highlightFn"); } function printDebugWithCode(msg, code) { - // console.log(`${msg}:`); - // console.log(`${highlightFn(code)}`); + console.log(` + +${msg}: +`); + console.log(`${highlightFn(code)} +`); } __name(printDebugWithCode, "printDebugWithCode"); exports2.printDebugWithCode = printDebugWithCode; @@ -15788,6 +14627,23 @@ var require_helpers = __commonJS({ } __name(typeMatch, "typeMatch"); exports2.typeMatch = typeMatch; + var privateObjectProps = /* @__PURE__ */ new Set([ + "__defineGetter__", + "__defineSetter__", + "__lookupGetter__", + "__lookupSetter__", + "__proto__" + ]); + exports2.privateObjectProps = privateObjectProps; + var fieldEscape = /* @__PURE__ */ __name((field) => { + if (privateObjectProps.has(field)) { + throw new Error( + `The field name (${field}) can't be the same as an object's private property.` + ); + } + return srcEscape(field); + }, "fieldEscape"); + exports2.fieldEscape = fieldEscape; } }); @@ -15871,15 +14727,15 @@ var require_generate_function = __commonJS({ return isProperty(name) && !RESERVED_MAP.hasOwnProperty(name); }, "isVariable"); var formats = { - s: function(s2) { + s: /* @__PURE__ */ __name(function(s2) { return "" + s2; - }, - d: function(d) { + }, "s"), + d: /* @__PURE__ */ __name(function(d) { return "" + Number(d); - }, - o: function(o) { + }, "d"), + o: /* @__PURE__ */ __name(function(o) { return JSON.stringify(o); - } + }, "o") }; var genfun = /* @__PURE__ */ __name(function() { var lines = []; @@ -15887,8 +14743,7 @@ var require_generate_function = __commonJS({ var vars = {}; var push = /* @__PURE__ */ __name(function(str) { var spaces = ""; - while (spaces.length < indent * 2) - spaces += " "; + while (spaces.length < indent * 2) spaces += " "; lines.push(spaces + str); }, "push"); var pushLine = /* @__PURE__ */ __name(function(line2) { @@ -15911,8 +14766,7 @@ var require_generate_function = __commonJS({ push(line2); }, "pushLine"); var line = /* @__PURE__ */ __name(function(fmt) { - if (!fmt) - return line; + if (!fmt) return line; if (arguments.length === 1 && fmt.indexOf("\n") > -1) { var lines2 = fmt.trim().split("\n"); for (var i3 = 0; i3 < lines2.length; i3++) { @@ -15926,10 +14780,8 @@ var require_generate_function = __commonJS({ line.scope = {}; line.formats = formats; line.sym = function(name) { - if (!name || !isVariable(name)) - name = "tmp"; - if (!vars[name]) - vars[name] = 0; + if (!name || !isVariable(name)) name = "tmp"; + if (!vars[name]) vars[name] = 0; return name + (vars[name]++ || ""); }; line.property = function(obj, name) { @@ -15938,20 +14790,17 @@ var require_generate_function = __commonJS({ obj = ""; } name = name + ""; - if (isProperty(name)) - return obj ? obj + "." + name : name; + if (isProperty(name)) return obj ? obj + "." + name : name; return obj ? obj + "[" + JSON.stringify(name) + "]" : JSON.stringify(name); }; line.toString = function() { return lines.join("\n"); }; line.toFunction = function(scope) { - if (!scope) - scope = {}; + if (!scope) scope = {}; var src = "return (" + line.toString() + ")"; Object.keys(line.scope).forEach(function(key) { - if (!scope[key]) - scope[key] = line.scope[key]; + if (!scope[key]) scope[key] = line.scope[key]; }); var keys = Object.keys(scope).map(function(key) { return key; @@ -15961,8 +14810,7 @@ var require_generate_function = __commonJS({ }); return Function.apply(null, keys.concat(src)).apply(null, vals); }; - if (arguments.length) - line.apply(null, arguments); + if (arguments.length) line.apply(null, arguments); return line; }, "genfun"); genfun.formats = formats; @@ -15970,21 +14818,40 @@ var require_generate_function = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/parser_cache.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/parser_cache.js var require_parser_cache = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/parser_cache.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/parser_cache.js"(exports2, module2) { "use strict"; - var LRU = require_index_cjs().default; - var parserCache = new LRU({ + var { createLRU } = require_lib(); + var parserCache = createLRU({ max: 15e3 }); function keyFromFields(type, fields, options, config) { - let res = `${type}/${typeof options.nestTables}/${options.nestTables}/${options.rowsAsArray}/${options.supportBigNumbers || config.supportBigNumbers}/${options.bigNumberStrings || config.bigNumberStrings}/${typeof options.typeCast}/${options.timezone || config.timezone}/${options.decimalNumbers}/${options.dateStrings}`; + const res = [ + type, + typeof options.nestTables, + options.nestTables, + Boolean(options.rowsAsArray), + Boolean(options.supportBigNumbers || config.supportBigNumbers), + Boolean(options.bigNumberStrings || config.bigNumberStrings), + typeof options.typeCast, + options.timezone || config.timezone, + Boolean(options.decimalNumbers), + options.dateStrings + ]; for (let i2 = 0; i2 < fields.length; ++i2) { const field = fields[i2]; - res += `/${field.name}:${field.columnType}:${field.length}:${field.schema}:${field.table}:${field.flags}:${field.characterSet}`; + res.push([ + field.name, + field.columnType, + field.length, + field.schema, + field.table, + field.flags, + field.characterSet + ]); } - return res; + return JSON.stringify(res, null, 0); } __name(keyFromFields, "keyFromFields"); function getParser(type, fields, options, config, compiler) { @@ -15999,7 +14866,7 @@ var require_parser_cache = __commonJS({ } __name(getParser, "getParser"); function setMaxCache(max) { - parserCache.max = max; + parserCache.resize(max); } __name(setMaxCache, "setMaxCache"); function clearCache() { @@ -16009,14 +14876,15 @@ var require_parser_cache = __commonJS({ module2.exports = { getParser, setMaxCache, - clearCache + clearCache, + _keyFromFields: keyFromFields }; } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/text_parser.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/text_parser.js var require_text_parser = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/text_parser.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/text_parser.js"(exports2, module2) { "use strict"; var Types = require_types(); var Charsets = require_charsets(); @@ -16028,8 +14896,12 @@ var require_text_parser = __commonJS({ typeNames[Types[t2]] = t2; } function readCodeFor(type, charset, encodingExpr, config, options) { - const supportBigNumbers = options.supportBigNumbers || config.supportBigNumbers; - const bigNumberStrings = options.bigNumberStrings || config.bigNumberStrings; + const supportBigNumbers = Boolean( + options.supportBigNumbers || config.supportBigNumbers + ); + const bigNumberStrings = Boolean( + options.bigNumberStrings || config.bigNumberStrings + ); const timezone = options.timezone || config.timezone; const dateStrings = options.dateStrings || config.dateStrings; switch (type) { @@ -16059,19 +14931,21 @@ var require_text_parser = __commonJS({ if (helpers.typeMatch(type, dateStrings, Types)) { return 'packet.readLengthCodedString("ascii")'; } - return `packet.parseDate('${timezone}')`; + return `packet.parseDate(${helpers.srcEscape(timezone)})`; case Types.DATETIME: case Types.TIMESTAMP: if (helpers.typeMatch(type, dateStrings, Types)) { return 'packet.readLengthCodedString("ascii")'; } - return `packet.parseDateTime('${timezone}')`; + return `packet.parseDateTime(${helpers.srcEscape(timezone)})`; case Types.TIME: return 'packet.readLengthCodedString("ascii")'; case Types.GEOMETRY: return "packet.parseGeometryValue()"; + case Types.VECTOR: + return "packet.parseVector()"; case Types.JSON: - return 'JSON.parse(packet.readLengthCodedString("utf8"))'; + return config.jsonStrings ? 'packet.readLengthCodedString("utf8")' : 'JSON.parse(packet.readLengthCodedString("utf8"))'; default: if (charset === Charsets.BINARY) { return "packet.readLengthCodedBuffer()"; @@ -16092,25 +14966,25 @@ var require_text_parser = __commonJS({ table: field.table, name: field.name, charset: field.characterSet, - string: function(encoding = field.encoding) { + string: /* @__PURE__ */ __name(function(encoding = field.encoding) { if (field.columnType === Types.JSON && encoding === field.encoding) { - console.warn(`typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\``); + console.warn( + `typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\`` + ); } return _this.packet.readLengthCodedString(encoding); - }, - buffer: function() { + }, "string"), + buffer: /* @__PURE__ */ __name(function() { return _this.packet.readLengthCodedBuffer(); - }, - geometry: function() { + }, "buffer"), + geometry: /* @__PURE__ */ __name(function() { return _this.packet.parseGeometryValue(); - } + }, "geometry") }; } __name(wrap, "wrap"); const parserFn = genFunc(); - parserFn("(function () {")( - "return class TextRow {" - ); + parserFn("(function () {")("return class TextRow {"); parserFn("constructor(fields) {"); if (typeof options.typeCast === "function") { parserFn("const _this = this;"); @@ -16134,20 +15008,20 @@ var require_text_parser = __commonJS({ } resultTablesArray = Object.keys(resultTables); for (let i2 = 0; i2 < resultTablesArray.length; i2++) { - parserFn(`result[${helpers.srcEscape(resultTablesArray[i2])}] = {};`); + parserFn(`result[${helpers.fieldEscape(resultTablesArray[i2])}] = {};`); } } let lvalue = ""; let fieldName = ""; + let tableName = ""; for (let i2 = 0; i2 < fields.length; i2++) { - fieldName = helpers.srcEscape(fields[i2].name); - parserFn(`// ${fieldName}: ${typeNames[fields[i2].columnType]}`); + fieldName = helpers.fieldEscape(fields[i2].name); if (typeof options.nestTables === "string") { - lvalue = `result[${helpers.srcEscape( - fields[i2].table + options.nestTables + fields[i2].name - )}]`; + lvalue = `result[${helpers.fieldEscape(fields[i2].table + options.nestTables + fields[i2].name)}]`; } else if (options.nestTables === true) { - lvalue = `result[${helpers.srcEscape(fields[i2].table)}][${fieldName}]`; + tableName = helpers.fieldEscape(fields[i2].table); + parserFn(`if (!result[${tableName}]) result[${tableName}] = {};`); + lvalue = `result[${tableName}][${fieldName}]`; } else if (options.rowsAsArray) { lvalue = `result[${i2.toString(10)}]`; } else { @@ -16165,7 +15039,9 @@ var require_text_parser = __commonJS({ options ); if (typeof options.typeCast === "function") { - parserFn(`${lvalue} = options.typeCast(this.wrap${i2}, function() { return ${readCode} });`); + parserFn( + `${lvalue} = options.typeCast(this.wrap${i2}, function() { return ${readCode} });` + ); } else { parserFn(`${lvalue} = ${readCode};`); } @@ -16194,9 +15070,9 @@ var require_text_parser = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/query.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/query.js var require_query2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/query.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/query.js"(exports2, module2) { "use strict"; var process2 = require("process"); var Timers = require("timers"); @@ -16229,14 +15105,14 @@ var require_query2 = __commonJS({ this._connection = null; } then() { - const err = "You have tried to call .then(), .catch(), or invoked await on the result of query that is not a promise, which is a programming error. Try calling con.promise().query(), or require('mysql2/promise') instead of 'mysql2' for a promise-compatible version of the query interface. To learn how to use async/await or Promises check out documentation at https://www.npmjs.com/package/mysql2#using-promise-wrapper, or the mysql2 documentation at https://github.com/sidorares/node-mysql2/tree/master/documentation/en/Promise-Wrapper.md"; - // console.log(err); + const err = "You have tried to call .then(), .catch(), or invoked await on the result of query that is not a promise, which is a programming error. Try calling con.promise().query(), or require('mysql2/promise') instead of 'mysql2' for a promise-compatible version of the query interface. To learn how to use async/await or Promises check out documentation at https://sidorares.github.io/node-mysql2/docs#using-promise-wrapper, or the mysql2 documentation at https://sidorares.github.io/node-mysql2/docs/documentation/promise-wrapper"; + console.log(err); throw new Error(err); } /* eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }] */ start(_packet, connection) { if (connection.config.debug) { - // console.log("Sending query command: %s", this.sql); + console.log(" Sending query command: %s", this.sql); } this._connection = connection; this.options = Object.assign({}, connection.config, this._queryOptions); @@ -16301,7 +15177,9 @@ var require_query2 = __commonJS({ const rs = new Packets.ResultSetHeader(packet, connection); this._fieldCount = rs.fieldCount; if (connection.config.debug) { - // console.log(`Resultset header received, expecting ${rs.fieldCount} column definition packets`); + console.log( + ` Resultset header received, expecting ${rs.fieldCount} column definition packets` + ); } if (this._fieldCount === 0) { return this.doneInsert(rs); @@ -16373,10 +15251,10 @@ var require_query2 = __commonJS({ ); this._fields[this._resultIndex].push(field); if (connection.config.debug) { - // console.log(" Column definition:"); - // console.log(` name: ${field.name}`); - // console.log(` type: ${field.columnType}`); - // console.log(` flags: ${field.flags}`); + console.log(" Column definition:"); + console.log(` name: ${field.name}`); + console.log(` type: ${field.columnType}`); + console.log(` flags: ${field.flags}`); } } if (this._receivedFieldsCount === this._fieldCount) { @@ -16418,7 +15296,7 @@ var require_query2 = __commonJS({ if (this.onResult) { this._rows[this._resultIndex].push(row); } else { - this.emit("result", row); + this.emit("result", row, this._resultIndex); } return _Query.prototype.row; } @@ -16433,22 +15311,24 @@ var require_query2 = __commonJS({ stream._read = () => { this._connection && this._connection.resume(); }; - this.on("result", (row) => { + this.on("result", (row, resultSetIndex) => { if (!stream.push(row)) { this._connection.pause(); } - stream.emit("result", row); + stream.emit("result", row, resultSetIndex); }); this.on("error", (err) => { stream.emit("error", err); }); this.on("end", () => { stream.push(null); - stream.emit("close"); }); this.on("fields", (fields) => { stream.emit("fields", fields); }); + stream.on("end", () => { + stream.emit("close"); + }); return stream; } _setTimeout() { @@ -16483,9 +15363,9 @@ var require_query2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/close_statement.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/close_statement.js var require_close_statement2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/close_statement.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/close_statement.js"(exports2, module2) { "use strict"; var Command = require_command(); var Packets = require_packets(); @@ -16505,9 +15385,9 @@ var require_close_statement2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/binary_parser.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/binary_parser.js var require_binary_parser = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/parsers/binary_parser.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/parsers/binary_parser.js"(exports2, module2) { "use strict"; var FieldFlags = require_field_flags(); var Charsets = require_charsets(); @@ -16520,8 +15400,12 @@ var require_binary_parser = __commonJS({ typeNames[Types[t2]] = t2; } function readCodeFor(field, config, options, fieldNum) { - const supportBigNumbers = options.supportBigNumbers || config.supportBigNumbers; - const bigNumberStrings = options.bigNumberStrings || config.bigNumberStrings; + const supportBigNumbers = Boolean( + options.supportBigNumbers || config.supportBigNumbers + ); + const bigNumberStrings = Boolean( + options.bigNumberStrings || config.bigNumberStrings + ); const timezone = options.timezone || config.timezone; const dateStrings = options.dateStrings || config.dateStrings; const unsigned = field.flags & FieldFlags.UNSIGNED; @@ -16546,9 +15430,9 @@ var require_binary_parser = __commonJS({ case Types.TIMESTAMP: case Types.NEWDATE: if (helpers.typeMatch(field.columnType, dateStrings, Types)) { - return `packet.readDateTimeString(${field.decimals});`; + return `packet.readDateTimeString(${parseInt(field.decimals, 10)});`; } - return `packet.readDateTime('${timezone}');`; + return `packet.readDateTime(${helpers.srcEscape(timezone)});`; case Types.TIME: return "packet.readTimeString()"; case Types.DECIMAL: @@ -16559,8 +15443,10 @@ var require_binary_parser = __commonJS({ return 'packet.readLengthCodedString("ascii");'; case Types.GEOMETRY: return "packet.parseGeometryValue();"; + case Types.VECTOR: + return "packet.parseVector()"; case Types.JSON: - return 'JSON.parse(packet.readLengthCodedString("utf8"));'; + return config.jsonStrings ? 'packet.readLengthCodedString("utf8")' : 'JSON.parse(packet.readLengthCodedString("utf8"));'; case Types.LONGLONG: if (!supportBigNumbers) { return unsigned ? "packet.readInt64JSNumber();" : "packet.readSInt64JSNumber();"; @@ -16579,8 +15465,44 @@ var require_binary_parser = __commonJS({ __name(readCodeFor, "readCodeFor"); function compile(fields, options, config) { const parserFn = genFunc(); - let i2 = 0; const nullBitmapLength = Math.floor((fields.length + 7 + 2) / 8); + function wrap(field, packet) { + return { + type: typeNames[field.columnType], + length: field.columnLength, + db: field.schema, + table: field.table, + name: field.name, + charset: field.characterSet, + string: /* @__PURE__ */ __name(function(encoding = field.encoding) { + if (field.columnType === Types.JSON && encoding === field.encoding) { + console.warn( + `typeCast: JSON column "${field.name}" is interpreted as BINARY by default, recommended to manually set utf8 encoding: \`field.string("utf8")\`` + ); + } + if ([Types.DATETIME, Types.NEWDATE, Types.TIMESTAMP, Types.DATE].includes( + field.columnType + )) { + return packet.readDateTimeString(parseInt(field.decimals, 10)); + } + if (field.columnType === Types.TINY) { + const unsigned = field.flags & FieldFlags.UNSIGNED; + return String(unsigned ? packet.readInt8() : packet.readSInt8()); + } + if (field.columnType === Types.TIME) { + return packet.readTimeString(); + } + return packet.readLengthCodedString(encoding); + }, "string"), + buffer: /* @__PURE__ */ __name(function() { + return packet.readLengthCodedBuffer(); + }, "buffer"), + geometry: /* @__PURE__ */ __name(function() { + return packet.parseGeometryValue(); + }, "geometry") + }; + } + __name(wrap, "wrap"); parserFn("(function(){"); parserFn("return class BinaryRow {"); parserFn("constructor() {"); @@ -16591,19 +15513,11 @@ var require_binary_parser = __commonJS({ } else { parserFn("const result = {};"); } - const resultTables = {}; - let resultTablesArray = []; - if (options.nestTables === true) { - for (i2 = 0; i2 < fields.length; i2++) { - resultTables[fields[i2].table] = 1; - } - resultTablesArray = Object.keys(resultTables); - for (i2 = 0; i2 < resultTablesArray.length; i2++) { - parserFn(`result[${helpers.srcEscape(resultTablesArray[i2])}] = {};`); - } + if (typeof config.typeCast === "function" && typeof options.typeCast !== "function") { + options.typeCast = config.typeCast; } parserFn("packet.readInt8();"); - for (i2 = 0; i2 < nullBitmapLength; ++i2) { + for (let i2 = 0; i2 < nullBitmapLength; ++i2) { parserFn(`const nullBitmaskByte${i2} = packet.readInt8();`); } let lvalue = ""; @@ -16611,26 +15525,37 @@ var require_binary_parser = __commonJS({ let nullByteIndex = 0; let fieldName = ""; let tableName = ""; - for (i2 = 0; i2 < fields.length; i2++) { - fieldName = helpers.srcEscape(fields[i2].name); - parserFn(`// ${fieldName}: ${typeNames[fields[i2].columnType]}`); + for (let i2 = 0; i2 < fields.length; i2++) { + fieldName = helpers.fieldEscape(fields[i2].name); if (typeof options.nestTables === "string") { - tableName = helpers.srcEscape(fields[i2].table); - lvalue = `result[${helpers.srcEscape( - fields[i2].table + options.nestTables + fields[i2].name - )}]`; + lvalue = `result[${helpers.fieldEscape(fields[i2].table + options.nestTables + fields[i2].name)}]`; } else if (options.nestTables === true) { - tableName = helpers.srcEscape(fields[i2].table); + tableName = helpers.fieldEscape(fields[i2].table); + parserFn(`if (!result[${tableName}]) result[${tableName}] = {};`); lvalue = `result[${tableName}][${fieldName}]`; } else if (options.rowsAsArray) { lvalue = `result[${i2.toString(10)}]`; } else { - lvalue = `result[${helpers.srcEscape(fields[i2].name)}]`; + lvalue = `result[${fieldName}]`; } - parserFn(`if (nullBitmaskByte${nullByteIndex} & ${currentFieldNullBit})`); + parserFn(`if (nullBitmaskByte${nullByteIndex} & ${currentFieldNullBit}) `); parserFn(`${lvalue} = null;`); - parserFn("else"); - parserFn(`${lvalue} = ${readCodeFor(fields[i2], config, options, i2)}`); + parserFn("else {"); + if (options.typeCast === false) { + parserFn(`${lvalue} = packet.readLengthCodedBuffer();`); + } else { + const fieldWrapperVar = `fieldWrapper${i2}`; + parserFn(`const ${fieldWrapperVar} = wrap(fields[${i2}], packet);`); + const readCode = readCodeFor(fields[i2], config, options, i2); + if (typeof options.typeCast === "function") { + parserFn( + `${lvalue} = options.typeCast(${fieldWrapperVar}, function() { return ${readCode} });` + ); + } else { + parserFn(`${lvalue} = ${readCode};`); + } + } + parserFn("}"); currentFieldNullBit *= 2; if (currentFieldNullBit === 256) { currentFieldNullBit = 1; @@ -16646,7 +15571,7 @@ var require_binary_parser = __commonJS({ parserFn.toString() ); } - return parserFn.toFunction(); + return parserFn.toFunction({ wrap }); } __name(compile, "compile"); function getBinaryParser(fields, options, config) { @@ -16657,9 +15582,9 @@ var require_binary_parser = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/execute.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/execute.js var require_execute2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/execute.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/execute.js"(exports2, module2) { "use strict"; var Command = require_command(); var Query = require_query2(); @@ -16750,9 +15675,9 @@ var require_execute2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/prepare.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/prepare.js var require_prepare = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/prepare.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/prepare.js"(exports2, module2) { "use strict"; var Packets = require_packets(); var Command = require_command(); @@ -16886,9 +15811,9 @@ var require_prepare = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/ping.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/ping.js var require_ping = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/ping.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/ping.js"(exports2, module2) { "use strict"; var Command = require_command(); var CommandCode = require_commands(); @@ -16921,9 +15846,9 @@ var require_ping = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/register_slave.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/register_slave.js var require_register_slave2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/register_slave.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/register_slave.js"(exports2, module2) { "use strict"; var Command = require_command(); var Packets = require_packets(); @@ -16951,9 +15876,9 @@ var require_register_slave2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binlog_query_statusvars.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binlog_query_statusvars.js var require_binlog_query_statusvars = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/packets/binlog_query_statusvars.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/packets/binlog_query_statusvars.js"(exports2, module2) { "use strict"; var keys = { FLAGS2: 0, @@ -17063,9 +15988,9 @@ var require_binlog_query_statusvars = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/binlog_dump.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/binlog_dump.js var require_binlog_dump2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/binlog_dump.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/binlog_dump.js"(exports2, module2) { "use strict"; var Command = require_command(); var Packets = require_packets(); @@ -17172,9 +16097,9 @@ var require_binlog_dump2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/change_user.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/change_user.js var require_change_user2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/change_user.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/change_user.js"(exports2, module2) { "use strict"; var Command = require_command(); var Packets = require_packets(); @@ -17229,9 +16154,9 @@ var require_change_user2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/quit.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/quit.js var require_quit = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/quit.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/quit.js"(exports2, module2) { "use strict"; var Command = require_command(); var CommandCode = require_commands(); @@ -17262,9 +16187,9 @@ var require_quit = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/index.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/index.js var require_commands2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/commands/index.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/commands/index.js"(exports2, module2) { "use strict"; var ClientHandshake = require_client_handshake(); var ServerHandshake = require_server_handshake(); @@ -17293,29 +16218,29 @@ var require_commands2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/package.json +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/package.json var require_package = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/package.json"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/package.json"(exports2, module2) { module2.exports = { name: "mysql2", - version: "3.5.1", + version: "3.11.3", description: "fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS", main: "index.js", - directories: { - example: "examples" - }, typings: "typings/mysql/index", scripts: { lint: "npm run lint:docs && npm run lint:code", - "lint:code": 'eslint index.js promise.js index.d.ts promise.d.ts "typings/**/*.ts" "lib/**/*.js" "test/**/*.{js,ts}" "benchmarks/**/*.js"', - "lint:docs": 'eslint Contributing.md README.md "documentation/**/*.md" "examples/*.js"', - test: "node ./test/run.js", - "test:builtin-node-runner": "NODE_V8_COVERAGE=./coverage node --test --experimental-test-coverage test/builtin-runner", + "lint:code": 'eslint index.js promise.js index.d.ts promise.d.ts "typings/**/*.ts" "lib/**/*.js" "test/**/*.{js,cjs,mjs,ts}" "benchmarks/**/*.js"', + "lint:docs": "eslint Contributing.md README.md", + "lint:typings": "npx prettier --check ./typings", + "lint:tests": "npx prettier --check ./test", + test: 'poku --debug --include="test/esm,test/unit,test/integration"', + "test:bun": 'poku --debug --platform="bun" --include="test/esm,test/unit,test/integration"', + "test:deno": 'deno run --allow-read --allow-env --allow-run npm:poku --debug --platform="deno" --deno-allow="read,env,net,sys" --deno-cjs=".js,.cjs" --include="test/esm,test/unit,test/integration"', "test:tsc-build": 'cd "test/tsc-build" && npx tsc -p "tsconfig.json"', - "coverage-test": "c8 -r cobertura -r lcov -r text node ./test/run.js", + "coverage-test": "c8 npm run test", benchmark: "node ./benchmarks/benchmark.js", - prettier: 'prettier --single-quote --trailing-comma none --write "{lib,examples,test}/**/*.js"', - "prettier:docs": "prettier --single-quote --trailing-comma none --write README.md documentation/*", + prettier: 'prettier --single-quote --trailing-comma none --write "{lib,test}/**/*.js"', + "prettier:docs": "prettier --single-quote --trailing-comma none --write README.md", precommit: "lint-staged", "eslint-check": "eslint --print-config .eslintrc | eslint-config-prettier-check", "wait-port": "wait-on" @@ -17330,6 +16255,7 @@ var require_package = __commonJS({ type: "git", url: "https://github.com/sidorares/node-mysql2" }, + homepage: "https://sidorares.github.io/node-mysql2/docs", keywords: [ "mysql", "client", @@ -17355,111 +16281,214 @@ var require_package = __commonJS({ author: "Andrey Sidorov ", license: "MIT", dependencies: { + "aws-ssl-profiles": "^1.1.1", denque: "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", long: "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", sqlstring: "^2.3.2" }, devDependencies: { - "@types/node": "^20.0.0", + "@types/node": "^22.0.0", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^5.42.1", "assert-diff": "^3.0.2", benchmark: "^2.1.4", - c8: "^8.0.0", + c8: "^10.1.1", "error-stack-parser": "^2.0.3", eslint: "^8.27.0", - "eslint-config-prettier": "^8.5.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-async-await": "0.0.0", - "eslint-plugin-markdown": "^3.0.0", - husky: "^8.0.2", - "lint-staged": "^13.0.3", + "eslint-plugin-markdown": "^5.0.0", + "lint-staged": "^15.0.1", + poku: "^2.0.0", portfinder: "^1.0.28", prettier: "^3.0.0", progress: "^2.0.3", - typescript: "^5.0.2", - urun: "0.0.8", - utest: "0.0.8" + typescript: "^5.0.2" } }; } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/ssl_profiles.js -var require_ssl_profiles = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/constants/ssl_profiles.js"(exports2) { +// node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/profiles/ca/defaults.js +var require_defaults = __commonJS({ + "node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/profiles/ca/defaults.js"(exports2) { "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.defaults = void 0; + exports2.defaults = [ + "-----BEGIN CERTIFICATE-----\nMIIEEjCCAvqgAwIBAgIJAM2ZN/+nPi27MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBhZi1zb3V0aC0xIFJvb3QgQ0Ew\nHhcNMTkxMDI4MTgwNTU4WhcNMjQxMDI2MTgwNTU4WjCBlTELMAkGA1UEBhMCVVMx\nEDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nJjAkBgNVBAMMHUFtYXpvbiBSRFMgYWYtc291dGgtMSBSb290IENBMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR2351uPMZaJk2gMGT+1sk8HE9MQh2rc\n/sCnbxGn2p1c7Oi9aBbd/GiFijeJb2BXvHU+TOq3d3Jjqepq8tapXVt4ojbTJNyC\nJ5E7r7KjTktKdLxtBE1MK25aY+IRJjtdU6vG3KiPKUT1naO3xs3yt0F76WVuFivd\n9OHv2a+KHvPkRUWIxpmAHuMY9SIIMmEZtVE7YZGx5ah0iO4JzItHcbVR0y0PBH55\narpFBddpIVHCacp1FUPxSEWkOpI7q0AaU4xfX0fe1BV5HZYRKpBOIp1TtZWvJD+X\njGUtL1BEsT5vN5g9MkqdtYrC+3SNpAk4VtpvJrdjraI/hhvfeXNnAwIDAQABo2Mw\nYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUEEi/\nWWMcBJsoGXg+EZwkQ0MscZQwHwYDVR0jBBgwFoAUEEi/WWMcBJsoGXg+EZwkQ0Ms\ncZQwDQYJKoZIhvcNAQELBQADggEBAGDZ5js5Pc/gC58LJrwMPXFhJDBS8QuDm23C\nFFUdlqucskwOS3907ErK1ZkmVJCIqFLArHqskFXMAkRZ2PNR7RjWLqBs+0znG5yH\nhRKb4DXzhUFQ18UBRcvT6V6zN97HTRsEEaNhM/7k8YLe7P8vfNZ28VIoJIGGgv9D\nwQBBvkxQ71oOmAG0AwaGD0ORGUfbYry9Dz4a4IcUsZyRWRMADixgrFv6VuETp26s\n/+z+iqNaGWlELBKh3iQCT6Y/1UnkPLO42bxrCSyOvshdkYN58Q2gMTE1SVTqyo8G\nLw8lLAz9bnvUSgHzB3jRrSx6ggF/WRMRYlR++y6LXP4SAsSAaC0=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEEjCCAvqgAwIBAgIJAJYM4LxvTZA6MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBldS1zb3V0aC0xIFJvb3QgQ0Ew\nHhcNMTkxMDMwMjAyMDM2WhcNMjQxMDI4MjAyMDM2WjCBlTELMAkGA1UEBhMCVVMx\nEDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nJjAkBgNVBAMMHUFtYXpvbiBSRFMgZXUtc291dGgtMSBSb290IENBMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqM921jXCXeqpRNCS9CBPOe5N7gMaEt+D\ns5uR3riZbqzRlHGiF1jZihkXfHAIQewDwy+Yz+Oec1aEZCQMhUHxZJPusuX0cJfj\nb+UluFqHIijL2TfXJ3D0PVLLoNTQJZ8+GAPECyojAaNuoHbdVqxhOcznMsXIXVFq\nyVLKDGvyKkJjai/iSPDrQMXufg3kWt0ISjNLvsG5IFXgP4gttsM8i0yvRd4QcHoo\nDjvH7V3cS+CQqW5SnDrGnHToB0RLskE1ET+oNOfeN9PWOxQprMOX/zmJhnJQlTqD\nQP7jcf7SddxrKFjuziFiouskJJyNDsMjt1Lf60+oHZhed2ogTeifGwIDAQABo2Mw\nYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUFBAF\ncgJe/BBuZiGeZ8STfpkgRYQwHwYDVR0jBBgwFoAUFBAFcgJe/BBuZiGeZ8STfpkg\nRYQwDQYJKoZIhvcNAQELBQADggEBAKAYUtlvDuX2UpZW9i1QgsjFuy/ErbW0dLHU\ne/IcFtju2z6RLZ+uF+5A8Kme7IKG1hgt8s+w9TRVQS/7ukQzoK3TaN6XKXRosjtc\no9Rm4gYWM8bmglzY1TPNaiI4HC7546hSwJhubjN0bXCuj/0sHD6w2DkiGuwKNAef\nyTu5vZhPkeNyXLykxkzz7bNp2/PtMBnzIp+WpS7uUDmWyScGPohKMq5PqvL59z+L\nZI3CYeMZrJ5VpXUg3fNNIz/83N3G0sk7wr0ohs/kHTP7xPOYB0zD7Ku4HA0Q9Swf\nWX0qr6UQgTPMjfYDLffI7aEId0gxKw1eGYc6Cq5JAZ3ipi/cBFc=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEEjCCAvqgAwIBAgIJANew34ehz5l8MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0Ew\nHhcNMTkwNTEwMjE0ODI3WhcNMjQwNTA4MjE0ODI3WjCBlTELMAkGA1UEBhMCVVMx\nEDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nJjAkBgNVBAMMHUFtYXpvbiBSRFMgbWUtc291dGgtMSBSb290IENBMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp7BYV88MukcY+rq0r79+C8UzkT30fEfT\naPXbx1d6M7uheGN4FMaoYmL+JE1NZPaMRIPTHhFtLSdPccInvenRDIatcXX+jgOk\nUA6lnHQ98pwN0pfDUyz/Vph4jBR9LcVkBbe0zdoKKp+HGbMPRU0N2yNrog9gM5O8\ngkU/3O2csJ/OFQNnj4c2NQloGMUpEmedwJMOyQQfcUyt9CvZDfIPNnheUS29jGSw\nERpJe/AENu8Pxyc72jaXQuD+FEi2Ck6lBkSlWYQFhTottAeGvVFNCzKszCntrtqd\nrdYUwurYsLTXDHv9nW2hfDUQa0mhXf9gNDOBIVAZugR9NqNRNyYLHQIDAQABo2Mw\nYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU54cf\nDjgwBx4ycBH8+/r8WXdaiqYwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXda\niqYwDQYJKoZIhvcNAQELBQADggEBAIIMTSPx/dR7jlcxggr+O6OyY49Rlap2laKA\neC/XI4ySP3vQkIFlP822U9Kh8a9s46eR0uiwV4AGLabcu0iKYfXjPkIprVCqeXV7\nny9oDtrbflyj7NcGdZLvuzSwgl9SYTJp7PVCZtZutsPYlbJrBPHwFABvAkMvRtDB\nhitIg4AESDGPoCl94sYHpfDfjpUDMSrAMDUyO6DyBdZH5ryRMAs3lGtsmkkNUrso\naTW6R05681Z0mvkRdb+cdXtKOSuDZPoe2wJJIaz3IlNQNSrB5TImMYgmt6iAsFhv\n3vfTSTKrZDNTJn4ybG6pq1zWExoXsktZPylJly6R3RBwV6nwqBM=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkw\nODIyMTcwODUwWhcNMjQwODIyMTcwODUwWjCBjzELMAkGA1UEBhMCVVMxEDAOBgNV\nBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFtYXpv\nbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIDAeBgNV\nBAMMF0FtYXpvbiBSRFMgUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEArXnF/E6/Qh+ku3hQTSKPMhQQlCpoWvnIthzX6MK3p5a0eXKZ\noWIjYcNNG6UwJjp4fUXl6glp53Jobn+tWNX88dNH2n8DVbppSwScVE2LpuL+94vY\n0EYE/XxN7svKea8YvlrqkUBKyxLxTjh+U/KrGOaHxz9v0l6ZNlDbuaZw3qIWdD/I\n6aNbGeRUVtpM6P+bWIoxVl/caQylQS6CEYUk+CpVyJSkopwJlzXT07tMoDL5WgX9\nO08KVgDNz9qP/IGtAcRduRcNioH3E9v981QO1zt/Gpb2f8NqAjUUCUZzOnij6mx9\nMcZ+9cWX88CRzR0vQODWuZscgI08NvM69Fn2SQIDAQABo2MwYTAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUc19g2LzLA5j0Kxc0LjZa\npmD/vB8wHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJKoZIhvcN\nAQELBQADggEBAHAG7WTmyjzPRIM85rVj+fWHsLIvqpw6DObIjMWokpliCeMINZFV\nynfgBKsf1ExwbvJNzYFXW6dihnguDG9VMPpi2up/ctQTN8tm9nDKOy08uNZoofMc\nNUZxKCEkVKZv+IL4oHoeayt8egtv3ujJM6V14AstMQ6SwvwvA93EP/Ug2e4WAXHu\ncbI1NAbUgVDqp+DRdfvZkgYKryjTWd/0+1fS8X1bBZVWzl7eirNVnHbSH2ZDpNuY\n0SBd8dj5F6ld3t58ydZbrTHze7JJOd8ijySAp4/kiu9UfZWuTPABzDa/DSdz9Dk/\nzPW4CXXvhLmE02TA9/HeCw3KEHIwicNuEfw=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEEDCCAvigAwIBAgIJAKFMXyltvuRdMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTAe\nFw0xOTA4MTkxNzM4MjZaFw0yNDA4MTkxNzM4MjZaMIGUMQswCQYDVQQGEwJVUzEQ\nMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UECgwZ\nQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEl\nMCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAMkZdnIH9ndatGAcFo+DppGJ1HUt4x+zeO+0\nZZ29m0sfGetVulmTlv2d5b66e+QXZFWpcPQMouSxxYTW08TbrQiZngKr40JNXftA\natvzBqIImD4II0ZX5UEVj2h98qe/ypW5xaDN7fEa5e8FkYB1TEemPaWIbNXqchcL\ntV7IJPr3Cd7Z5gZJlmujIVDPpMuSiNaal9/6nT9oqN+JSM1fx5SzrU5ssg1Vp1vv\n5Xab64uOg7wCJRB9R2GC9XD04odX6VcxUAGrZo6LR64ZSifupo3l+R5sVOc5i8NH\nskdboTzU9H7+oSdqoAyhIU717PcqeDum23DYlPE2nGBWckE+eT8CAwEAAaNjMGEw\nDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK2hDBWl\nsbHzt/EHd0QYOooqcFPhMB8GA1UdIwQYMBaAFK2hDBWlsbHzt/EHd0QYOooqcFPh\nMA0GCSqGSIb3DQEBCwUAA4IBAQAO/718k8EnOqJDx6wweUscGTGL/QdKXUzTVRAx\nJUsjNUv49mH2HQVEW7oxszfH6cPCaupNAddMhQc4C/af6GHX8HnqfPDk27/yBQI+\nyBBvIanGgxv9c9wBbmcIaCEWJcsLp3HzXSYHmjiqkViXwCpYfkoV3Ns2m8bp+KCO\ny9XmcCKRaXkt237qmoxoh2sGmBHk2UlQtOsMC0aUQ4d7teAJG0q6pbyZEiPyKZY1\nXR/UVxMJL0Q4iVpcRS1kaNCMfqS2smbLJeNdsan8pkw1dvPhcaVTb7CvjhJtjztF\nYfDzAI5794qMlWxwilKMmUvDlPPOTen8NNHkLwWvyFCH7Doh\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEFjCCAv6gAwIBAgIJAMzYZJ+R9NBVMA0GCSqGSIb3DQEBCwUAMIGXMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBD\nQTAeFw0xOTA4MjEyMjI5NDlaFw0yNDA4MjEyMjI5NDlaMIGXMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBDQTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7kkS6vjgKKQTPynC2NjdN5aPPV\nO71G0JJS/2ARVBVJd93JLiGovVJilfWYfwZCs4gTRSSjrUD4D4HyqCd6A+eEEtJq\nM0DEC7i0dC+9WNTsPszuB206Jy2IUmxZMIKJAA1NHSbIMjB+b6/JhbSUi7nKdbR/\nbrj83bF+RoSA+ogrgX7mQbxhmFcoZN9OGaJgYKsKWUt5Wqv627KkGodUK8mDepgD\nS3ZfoRQRx3iceETpcmHJvaIge6+vyDX3d9Z22jmvQ4AKv3py2CmU2UwuhOltFDwB\n0ddtb39vgwrJxaGfiMRHpEP1DfNLWHAnA69/pgZPwIggidS+iBPUhgucMp8CAwEA\nAaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFGnTGpQuQ2H/DZlXMQijZEhjs7TdMB8GA1UdIwQYMBaAFGnTGpQuQ2H/DZlXMQij\nZEhjs7TdMA0GCSqGSIb3DQEBCwUAA4IBAQC3xz1vQvcXAfpcZlngiRWeqU8zQAMQ\nLZPCFNv7PVk4pmqX+ZiIRo4f9Zy7TrOVcboCnqmP/b/mNq0gVF4O+88jwXJZD+f8\n/RnABMZcnGU+vK0YmxsAtYU6TIb1uhRFmbF8K80HHbj9vSjBGIQdPCbvmR2zY6VJ\nBYM+w9U9hp6H4DVMLKXPc1bFlKA5OBTgUtgkDibWJKFOEPW3UOYwp9uq6pFoN0AO\nxMTldqWFsOF3bJIlvOY0c/1EFZXu3Ns6/oCP//Ap9vumldYMUZWmbK+gK33FPOXV\n8BQ6jNC29icv7lLDpRPwjibJBXX+peDR5UK4FdYcswWEB1Tix5X8dYu6\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSYwJAYDVQQDDB1BbWF6b24gUkRTIGFmLXNvdXRoLTEgUm9vdCBDQTAeFw0xOTEw\nMjgxODA2NTNaFw0yNDEwMjgxODA2NTNaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UE\nCAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9u\nIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UE\nAwwYQW1hem9uIFJEUyBhZi1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEAvtV1OqmFa8zCVQSKOvPUJERLVFtd4rZmDpImc5rIoeBk7w/P\n9lcKUJjO8R/w1a2lJXx3oQ81tiY0Piw6TpT62YWVRMWrOw8+Vxq1dNaDSFp9I8d0\nUHillSSbOk6FOrPDp+R6AwbGFqUDebbN5LFFoDKbhNmH1BVS0a6YNKpGigLRqhka\ncClPslWtPqtjbaP3Jbxl26zWzLo7OtZl98dR225pq8aApNBwmtgA7Gh60HK/cX0t\n32W94n8D+GKSg6R4MKredVFqRTi9hCCNUu0sxYPoELuM+mHiqB5NPjtm92EzCWs+\n+vgWhMc6GxG+82QSWx1Vj8sgLqtE/vLrWddf5QIDAQABo2YwZDAOBgNVHQ8BAf8E\nBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUuLB4gYVJrSKJj/Gz\npqc6yeA+RcAwHwYDVR0jBBgwFoAUEEi/WWMcBJsoGXg+EZwkQ0MscZQwDQYJKoZI\nhvcNAQELBQADggEBABauYOZxUhe9/RhzGJ8MsWCz8eKcyDVd4FCnY6Qh+9wcmYNT\nLtnD88LACtJKb/b81qYzcB0Em6+zVJ3Z9jznfr6buItE6es9wAoja22Xgv44BTHL\nrimbgMwpTt3uEMXDffaS0Ww6YWb3pSE0XYI2ISMWz+xRERRf+QqktSaL39zuiaW5\ntfZMre+YhohRa/F0ZQl3RCd6yFcLx4UoSPqQsUl97WhYzwAxZZfwvLJXOc4ATt3u\nVlCUylNDkaZztDJc/yN5XQoK9W5nOt2cLu513MGYKbuarQr8f+gYU8S+qOyuSRSP\nNRITzwCRVnsJE+2JmcRInn/NcanB7uOGqTvJ9+c=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSYwJAYDVQQDDB1BbWF6b24gUkRTIGV1LXNvdXRoLTEgUm9vdCBDQTAeFw0xOTEw\nMzAyMDIxMzBaFw0yNDEwMzAyMDIxMzBaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UE\nCAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9u\nIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UE\nAwwYQW1hem9uIFJEUyBldS1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEAtEyjYcajx6xImJn8Vz1zjdmL4ANPgQXwF7+tF7xccmNAZETb\nbzb3I9i5fZlmrRaVznX+9biXVaGxYzIUIR3huQ3Q283KsDYnVuGa3mk690vhvJbB\nQIPgKa5mVwJppnuJm78KqaSpi0vxyCPe3h8h6LLFawVyWrYNZ4okli1/U582eef8\nRzJp/Ear3KgHOLIiCdPDF0rjOdCG1MOlDLixVnPn9IYOciqO+VivXBg+jtfc5J+L\nAaPm0/Yx4uELt1tkbWkm4BvTU/gBOODnYziITZM0l6Fgwvbwgq5duAtKW+h031lC\n37rEvrclqcp4wrsUYcLAWX79ZyKIlRxcAdvEhQIDAQABo2YwZDAOBgNVHQ8BAf8E\nBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU7zPyc0azQxnBCe7D\nb9KAadH1QSEwHwYDVR0jBBgwFoAUFBAFcgJe/BBuZiGeZ8STfpkgRYQwDQYJKoZI\nhvcNAQELBQADggEBAFGaNiYxg7yC/xauXPlaqLCtwbm2dKyK9nIFbF/7be8mk7Q3\nMOA0of1vGHPLVQLr6bJJpD9MAbUcm4cPAwWaxwcNpxOjYOFDaq10PCK4eRAxZWwF\nNJRIRmGsl8NEsMNTMCy8X+Kyw5EzH4vWFl5Uf2bGKOeFg0zt43jWQVOX6C+aL3Cd\npRS5MhmYpxMG8irrNOxf4NVFE2zpJOCm3bn0STLhkDcV/ww4zMzObTJhiIb5wSWn\nEXKKWhUXuRt7A2y1KJtXpTbSRHQxE++69Go1tWhXtRiULCJtf7wF2Ksm0RR/AdXT\n1uR1vKyH5KBJPX3ppYkQDukoHTFR0CpB+G84NLo=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSYwJAYDVQQDDB1BbWF6b24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQTAeFw0xOTA1\nMTAyMTU4NDNaFw0yNTA2MDExMjAwMDBaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UE\nCAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9u\nIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UE\nAwwYQW1hem9uIFJEUyBtZS1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEAudOYPZH+ihJAo6hNYMB5izPVBe3TYhnZm8+X3IoaaYiKtsp1\nJJhkTT0CEejYIQ58Fh4QrMUyWvU8qsdK3diNyQRoYLbctsBPgxBR1u07eUJDv38/\nC1JlqgHmMnMi4y68Iy7ymv50QgAMuaBqgEBRI1R6Lfbyrb2YvH5txjJyTVMwuCfd\nYPAtZVouRz0JxmnfsHyxjE+So56uOKTDuw++Ho4HhZ7Qveej7XB8b+PIPuroknd3\nFQB5RVbXRvt5ZcVD4F2fbEdBniF7FAF4dEiofVCQGQ2nynT7dZdEIPfPdH3n7ZmE\nlAOmwHQ6G83OsiHRBLnbp+QZRgOsjkHJxT20bQIDAQABo2YwZDAOBgNVHQ8BAf8E\nBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUOEVDM7VomRH4HVdA\nQvIMNq2tXOcwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXdaiqYwDQYJKoZI\nhvcNAQELBQADggEBAHhvMssj+Th8IpNePU6RH0BiL6o9c437R3Q4IEJeFdYL+nZz\nPW/rELDPvLRUNMfKM+KzduLZ+l29HahxefejYPXtvXBlq/E/9czFDD4fWXg+zVou\nuDXhyrV4kNmP4S0eqsAP/jQHPOZAMFA4yVwO9hlqmePhyDnszCh9c1PfJSBh49+b\n4w7i/L3VBOMt8j3EKYvqz0gVfpeqhJwL4Hey8UbVfJRFJMJzfNHpePqtDRAY7yjV\nPYquRaV2ab/E+/7VFkWMM4tazYz/qsYA2jSH+4xDHvYk8LnsbcrF9iuidQmEc5sb\nFgcWaSKG4DJjcI5k7AJLWcXyTDt21Ci43LE+I9Q=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgICVIYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDQxNzEz\nMDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\nem9uIFJEUyBhcC1zb3V0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDUYOz1hGL42yUCrcsMSOoU8AeD/3KgZ4q7gP+vAz1WnY9K/kim\neWN/2Qqzlo3+mxSFQFyD4MyV3+CnCPnBl9Sh1G/F6kThNiJ7dEWSWBQGAB6HMDbC\nBaAsmUc1UIz8sLTL3fO+S9wYhA63Wun0Fbm/Rn2yk/4WnJAaMZcEtYf6e0KNa0LM\np/kN/70/8cD3iz3dDR8zOZFpHoCtf0ek80QqTich0A9n3JLxR6g6tpwoYviVg89e\nqCjQ4axxOkWWeusLeTJCcY6CkVyFvDAKvcUl1ytM5AiaUkXblE7zDFXRM4qMMRdt\nlPm8d3pFxh0fRYk8bIKnpmtOpz3RIctDrZZxAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT99wKJftD3jb4sHoHG\ni3uGlH6W6TAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAZ17hhr3dII3hUfuHQ1hPWGrpJOX/G9dLzkprEIcCidkmRYl+\nhu1Pe3caRMh/17+qsoEErmnVq5jNY9X1GZL04IZH8YbHc7iRHw3HcWAdhN8633+K\njYEB2LbJ3vluCGnCejq9djDb6alOugdLMJzxOkHDhMZ6/gYbECOot+ph1tQuZXzD\ntZ7prRsrcuPBChHlPjmGy8M9z8u+kF196iNSUGC4lM8vLkHM7ycc1/ZOwRq9aaTe\niOghbQQyAEe03MWCyDGtSmDfr0qEk+CHN+6hPiaL8qKt4s+V9P7DeK4iW08ny8Ox\nAVS7u0OK/5+jKMAMrKwpYrBydOjTUTHScocyNw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICQ2QwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDUxODQ2\nMjlaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBzYS1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAMMvR+ReRnOzqJzoaPipNTt1Z2VA968jlN1+SYKUrYM3No+Vpz0H\nM6Tn0oYB66ByVsXiGc28ulsqX1HbHsxqDPwvQTKvO7SrmDokoAkjJgLocOLUAeld\n5AwvUjxGRP6yY90NV7X786MpnYb2Il9DIIaV9HjCmPt+rjy2CZjS0UjPjCKNfB8J\nbFjgW6GGscjeyGb/zFwcom5p4j0rLydbNaOr9wOyQrtt3ZQWLYGY9Zees/b8pmcc\nJt+7jstZ2UMV32OO/kIsJ4rMUn2r/uxccPwAc1IDeRSSxOrnFKhW3Cu69iB3bHp7\nJbawY12g7zshE4I14sHjv3QoXASoXjx4xgMCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI1Fc/Ql2jx+oJPgBVYq\nccgP0pQ8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQB4VVVabVp70myuYuZ3vltQIWqSUMhkaTzehMgGcHjMf9iLoZ/I\n93KiFUSGnek5cRePyS9wcpp0fcBT3FvkjpUdCjVtdttJgZFhBxgTd8y26ImdDDMR\n4+BUuhI5msvjL08f+Vkkpu1GQcGmyFVPFOy/UY8iefu+QyUuiBUnUuEDd49Hw0Fn\n/kIPII6Vj82a2mWV/Q8e+rgN8dIRksRjKI03DEoP8lhPlsOkhdwU6Uz9Vu6NOB2Q\nLs1kbcxAc7cFSyRVJEhh12Sz9d0q/CQSTFsVJKOjSNQBQfVnLz1GwO/IieUEAr4C\njkTntH0r1LX5b/GwN4R887LvjAEdTbg1his7\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgIDAIkHMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTA2MTc0\nMDIxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\nc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\nU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\nYXpvbiBSRFMgdXMtd2VzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDD2yzbbAl77OofTghDMEf624OvU0eS9O+lsdO0QlbfUfWa1Kd6\n0WkgjkLZGfSRxEHMCnrv4UPBSK/Qwn6FTjkDLgemhqBtAnplN4VsoDL+BkRX4Wwq\n/dSQJE2b+0hm9w9UMVGFDEq1TMotGGTD2B71eh9HEKzKhGzqiNeGsiX4VV+LJzdH\nuM23eGisNqmd4iJV0zcAZ+Gbh2zK6fqTOCvXtm7Idccv8vZZnyk1FiWl3NR4WAgK\nAkvWTIoFU3Mt7dIXKKClVmvssG8WHCkd3Xcb4FHy/G756UZcq67gMMTX/9fOFM/v\nl5C0+CHl33Yig1vIDZd+fXV1KZD84dEJfEvHAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBR+ap20kO/6A7pPxo3+\nT3CfqZpQWjAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAHCJky2tPjPttlDM/RIqExupBkNrnSYnOK4kr9xJ3sl8UF2DA\nPAnYsjXp3rfcjN/k/FVOhxwzi3cXJF/2Tjj39Bm/OEfYTOJDNYtBwB0VVH4ffa/6\ntZl87jaIkrxJcreeeHqYMnIxeN0b/kliyA+a5L2Yb0VPjt9INq34QDc1v74FNZ17\n4z8nr1nzg4xsOWu0Dbjo966lm4nOYIGBRGOKEkHZRZ4mEiMgr3YLkv8gSmeitx57\nZ6dVemNtUic/LVo5Iqw4n3TBS0iF2C1Q1xT/s3h+0SXZlfOWttzSluDvoMv5PvCd\npFjNn+aXLAALoihL1MJSsxydtsLjOBro5eK0Vw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICOFAwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAxNzQ2\nMjFaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAzU72e6XbaJbi4HjJoRNjKxzUEuChKQIt7k3CWzNnmjc5\n8I1MjCpa2W1iw1BYVysXSNSsLOtUsfvBZxi/1uyMn5ZCaf9aeoA9UsSkFSZBjOCN\nDpKPCmfV1zcEOvJz26+1m8WDg+8Oa60QV0ou2AU1tYcw98fOQjcAES0JXXB80P2s\n3UfkNcnDz+l4k7j4SllhFPhH6BQ4lD2NiFAP4HwoG6FeJUn45EPjzrydxjq6v5Fc\ncQ8rGuHADVXotDbEhaYhNjIrsPL+puhjWfhJjheEw8c4whRZNp6gJ/b6WEes/ZhZ\nh32DwsDsZw0BfRDUMgUn8TdecNexHUw8vQWeC181hwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwW9bWgkWkr0U\nlrOsq2kvIdrECDgwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAEugF0Gj7HVhX0ehPZoGRYRt3PBuI2YjfrrJRTZ9X5wc\n9T8oHmw07mHmNy1qqWvooNJg09bDGfB0k5goC2emDiIiGfc/kvMLI7u+eQOoMKj6\nmkfCncyRN3ty08Po45vTLBFZGUvtQmjM6yKewc4sXiASSBmQUpsMbiHRCL72M5qV\nobcJOjGcIdDTmV1BHdWT+XcjynsGjUqOvQWWhhLPrn4jWe6Xuxll75qlrpn3IrIx\nCRBv/5r7qbcQJPOgwQsyK4kv9Ly8g7YT1/vYBlR3cRsYQjccw5ceWUj2DrMVWhJ4\nprf+E3Aa4vYmLLOUUvKnDQ1k3RGNu56V0tonsQbfsaM=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgICEzUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAyMDUy\nMjVaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\nem9uIFJEUyBjYS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAOxHqdcPSA2uBjsCP4DLSlqSoPuQ/X1kkJLusVRKiQE2zayB\nviuCBt4VB9Qsh2rW3iYGM+usDjltGnI1iUWA5KHcvHszSMkWAOYWLiMNKTlg6LCp\nXnE89tvj5dIH6U8WlDvXLdjB/h30gW9JEX7S8supsBSci2GxEzb5mRdKaDuuF/0O\nqvz4YE04pua3iZ9QwmMFuTAOYzD1M72aOpj+7Ac+YLMM61qOtU+AU6MndnQkKoQi\nqmUN2A9IFaqHFzRlSdXwKCKUA4otzmz+/N3vFwjb5F4DSsbsrMfjeHMo6o/nb6Nh\nYDb0VJxxPee6TxSuN7CQJ2FxMlFUezcoXqwqXD0CAwEAAaNmMGQwDgYDVR0PAQH/\nBAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDGGpon9WfIpsggE\nCxHq8hZ7E2ESMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\nSIb3DQEBCwUAA4IBAQAvpeQYEGZvoTVLgV9rd2+StPYykMsmFjWQcyn3dBTZRXC2\nlKq7QhQczMAOhEaaN29ZprjQzsA2X/UauKzLR2Uyqc2qOeO9/YOl0H3qauo8C/W9\nr8xqPbOCDLEXlOQ19fidXyyEPHEq5WFp8j+fTh+s8WOx2M7IuC0ANEetIZURYhSp\nxl9XOPRCJxOhj7JdelhpweX0BJDNHeUFi0ClnFOws8oKQ7sQEv66d5ddxqqZ3NVv\nRbCvCtEutQMOUMIuaygDlMn1anSM8N7Wndx8G6+Uy67AnhjGx7jw/0YPPxopEj6x\nJXP8j0sJbcT9K/9/fPVLNT25RvQ/93T2+IQL4Ca2\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICYpgwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExNzMx\nNDhaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAMk3YdSZ64iAYp6MyyKtYJtNzv7zFSnnNf6vv0FB4VnfITTMmOyZ\nLXqKAT2ahZ00hXi34ewqJElgU6eUZT/QlzdIu359TEZyLVPwURflL6SWgdG01Q5X\nO++7fSGcBRyIeuQWs9FJNIIqK8daF6qw0Rl5TXfu7P9dBc3zkgDXZm2DHmxGDD69\n7liQUiXzoE1q2Z9cA8+jirDioJxN9av8hQt12pskLQumhlArsMIhjhHRgF03HOh5\ntvi+RCfihVOxELyIRTRpTNiIwAqfZxxTWFTgfn+gijTmd0/1DseAe82aYic8JbuS\nEMbrDduAWsqrnJ4GPzxHKLXX0JasCUcWyMECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPLtsq1NrwJXO13C9eHt\nsLY11AGwMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQAnWBKj5xV1A1mYd0kIgDdkjCwQkiKF5bjIbGkT3YEFFbXoJlSP\n0lZZ/hDaOHI8wbLT44SzOvPEEmWF9EE7SJzkvSdQrUAWR9FwDLaU427ALI3ngNHy\nlGJ2hse1fvSRNbmg8Sc9GBv8oqNIBPVuw+AJzHTacZ1OkyLZrz1c1QvwvwN2a+Jd\nvH0V0YIhv66llKcYDMUQJAQi4+8nbRxXWv6Gq3pvrFoorzsnkr42V3JpbhnYiK+9\nnRKd4uWl62KRZjGkfMbmsqZpj2fdSWMY1UGyN1k+kDmCSWYdrTRDP0xjtIocwg+A\nJ116n4hV/5mbA0BaPiS2krtv17YAeHABZcvz\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgICV2YwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExOTM2\nMjBaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\nem9uIFJEUyBldS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAMEx54X2pHVv86APA0RWqxxRNmdkhAyp2R1cFWumKQRofoFv\nn+SPXdkpIINpMuEIGJANozdiEz7SPsrAf8WHyD93j/ZxrdQftRcIGH41xasetKGl\nI67uans8d+pgJgBKGb/Z+B5m+UsIuEVekpvgpwKtmmaLFC/NCGuSsJoFsRqoa6Gh\nm34W6yJoY87UatddCqLY4IIXaBFsgK9Q/wYzYLbnWM6ZZvhJ52VMtdhcdzeTHNW0\n5LGuXJOF7Ahb4JkEhoo6TS2c0NxB4l4MBfBPgti+O7WjR3FfZHpt18A6Zkq6A2u6\nD/oTSL6c9/3sAaFTFgMyL3wHb2YlW0BPiljZIqECAwEAAaNmMGQwDgYDVR0PAQH/\nBAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOcAToAc6skWffJa\nTnreaswAfrbcMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\nSIb3DQEBCwUAA4IBAQA1d0Whc1QtspK496mFWfFEQNegLh0a9GWYlJm+Htcj5Nxt\nDAIGXb+8xrtOZFHmYP7VLCT5Zd2C+XytqseK/+s07iAr0/EPF+O2qcyQWMN5KhgE\ncXw2SwuP9FPV3i+YAm11PBVeenrmzuk9NrdHQ7TxU4v7VGhcsd2C++0EisrmquWH\nmgIfmVDGxphwoES52cY6t3fbnXmTkvENvR+h3rj+fUiSz0aSo+XZUGHPgvuEKM/W\nCBD9Smc9CBoBgvy7BgHRgRUmwtABZHFUIEjHI5rIr7ZvYn+6A0O6sogRfvVYtWFc\nqpyrW1YX8mD0VlJ8fGKM3G+aCOsiiPKDV/Uafrm+\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgICGAcwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIxODE5\nNDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\nem9uIFJEUyBldS1ub3J0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQCiIYnhe4UNBbdBb/nQxl5giM0XoVHWNrYV5nB0YukA98+TPn9v\nAoj1RGYmtryjhrf01Kuv8SWO+Eom95L3zquoTFcE2gmxCfk7bp6qJJ3eHOJB+QUO\nXsNRh76fwDzEF1yTeZWH49oeL2xO13EAx4PbZuZpZBttBM5zAxgZkqu4uWQczFEs\nJXfla7z2fvWmGcTagX10O5C18XaFroV0ubvSyIi75ue9ykg/nlFAeB7O0Wxae88e\nuhiBEFAuLYdqWnsg3459NfV8Yi1GnaitTym6VI3tHKIFiUvkSiy0DAlAGV2iiyJE\nq+DsVEO4/hSINJEtII4TMtysOsYPpINqeEzRAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRR0UpnbQyjnHChgmOc\nhnlc0PogzTAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAKJD4xVzSf4zSGTBJrmamo86jl1NHQxXUApAZuBZEc8tqC6TI\nT5CeoSr9CMuVC8grYyBjXblC4OsM5NMvmsrXl/u5C9dEwtBFjo8mm53rOOIm1fxl\nI1oYB/9mtO9ANWjkykuLzWeBlqDT/i7ckaKwalhLODsRDO73vRhYNjsIUGloNsKe\npxw3dzHwAZx4upSdEVG4RGCZ1D0LJ4Gw40OfD69hfkDfRVVxKGrbEzqxXRvovmDc\ntKLdYZO/6REoca36v4BlgIs1CbUXJGLSXUwtg7YXGLSVBJ/U0+22iGJmBSNcoyUN\ncjPFD9JQEhDDIYYKSGzIYpvslvGc4T5ISXFiuQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICZIEwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIyMTMy\nMzJaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBALGiwqjiF7xIjT0Sx7zB3764K2T2a1DHnAxEOr+/EIftWKxWzT3u\nPFwS2eEZcnKqSdRQ+vRzonLBeNLO4z8aLjQnNbkizZMBuXGm4BqRm1Kgq3nlLDQn\n7YqdijOq54SpShvR/8zsO4sgMDMmHIYAJJOJqBdaus2smRt0NobIKc0liy7759KB\n6kmQ47Gg+kfIwxrQA5zlvPLeQImxSoPi9LdbRoKvu7Iot7SOa+jGhVBh3VdqndJX\n7tm/saj4NE375csmMETFLAOXjat7zViMRwVorX4V6AzEg1vkzxXpA9N7qywWIT5Y\nfYaq5M8i6vvLg0CzrH9fHORtnkdjdu1y+0MCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFOhOx1yt3Z7mvGB9jBv\n2ymdZwiOMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQBehqY36UGDvPVU9+vtaYGr38dBbp+LzkjZzHwKT1XJSSUc2wqM\nhnCIQKilonrTIvP1vmkQi8qHPvDRtBZKqvz/AErW/ZwQdZzqYNFd+BmOXaeZWV0Q\noHtDzXmcwtP8aUQpxN0e1xkWb1E80qoy+0uuRqb/50b/R4Q5qqSfJhkn6z8nwB10\n7RjLtJPrK8igxdpr3tGUzfAOyiPrIDncY7UJaL84GFp7WWAkH0WG3H8Y8DRcRXOU\nmqDxDLUP3rNuow3jnGxiUY+gGX5OqaZg4f4P6QzOSmeQYs6nLpH0PiN00+oS1BbD\nbpWdZEttILPI+vAYkU4QuBKKDjJL6HbSd+cn\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgIDAIVCMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTEzMTcw\nNjQxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\nc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\nU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\nYXpvbiBSRFMgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDE+T2xYjUbxOp+pv+gRA3FO24+1zCWgXTDF1DHrh1lsPg5k7ht\n2KPYzNc+Vg4E+jgPiW0BQnA6jStX5EqVh8BU60zELlxMNvpg4KumniMCZ3krtMUC\nau1NF9rM7HBh+O+DYMBLK5eSIVt6lZosOb7bCi3V6wMLA8YqWSWqabkxwN4w0vXI\n8lu5uXXFRemHnlNf+yA/4YtN4uaAyd0ami9+klwdkZfkrDOaiy59haOeBGL8EB/c\ndbJJlguHH5CpCscs3RKtOOjEonXnKXldxarFdkMzi+aIIjQ8GyUOSAXHtQHb3gZ4\nnS6Ey0CMlwkB8vUObZU9fnjKJcL5QCQqOfwvAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQUPuRHohPxx4VjykmH\n6usGrLL1ETAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAUdR9Vb3y33Yj6X6KGtuthZ08SwjImVQPtknzpajNE5jOJAh8\nquvQnU9nlnMO85fVDU1Dz3lLHGJ/YG1pt1Cqq2QQ200JcWCvBRgdvH6MjHoDQpqZ\nHvQ3vLgOGqCLNQKFuet9BdpsHzsctKvCVaeBqbGpeCtt3Hh/26tgx0rorPLw90A2\nV8QSkZJjlcKkLa58N5CMM8Xz8KLWg3MZeT4DmlUXVCukqK2RGuP2L+aME8dOxqNv\nOnOz1zrL5mR2iJoDpk8+VE/eBDmJX40IJk6jBjWoxAO/RXq+vBozuF5YHN1ujE92\ntO8HItgTp37XT8bJBAiAnt5mxw+NLSqtxk2QdQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICY4kwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTMyMDEx\nNDJaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAr5u9OuLL/OF/fBNUX2kINJLzFl4DnmrhnLuSeSnBPgbb\nqddjf5EFFJBfv7IYiIWEFPDbDG5hoBwgMup5bZDbas+ZTJTotnnxVJTQ6wlhTmns\neHECcg2pqGIKGrxZfbQhlj08/4nNAPvyYCTS0bEcmQ1emuDPyvJBYDDLDU6AbCB5\n6Z7YKFQPTiCBblvvNzchjLWF9IpkqiTsPHiEt21sAdABxj9ityStV3ja/W9BfgxH\nwzABSTAQT6FbDwmQMo7dcFOPRX+hewQSic2Rn1XYjmNYzgEHisdUsH7eeXREAcTw\n61TRvaLH8AiOWBnTEJXPAe6wYfrcSd1pD0MXpoB62wIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUytwMiomQOgX5\nIchd+2lDWRUhkikwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBACf6lRDpfCD7BFRqiWM45hqIzffIaysmVfr+Jr+fBTjP\nuYe/ba1omSrNGG23bOcT9LJ8hkQJ9d+FxUwYyICQNWOy6ejicm4z0C3VhphbTPqj\nyjpt9nG56IAcV8BcRJh4o/2IfLNzC/dVuYJV8wj7XzwlvjysenwdrJCoLadkTr1h\neIdG6Le07sB9IxrGJL9e04afk37h7c8ESGSE4E+oS4JQEi3ATq8ne1B9DQ9SasXi\nIRmhNAaISDzOPdyLXi9N9V9Lwe/DHcja7hgLGYx3UqfjhLhOKwp8HtoZORixAmOI\nHfILgNmwyugAbuZoCazSKKBhQ0wgO0WZ66ZKTMG8Oho=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICUYkwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxODIx\nMTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyB1cy13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBANCEZBZyu6yJQFZBJmSUZfSZd3Ui2gitczMKC4FLr0QzkbxY+cLa\nuVONIOrPt4Rwi+3h/UdnUg917xao3S53XDf1TDMFEYp4U8EFPXqCn/GXBIWlU86P\nPvBN+gzw3nS+aco7WXb+woTouvFVkk8FGU7J532llW8o/9ydQyDIMtdIkKTuMfho\nOiNHSaNc+QXQ32TgvM9A/6q7ksUoNXGCP8hDOkSZ/YOLiI5TcdLh/aWj00ziL5bj\npvytiMZkilnc9dLY9QhRNr0vGqL0xjmWdoEXz9/OwjmCihHqJq+20MJPsvFm7D6a\n2NKybR9U+ddrjb8/iyLOjURUZnj5O+2+OPcCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEBxMBdv81xuzqcK5TVu\npHj+Aor8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQBZkfiVqGoJjBI37aTlLOSjLcjI75L5wBrwO39q+B4cwcmpj58P\n3sivv+jhYfAGEbQnGRzjuFoyPzWnZ1DesRExX+wrmHsLLQbF2kVjLZhEJMHF9eB7\nGZlTPdTzHErcnuXkwA/OqyXMpj9aghcQFuhCNguEfnROY9sAoK2PTfnTz9NJHL+Q\nUpDLEJEUfc0GZMVWYhahc0x38ZnSY2SKacIPECQrTI0KpqZv/P+ijCEcMD9xmYEb\njL4en+XKS1uJpw5fIU5Sj0MxhdGstH6S84iAE5J3GM3XHklGSFwwqPYvuTXvANH6\nuboynxRgSae59jIlAK6Jrr6GWMwQRbgcaAlW\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICEkYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxOTUz\nNDdaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAufodI2Flker8q7PXZG0P0vmFSlhQDw907A6eJuF/WeMo\nGHnll3b4S6nC3oRS3nGeRMHbyU2KKXDwXNb3Mheu+ox+n5eb/BJ17eoj9HbQR1cd\ngEkIciiAltf8gpMMQH4anP7TD+HNFlZnP7ii3geEJB2GGXSxgSWvUzH4etL67Zmn\nTpGDWQMB0T8lK2ziLCMF4XAC/8xDELN/buHCNuhDpxpPebhct0T+f6Arzsiswt2j\n7OeNeLLZwIZvVwAKF7zUFjC6m7/VmTQC8nidVY559D6l0UhhU0Co/txgq3HVsMOH\nPbxmQUwJEKAzQXoIi+4uZzHFZrvov/nDTNJUhC6DqwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwaZpaCme+EiV\nM5gcjeHZSTgOn4owHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAAR6a2meCZuXO2TF9bGqKGtZmaah4pH2ETcEVUjkvXVz\nsl+ZKbYjrun+VkcMGGKLUjS812e7eDF726ptoku9/PZZIxlJB0isC/0OyixI8N4M\nNsEyvp52XN9QundTjkl362bomPnHAApeU0mRbMDRR2JdT70u6yAzGLGsUwMkoNnw\n1VR4XKhXHYGWo7KMvFrZ1KcjWhubxLHxZWXRulPVtGmyWg/MvE6KF+2XMLhojhUL\n+9jB3Fpn53s6KMx5tVq1x8PukHmowcZuAF8k+W4gk8Y68wIwynrdZrKRyRv6CVtR\nFZ8DeJgoNZT3y/GT254VqMxxfuy2Ccb/RInd16tEvVk=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICOYIwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTcyMDA1\nMjlaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMyAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEA4dMak8W+XW8y/2F6nRiytFiA4XLwePadqWebGtlIgyCS\nkbug8Jv5w7nlMkuxOxoUeD4WhI6A9EkAn3r0REM/2f0aYnd2KPxeqS2MrtdxxHw1\nxoOxk2x0piNSlOz6yog1idsKR5Wurf94fvM9FdTrMYPPrDabbGqiBMsZZmoHLvA3\nZ+57HEV2tU0Ei3vWeGIqnNjIekS+E06KhASxrkNU5vi611UsnYZlSi0VtJsH4UGV\nLhnHl53aZL0YFO5mn/fzuNG/51qgk/6EFMMhaWInXX49Dia9FnnuWXwVwi6uX1Wn\n7kjoHi5VtmC8ZlGEHroxX2DxEr6bhJTEpcLMnoQMqwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUsUI5Cb3SWB8+\ngv1YLN/ABPMdxSAwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAJAF3E9PM1uzVL8YNdzb6fwJrxxqI2shvaMVmC1mXS+w\nG0zh4v2hBZOf91l1EO0rwFD7+fxoI6hzQfMxIczh875T6vUXePKVOCOKI5wCrDad\nzQbVqbFbdhsBjF4aUilOdtw2qjjs9JwPuB0VXN4/jY7m21oKEOcnpe36+7OiSPjN\nxngYewCXKrSRqoj3mw+0w/+exYj3Wsush7uFssX18av78G+ehKPIVDXptOCP/N7W\n8iKVNeQ2QGTnu2fzWsGUSvMGyM7yqT+h1ILaT//yQS8er511aHMLc142bD4D9VSy\nDgactwPDTShK/PXqhvNey9v/sKXm4XatZvwcc8KYlW4=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICcEUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNjU2\nMjBaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAndtkldmHtk4TVQAyqhAvtEHSMb6pLhyKrIFved1WO3S7\n+I+bWwv9b2W/ljJxLq9kdT43bhvzonNtI4a1LAohS6bqyirmk8sFfsWT3akb+4Sx\n1sjc8Ovc9eqIWJCrUiSvv7+cS7ZTA9AgM1PxvHcsqrcUXiK3Jd/Dax9jdZE1e15s\nBEhb2OEPE+tClFZ+soj8h8Pl2Clo5OAppEzYI4LmFKtp1X/BOf62k4jviXuCSst3\nUnRJzE/CXtjmN6oZySVWSe0rQYuyqRl6//9nK40cfGKyxVnimB8XrrcxUN743Vud\nQQVU0Esm8OVTX013mXWQXJHP2c0aKkog8LOga0vobQIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQULmoOS1mFSjj+\nsnUPx4DgS3SkLFYwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAAkVL2P1M2/G9GM3DANVAqYOwmX0Xk58YBHQu6iiQg4j\nb4Ky/qsZIsgT7YBsZA4AOcPKQFgGTWhe9pvhmXqoN3RYltN8Vn7TbUm/ZVDoMsrM\ngwv0+TKxW1/u7s8cXYfHPiTzVSJuOogHx99kBW6b2f99GbP7O1Sv3sLq4j6lVvBX\nFiacf5LAWC925nvlTzLlBgIc3O9xDtFeAGtZcEtxZJ4fnGXiqEnN4539+nqzIyYq\nnvlgCzyvcfRAxwltrJHuuRu6Maw5AGcd2Y0saMhqOVq9KYKFKuD/927BTrbd2JVf\n2sGWyuPZPCk3gq+5pCjbD0c6DkhcMGI6WwxvM5V/zSM=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICJDQwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNzAz\nMTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTMgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAL9bL7KE0n02DLVtlZ2PL+g/BuHpMYFq2JnE2RgompGurDIZdjmh\n1pxfL3nT+QIVMubuAOy8InRfkRxfpxyjKYdfLJTPJG+jDVL+wDcPpACFVqoV7Prg\npVYEV0lc5aoYw4bSeYFhdzgim6F8iyjoPnObjll9mo4XsHzSoqJLCd0QC+VG9Fw2\nq+GDRZrLRmVM2oNGDRbGpGIFg77aRxRapFZa8SnUgs2AqzuzKiprVH5i0S0M6dWr\ni+kk5epmTtkiDHceX+dP/0R1NcnkCPoQ9TglyXyPdUdTPPRfKCq12dftqll+u4mV\nARdN6WFjovxax8EAP2OAUTi1afY+1JFMj+sCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLfhrbrO5exkCVgxW0x3\nY2mAi8lNMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQAigQ5VBNGyw+OZFXwxeJEAUYaXVoP/qrhTOJ6mCE2DXUVEoJeV\nSxScy/TlFA9tJXqmit8JH8VQ/xDL4ubBfeMFAIAo4WzNWDVoeVMqphVEcDWBHsI1\nAETWzfsapRS9yQekOMmxg63d/nV8xewIl8aNVTHdHYXMqhhik47VrmaVEok1UQb3\nO971RadLXIEbVd9tjY5bMEHm89JsZDnDEw1hQXBb67Elu64OOxoKaHBgUH8AZn/2\nzFsL1ynNUjOhCSAA15pgd1vjwc0YsBbAEBPcHBWYBEyME6NLNarjOzBl4FMtATSF\nwWCKRGkvqN8oxYhwR2jf2rR5Mu4DWkK5Q8Ep\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICJVUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTkxODE2\nNTNaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyB1cy1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAM3i/k2u6cqbMdcISGRvh+m+L0yaSIoOXjtpNEoIftAipTUYoMhL\nInXGlQBVA4shkekxp1N7HXe1Y/iMaPEyb3n+16pf3vdjKl7kaSkIhjdUz3oVUEYt\ni8Z/XeJJ9H2aEGuiZh3kHixQcZczn8cg3dA9aeeyLSEnTkl/npzLf//669Ammyhs\nXcAo58yvT0D4E0D/EEHf2N7HRX7j/TlyWvw/39SW0usiCrHPKDLxByLojxLdHzso\nQIp/S04m+eWn6rmD+uUiRteN1hI5ncQiA3wo4G37mHnUEKo6TtTUh+sd/ku6a8HK\nglMBcgqudDI90s1OpuIAWmuWpY//8xEG2YECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPqhoWZcrVY9mU7tuemR\nRBnQIj1jMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQB6zOLZ+YINEs72heHIWlPZ8c6WY8MDU+Be5w1M+BK2kpcVhCUK\nPJO4nMXpgamEX8DIiaO7emsunwJzMSvavSPRnxXXTKIc0i/g1EbiDjnYX9d85DkC\nE1LaAUCmCZBVi9fIe0H2r9whIh4uLWZA41oMnJx/MOmo3XyMfQoWcqaSFlMqfZM4\n0rNoB/tdHLNuV4eIdaw2mlHxdWDtF4oH+HFm+2cVBUVC1jXKrFv/euRVtsTT+A6i\nh2XBHKxQ1Y4HgAn0jACP2QSPEmuoQEIa57bEKEcZsBR8SDY6ZdTd2HLRIApcCOSF\nMRM8CKLeF658I0XgF8D5EsYoKPsA+74Z+jDH\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEETCCAvmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSUwIwYDVQQDDBxBbWF6b24gUkRTIEJldGEgUm9vdCAyMDE5IENBMB4XDTE5MDgy\nMDE3MTAwN1oXDTI0MDgxOTE3MzgyNlowgZkxCzAJBgNVBAYTAlVTMRMwEQYDVQQI\nDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\nV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSowKAYDVQQD\nDCFBbWF6b24gUkRTIEJldGEgdXMtZWFzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQDTNCOlotQcLP8TP82U2+nk0bExVuuMVOgFeVMx\nvbUHZQeIj9ikjk+jm6eTDnnkhoZcmJiJgRy+5Jt69QcRbb3y3SAU7VoHgtraVbxF\nQDh7JEHI9tqEEVOA5OvRrDRcyeEYBoTDgh76ROco2lR+/9uCvGtHVrMCtG7BP7ZB\nsSVNAr1IIRZZqKLv2skKT/7mzZR2ivcw9UeBBTUf8xsfiYVBvMGoEsXEycjYdf6w\nWV+7XS7teNOc9UgsFNN+9AhIBc1jvee5E//72/4F8pAttAg/+mmPUyIKtekNJ4gj\nOAR2VAzGx1ybzWPwIgOudZFHXFduxvq4f1hIRPH0KbQ/gkRrAgMBAAGjZjBkMA4G\nA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTkvpCD\n6C43rar9TtJoXr7q8dkrrjAfBgNVHSMEGDAWgBStoQwVpbGx87fxB3dEGDqKKnBT\n4TANBgkqhkiG9w0BAQsFAAOCAQEAJd9fOSkwB3uVdsS+puj6gCER8jqmhd3g/J5V\nZjk9cKS8H0e8pq/tMxeJ8kpurPAzUk5RkCspGt2l0BSwmf3ahr8aJRviMX6AuW3/\ng8aKplTvq/WMNGKLXONa3Sq8591J+ce8gtOX/1rDKmFI4wQ/gUzOSYiT991m7QKS\nFr6HMgFuz7RNJbb3Fy5cnurh8eYWA7mMv7laiLwTNsaro5qsqErD5uXuot6o9beT\na+GiKinEur35tNxAr47ax4IRubuIzyfCrezjfKc5raVV2NURJDyKP0m0CCaffAxE\nqn2dNfYc3v1D8ypg3XjHlOzRo32RB04o8ALHMD9LSwsYDLpMag==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEFzCCAv+gAwIBAgICFSUwDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSgwJgYDVQQDDB9BbWF6b24gUkRTIFByZXZpZXcgUm9vdCAyMDE5IENBMB4XDTE5\nMDgyMTIyMzk0N1oXDTI0MDgyMTIyMjk0OVowgZwxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6\nb24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMS0wKwYD\nVQQDDCRBbWF6b24gUkRTIFByZXZpZXcgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0dB/U7qRnSf05wOi7m10Pa2uPMTJv\nr6U/3Y17a5prq5Zr4++CnSUYarG51YuIf355dKs+7Lpzs782PIwCmLpzAHKWzix6\npOaTQ+WZ0+vUMTxyqgqWbsBgSCyP7pVBiyqnmLC/L4az9XnscrbAX4pNaoJxsuQe\nmzBo6yofjQaAzCX69DuqxFkVTRQnVy7LCFkVaZtjNAftnAHJjVgQw7lIhdGZp9q9\nIafRt2gteihYfpn+EAQ/t/E4MnhrYs4CPLfS7BaYXBycEKC5Muj1l4GijNNQ0Efo\nxG8LSZz7SNgUvfVwiNTaqfLP3AtEAWiqxyMyh3VO+1HpCjT7uNBFtmF3AgMBAAGj\nZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW\nBBQtinkdrj+0B2+qdXngV2tgHnPIujAfBgNVHSMEGDAWgBRp0xqULkNh/w2ZVzEI\no2RIY7O03TANBgkqhkiG9w0BAQsFAAOCAQEAtJdqbCxDeMc8VN1/RzCabw9BIL/z\n73Auh8eFTww/sup26yn8NWUkfbckeDYr1BrXa+rPyLfHpg06kwR8rBKyrs5mHwJx\nbvOzXD/5WTdgreB+2Fb7mXNvWhenYuji1MF+q1R2DXV3I05zWHteKX6Dajmx+Uuq\nYq78oaCBSV48hMxWlp8fm40ANCL1+gzQ122xweMFN09FmNYFhwuW+Ao+Vv90ZfQG\nPYwTvN4n/gegw2TYcifGZC2PNX74q3DH03DXe5fvNgRW5plgz/7f+9mS+YHd5qa9\ntYTPUvoRbi169ou6jicsMKUKPORHWhiTpSCWR1FMMIbsAcsyrvtIsuaGCQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/jCCAuagAwIBAgIQdOCSuA9psBpQd8EI368/0DANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIHNhLWVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTE5MTgwNjI2WhgPMjA2MTA1MTkxOTA2MjZaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgc2EtZWFzdC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN6ftL6w8v3dB2yW\nLjCxSP1D7ZsOTeLZOSCz1Zv0Gkd0XLhil5MdHOHBvwH/DrXqFU2oGzCRuAy+aZis\nDardJU6ChyIQIciXCO37f0K23edhtpXuruTLLwUwzeEPdcnLPCX+sWEn9Y5FPnVm\npCd6J8edH2IfSGoa9LdErkpuESXdidLym/w0tWG/O2By4TabkNSmpdrCL00cqI+c\nprA8Bx1jX8/9sY0gpAovtuFaRN+Ivg3PAnWuhqiSYyQ5nC2qDparOWuDiOhpY56E\nEgmTvjwqMMjNtExfYx6Rv2Ndu50TriiNKEZBzEtkekwXInTupmYTvc7U83P/959V\nUiQ+WSMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU4uYHdH0+\nbUeh81Eq2l5/RJbW+vswDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IB\nAQBhxcExJ+w74bvDknrPZDRgTeMLYgbVJjx2ExH7/Ac5FZZWcpUpFwWMIJJxtewI\nAnhryzM3tQYYd4CG9O+Iu0+h/VVfW7e4O3joWVkxNMb820kQSEwvZfA78aItGwOY\nWSaFNVRyloVicZRNJSyb1UL9EiJ9ldhxm4LTT0ax+4ontI7zTx6n6h8Sr6r/UOvX\nd9T5aUUENWeo6M9jGupHNn3BobtL7BZm2oS8wX8IVYj4tl0q5T89zDi2x0MxbsIV\n5ZjwqBQ5JWKv7ASGPb+z286RjPA9R2knF4lJVZrYuNV90rHvI/ECyt/JrDqeljGL\nBLl1W/UsvZo6ldLIpoMbbrb5\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBDCCAuygAwIBAgIQUfVbqapkLYpUqcLajpTJWzANBgkqhkiG9w0BAQsFADCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIG1lLWNlbnRyYWwtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNV\nBAcMB1NlYXR0bGUwIBcNMjIwNTA2MjMyMDA5WhgPMjA2MjA1MDcwMDIwMDlaMIGa\nMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5j\nLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMzAxBgNVBAMMKkFt\nYXpvbiBSRFMgbWUtY2VudHJhbC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJIeovu3\newI9FVitXMQzvkh34aQ6WyI4NO3YepfJaePiv3cnyFGYHN2S1cR3UQcLWgypP5va\nj6bfroqwGbCbZZcb+6cyOB4ceKO9Ws1UkcaGHnNDcy5gXR7aCW2OGTUfinUuhd2d\n5bOGgV7JsPbpw0bwJ156+MwfOK40OLCWVbzy8B1kITs4RUPNa/ZJnvIbiMu9rdj4\n8y7GSFJLnKCjlOFUkNI5LcaYvI1+ybuNgphT3nuu5ZirvTswGakGUT/Q0J3dxP0J\npDfg5Sj/2G4gXiaM0LppVOoU5yEwVewhQ250l0eQAqSrwPqAkdTg9ng360zqCFPE\nJPPcgI1tdGUgneECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\n/2AJVxWdZxc8eJgdpbwpW7b0f7IwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB\nCwUAA4IBAQBYm63jTu2qYKJ94gKnqc+oUgqmb1mTXmgmp/lXDbxonjszJDOXFbri\n3CCO7xB2sg9bd5YWY8sGKHaWmENj3FZpCmoefbUx++8D7Mny95Cz8R32rNcwsPTl\nebpd9A/Oaw5ug6M0x/cNr0qzF8Wk9Dx+nFEimp8RYQdKvLDfNFZHjPa1itnTiD8M\nTorAqj+VwnUGHOYBsT/0NY12tnwXdD+ATWfpEHdOXV+kTMqFFwDyhfgRVNpTc+os\nygr8SwhnSCpJPB/EYl2S7r+tgAbJOkuwUvGT4pTqrzDQEhwE7swgepnHC87zhf6l\nqN6mVpSnQKQLm6Ob5TeCEFgcyElsF5bH\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAOxu0I1QuMAhIeszB3fJIlkwCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyB1cy13ZXN0LTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTI0MjIwNjU5WhgPMjEyMTA1MjQyMzA2NTlaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgdXMtd2VzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEz4bylRcGqqDWdP7gQIIoTHdBK6FNtKH1\n4SkEIXRXkYDmRvL9Bci1MuGrwuvrka5TDj4b7e+csY0llEzHpKfq6nJPFljoYYP9\nuqHFkv77nOpJJ633KOr8IxmeHW5RXgrZo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBQQikVz8wmjd9eDFRXzBIU8OseiGzAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIwf06Mcrpw1O0EBLBBrp84m37NYtOkE/0Z0O+C7D41wnXi\nEQdn6PXUVgdD23Gj82SrAjEAklhKs+liO1PtN15yeZR1Io98nFve+lLptaLakZcH\n+hfFuUtCqMbaI8CdvJlKnPqT\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRALyWMTyCebLZOGcZZQmkmfcwDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMyBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI0MjAyODAzWhgPMjEyMTA1MjQyMTI4MDNa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTMgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nwGFiyDyCrGqgdn4fXG12cxKAAfVvhMea1mw5h9CVRoavkPqhzQpAitSOuMB9DeiP\nwQyqcsiGl/cTEau4L+AUBG8b9v26RlY48exUYBXj8CieYntOT9iNw5WtdYJa3kF/\nJxgI+HDMzE9cmHDs5DOO3S0uwZVyra/xE1ymfSlpOeUIOTpHRJv97CBUEpaZMUW5\nSr6GruuOwFVpO5FX3A/jQlcS+UN4GjSRgDUJuqg6RRQldEZGCVCCmodbByvI2fGm\nreGpsPJD54KkmAX08nOR8e5hkGoHxq0m2DLD4SrOFmt65vG47qnuwplWJjtk9B3Z\n9wDoopwZLBOtlkPIkUllWm1P8EuHC1IKOA+wSP6XdT7cy8S77wgyHzR0ynxv7q/l\nvlZtH30wnNqFI0y9FeogD0TGMCHcnGqfBSicJXPy9T4fU6f0r1HwqKwPp2GArwe7\ndnqLTj2D7M9MyVtFjEs6gfGWXmu1y5uDrf+CszurE8Cycoma+OfjjuVQgWOCy7Nd\njJswPxAroTzVfpgoxXza4ShUY10woZu0/J+HmNmqK7lh4NS75q1tz75in8uTZDkV\nbe7GK+SEusTrRgcf3tlgPjSTWG3veNzFDF2Vn1GLJXmuZfhdlVQDBNXW4MNREExS\ndG57kJjICpT+r8X+si+5j51gRzkSnMYs7VHulpxfcwECAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQU4JWOpDBmUBuWKvGPZelw87ezhL8wDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQBRNLMql7itvXSEFQRAnyOjivHz\nl5IlWVQjAbOUr6ogZcwvK6YpxNAFW5zQr8F+fdkiypLz1kk5irx9TIpff0BWC9hQ\n/odMPO8Gxn8+COlSvc+dLsF2Dax3Hvz0zLeKMo+cYisJOzpdR/eKd0/AmFdkvQoM\nAOK9n0yYvVJU2IrSgeJBiiCarpKSeAktEVQ4rvyacQGr+QAPkkjRwm+5LHZKK43W\nnNnggRli9N/27qYtc5bgr3AaQEhEXMI4RxPRXCLsod0ehMGWyRRK728a+6PMMJAJ\nWHOU0x7LCEMPP/bvpLj3BdvSGqNor4ZtyXEbwREry1uzsgODeRRns5acPwTM6ff+\nCmxO2NZ0OktIUSYRmf6H/ZFlZrIhV8uWaIwEJDz71qvj7buhQ+RFDZ9CNL64C0X6\nmf0zJGEpddjANHaaVky+F4gYMtEy2K2Lcm4JGTdyIzUoIe+atzCnRp0QeIcuWtF+\ns8AjDYCVFNypcMmqbRmNpITSnOoCHSRuVkY3gutVoYyMLbp8Jm9SJnCIlEWTA6Rm\nwADOMGZJVn5/XRTRuetVOB3KlQDjs9OO01XN5NzGSZO2KT9ngAUfh9Eqhf1iRWSP\nnZlRbQ2NRCuY/oJ5N59mLGxnNJSE7giEKEBRhTQ/XEPIUYAUPD5fca0arKRJwbol\nl9Se1Hsq0ZU5f+OZKQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAK7vlRrGVEePJpW1VHMXdlIwDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBhZi1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MTkxOTI4NDNaGA8yMTIxMDUxOTIwMjg0M1owgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBhZi1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMZiHOQC6x4o\neC7vVOMCGiN5EuLqPYHdceFPm4h5k/ZejXTf7kryk6aoKZKsDIYihkaZwXVS7Y/y\n7Ig1F1ABi2jD+CYprj7WxXbhpysmN+CKG7YC3uE4jSvfvUnpzionkQbjJsRJcrPO\ncZJM4FVaVp3mlHHtvnM+K3T+ni4a38nAd8xrv1na4+B8ZzZwWZXarfg8lJoGskSn\nou+3rbGQ0r+XlUP03zWujHoNlVK85qUIQvDfTB7n3O4s1XNGvkfv3GNBhYRWJYlB\n4p8T+PFN8wG+UOByp1gV7BD64RnpuZ8V3dRAlO6YVAmINyG5UGrPzkIbLtErUNHO\n4iSp4UqYvztDqJWWHR/rA84ef+I9RVwwZ8FQbjKq96OTnPrsr63A5mXTC9dXKtbw\nXNJPQY//FEdyM3K8sqM0IdCzxCA1MXZ8+QapWVjwyTjUwFvL69HYky9H8eAER59K\n5I7u/CWWeCy2R1SYUBINc3xxLr0CGGukcWPEZW2aPo5ibW5kepU1P/pzdMTaTfao\nF42jSFXbc7gplLcSqUgWwzBnn35HLTbiZOFBPKf6vRRu8aRX9atgHw/EjCebi2xP\nxIYr5Ub8u0QVHIqcnF1/hVzO/Xz0chj3E6VF/yTXnsakm+W1aM2QkZbFGpga+LMy\nmFCtdPrELjea2CfxgibaJX1Q4rdEpc8DAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFDSaycEyuspo/NOuzlzblui8KotFMA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEAbosemjeTRsL9o4v0KadBUNS3V7gdAH+X4vH2\nEe1Jc91VOGLdd/s1L9UX6bhe37b9WjUD69ur657wDW0RzxMYgQdZ27SUl0tEgGGp\ncCmVs1ky3zEN+Hwnhkz+OTmIg1ufq0W2hJgJiluAx2r1ib1GB+YI3Mo3rXSaBYUk\nbgQuujYPctf0PA153RkeICE5GI3OaJ7u6j0caYEixBS3PDHt2MJWexITvXGwHWwc\nCcrC05RIrTUNOJaetQw8smVKYOfRImEzLLPZ5kf/H3Cbj8BNAFNsa10wgvlPuGOW\nXLXqzNXzrG4V3sjQU5YtisDMagwYaN3a6bBf1wFwFIHQoAPIgt8q5zaQ9WI+SBns\nIl6rd4zfvjq/BPmt0uI7rVg/cgbaEg/JDL2neuM9CJAzmKxYxLQuHSX2i3Fy4Y1B\ncnxnRQETCRZNPGd00ADyxPKVoYBC45/t+yVusArFt+2SVLEGiFBr23eG2CEZu+HS\nnDEgIfQ4V3YOTUNa86wvbAss1gbbnT/v1XCnNGClEWCWNCSRjwV2ZmQ/IVTmNHPo\n7axTTBBJbKJbKzFndCnuxnDXyytdYRgFU7Ly3sa27WS2KFyFEDebLFRHQEfoYqCu\nIupSqBSbXsR3U10OTjc9z6EPo1nuV6bdz+gEDthmxKa1NI+Qb1kvyliXQHL2lfhr\n5zT5+Bs=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/zCCA+egAwIBAgIRAOLV6zZcL4IV2xmEneN1GwswDQYJKoZIhvcNAQEMBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyB1cy13ZXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE5MDg1OFoYDzIxMjEwNTE5MjAwODU4WjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIHVzLXdlc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC7koAKGXXlLixN\nfVjhuqvz0WxDeTQfhthPK60ekRpftkfE5QtnYGzeovaUAiS58MYVzqnnTACDwcJs\nIGTFE6Wd7sB6r8eI/3CwI1pyJfxepubiQNVAQG0zJETOVkoYKe/5KnteKtnEER3X\ntCBRdV/rfbxEDG9ZAsYfMl6zzhEWKF88G6xhs2+VZpDqwJNNALvQuzmTx8BNbl5W\nRUWGq9CQ9GK9GPF570YPCuURW7kl35skofudE9bhURNz51pNoNtk2Z3aEeRx3ouT\nifFJlzh+xGJRHqBG7nt5NhX8xbg+vw4xHCeq1aAe6aVFJ3Uf9E2HzLB4SfIT9bRp\nP7c9c0ySGt+3n+KLSHFf/iQ3E4nft75JdPjeSt0dnyChi1sEKDi0tnWGiXaIg+J+\nr1ZtcHiyYpCB7l29QYMAdD0TjfDwwPayLmq//c20cPmnSzw271VwqjUT0jYdrNAm\ngV+JfW9t4ixtE3xF2jaUh/NzL3bAmN5v8+9k/aqPXlU1BgE3uPwMCjrfn7V0I7I1\nWLpHyd9jF3U/Ysci6H6i8YKgaPiOfySimQiDu1idmPld659qerutUSemQWmPD3bE\ndcjZolmzS9U0Ujq/jDF1YayN3G3xvry1qWkTci0qMRMu2dZu30Herugh9vsdTYkf\n00EqngPbqtIVLDrDjEQLqPcb8QvWFQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBQBqg8Za/L0YMHURGExHfvPyfLbOTAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQEMBQADggIBACAGPMa1QL7P/FIO7jEtMelJ0hQlQepKnGtbKz4r\nXq1bUX1jnLvnAieR9KZmeQVuKi3g3CDU6b0mDgygS+FL1KDDcGRCSPh238Ou8KcG\nHIxtt3CMwMHMa9gmdcMlR5fJF9vhR0C56KM2zvyelUY51B/HJqHwGvWuexryXUKa\nwq1/iK2/d9mNeOcjDvEIj0RCMI8dFQCJv3PRCTC36XS36Tzr6F47TcTw1c3mgKcs\nxpcwt7ezrXMUunzHS4qWAA5OGdzhYlcv+P5GW7iAA7TDNrBF+3W4a/6s9v2nQAnX\nUvXd9ul0ob71377UhZbJ6SOMY56+I9cJOOfF5QvaL83Sz29Ij1EKYw/s8TYdVqAq\n+dCyQZBkMSnDFLVe3J1KH2SUSfm3O98jdPORQrUlORQVYCHPls19l2F6lCmU7ICK\nhRt8EVSpXm4sAIA7zcnR2nU00UH8YmMQLnx5ok9YGhuh3Ehk6QlTQLJux6LYLskd\n9YHOLGW/t6knVtV78DgPqDeEx/Wu/5A8R0q7HunpWxr8LCPBK6hksZnOoUhhb8IP\nvl46Ve5Tv/FlkyYr1RTVjETmg7lb16a8J0At14iLtpZWmwmuv4agss/1iBVMXfFk\n+ZGtx5vytWU5XJmsfKA51KLsMQnhrLxb3X3zC+JRCyJoyc8++F3YEcRi2pkRYE3q\nHing\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRANxgyBbnxgTEOpDul2ZnC0UwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMyBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNjEwMTgxOTA3WhgPMjA2MTA2MTAxOTE5MDda\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtc291dGhlYXN0LTMgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nxnwSDAChrMkfk5TA4Dk8hKzStDlSlONzmd3fTG0Wqr5+x3EmFT6Ksiu/WIwEl9J2\nK98UI7vYyuZfCxUKb1iMPeBdVGqk0zb92GpURd+Iz/+K1ps9ZLeGBkzR8mBmAi1S\nOfpwKiTBzIv6E8twhEn4IUpHsdcuX/2Y78uESpJyM8O5CpkG0JaV9FNEbDkJeBUQ\nAo2qqNcH4R0Qcr5pyeqA9Zto1RswgL06BQMI9dTpfwSP5VvkvcNUaLl7Zv5WzLQE\nJzORWePvdPzzvWEkY/3FPjxBypuYwssKaERW0fkPDmPtykktP9W/oJolKUFI6pXp\ny+Y6p6/AVdnQD2zZjW5FhQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBT+jEKs96LC+/X4BZkUYUkzPfXdqTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAIGQqgqcQ6XSGkmNebzR6DhadTbfDmbYeN5N0Vuzv+Tdmufb\ntMGjdjnYMg4B+IVnTKQb+Ox3pL9gbX6KglGK8HupobmIRtwKVth+gYYz3m0SL/Nk\nhaWPYzOm0x3tJm8jSdufJcEob4/ATce9JwseLl76pSWdl5A4lLjnhPPKudUDfH+1\nBLNUi3lxpp6GkC8aWUPtupnhZuXddolTLOuA3GwTZySI44NfaFRm+o83N1jp+EwD\n6e94M4cTRzjUv6J3MZmSbdtQP/Tk1uz2K4bQZGP0PZC3bVpqiesdE/xr+wbu8uHr\ncM1JXH0AmXf1yIkTgyWzmvt0k1/vgcw5ixAqvvE=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIRAMhw98EQU18mIji+unM2YH8wDQYJKoZIhvcNAQELBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBhcC1zb3V0aC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMjA2MDYyMTQyMjJaGA8yMDYyMDYwNjIyNDIyMlowgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBhcC1zb3V0aC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIeeRoLfTm+7\nvqm7ZlFSx+1/CGYHyYrOOryM4/Z3dqYVHFMgWTR7V3ziO8RZ6yUanrRcWVX3PZbF\nAfX0KFE8OgLsXEZIX8odSrq86+/Th5eZOchB2fDBsUB7GuN2rvFBbM8lTI9ivVOU\nlbuTnYyb55nOXN7TpmH2bK+z5c1y9RVC5iQsNAl6IJNvSN8VCqXh31eK5MlKB4DT\n+Y3OivCrSGsjM+UR59uZmwuFB1h+icE+U0p9Ct3Mjq3MzSX5tQb6ElTNGlfmyGpW\nKh7GQ5XU1KaKNZXoJ37H53woNSlq56bpVrKI4uv7ATpdpFubOnSLtpsKlpLdR3sy\nWs245200pC8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUp0ki\n6+eWvsnBjQhMxwMW5pwn7DgwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUA\nA4IBAQB2V8lv0aqbYQpj/bmVv/83QfE4vOxKCJAHv7DQ35cJsTyBdF+8pBczzi3t\n3VNL5IUgW6WkyuUOWnE0eqAFOUVj0yTS1jSAtfl3vOOzGJZmWBbqm9BKEdu1D8O6\nsB8bnomwiab2tNDHPmUslpdDqdabbkWwNWzLJ97oGFZ7KNODMEPXWKWNxg33iHfS\n/nlmnrTVI3XgaNK9qLZiUrxu9Yz5gxi/1K+sG9/Dajd32ZxjRwDipOLiZbiXQrsd\nqzIMY4GcWf3g1gHL5mCTfk7dG22h/rhPyGV0svaDnsb+hOt6sv1McMN6Y3Ou0mtM\n/UaAXojREmJmTSCNvs2aBny3/2sy\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAMnRxsKLYscJV8Qv5pWbL7swCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyBzYS1lYXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTE5MTgxNjAxWhgPMjEyMTA1MTkxOTE2MDFaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgc2EtZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEjFOCZgTNVKxLKhUxffiDEvTLFhrmIqdO\ndKqVdgDoELEzIHWDdC+19aDPitbCYtBVHl65ITu/9pn6mMUl5hhUNtfZuc6A+Iw1\nsBe0v0qI3y9Q9HdQYrGgeHDh8M5P7E2ho0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBS5L7/8M0TzoBZk39Ps7BkfTB4yJTAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIwI43O0NtWKTgnVv9z0LO5UMZYgSve7GvGTwqktZYCMObE\nrUI4QerXM9D6JwLy09mqAjEAypfkdLyVWtaElVDUyHFkihAS1I1oUxaaDrynLNQK\nOu/Ay+ns+J+GyvyDUjBpVVW1\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/jCCA+agAwIBAgIQR71Z8lTO5Sj+as2jB7IWXzANBgkqhkiG9w0BAQwFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIHVzLXdlc3QtMiBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTI0MjIwMzIwWhgPMjEyMTA1MjQyMzAzMjBaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgdXMtd2VzdC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAM977bHIs1WJijrS\nXQMfUOhmlJjr2v0K0UjPl52sE1TJ76H8umo1yR4T7Whkd9IwBHNGKXCJtJmMr9zp\nfB38eLTu+5ydUAXdFuZpRMKBWwPVe37AdJRKqn5beS8HQjd3JXAgGKUNNuE92iqF\nqi2fIqFMpnJXWo0FIW6s2Dl2zkORd7tH0DygcRi7lgVxCsw1BJQhFJon3y+IV8/F\nbnbUXSNSDUnDW2EhvWSD8L+t4eiXYsozhDAzhBvojpxhPH9OB7vqFYw5qxFx+G0t\nlSLX5iWi1jzzc3XyGnB6WInZDVbvnvJ4BGZ+dTRpOCvsoMIn9bz4EQTvu243c7aU\nHbS/kvnCASNt+zk7C6lbmaq0AGNztwNj85Opn2enFciWZVnnJ/4OeefUWQxD0EPp\nSjEd9Cn2IHzkBZrHCg+lWZJQBKbUVS0lLIMSsLQQ6WvR38jY7D2nxM1A93xWxwpt\nZtQnYRCVXH6zt2OwDAFePInWwxUjR5t/wu3XxPgpSfrmTi3WYtr1wFypAJ811e/P\nyBtswWUQ6BNJQvy+KnOEeGfOwmtdDFYR+GOCfvCihzrKJrxOtHIieehR5Iw3cbXG\nsm4pDzfMUVvDDz6C2M6PRlJhhClbatHCjik9hxFYEsAlqtVVK9pxaz9i8hOqSFQq\nkJSQsgWw+oM/B2CyjcSqkSQEu8RLAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFPmrdxpRRgu3IcaB5BTqlprcKdTsMA4GA1UdDwEB/wQEAwIBhjAN\nBgkqhkiG9w0BAQwFAAOCAgEAVdlxWjPvVKky3kn8ZizeM4D+EsLw9dWLau2UD/ls\nzwDCFoT6euagVeCknrn+YEl7g20CRYT9iaonGoMUPuMR/cdtPL1W/Rf40PSrGf9q\nQuxavWiHLEXOQTCtCaVZMokkvjuuLNDXyZnstgECuiZECTwhexUF4oiuhyGk9o01\nQMaiz4HX4lgk0ozALUvEzaNd9gWEwD2qe+rq9cQMTVq3IArUkvTIftZUaVUMzr0O\ned1+zAsNa9nJhURJ/6anJPJjbQgb5qA1asFcp9UaMT1ku36U3gnR1T/BdgG2jX3X\nUm0UcaGNVPrH1ukInWW743pxWQb7/2sumEEMVh+jWbB18SAyLI4WIh4lkurdifzS\nIuTFp8TEx+MouISFhz/vJDWZ84tqoLVjkEcP6oDypq9lFoEzHDJv3V1CYcIgOusT\nk1jm9P7BXdTG7TYzUaTb9USb6bkqkD9EwJAOSs7DI94aE6rsSws2yAHavjAMfuMZ\nsDAZvkqS2Qg2Z2+CI6wUZn7mzkJXbZoqRjDvChDXEB1mIhzVXhiNW/CR5WKVDvlj\n9v1sdGByh2pbxcLQtVaq/5coM4ANgphoNz3pOYUPWHS+JUrIivBZ+JobjXcxr3SN\n9iDzcu5/FVVNbq7+KN/nvPMngT+gduEN5m+EBjm8GukJymFG0m6BENRA0QSDqZ7k\nzDY=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAK5EYG3iHserxMqgg+0EFjgwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMyBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI0MjAyMzE2WhgPMjA2MTA1MjQyMTIzMTZa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTMgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\ns1L6TtB84LGraLHVC+rGPhLBW2P0oN/91Rq3AnYwqDOuTom7agANwEjvLq7dSRG/\nsIfZsSV/ABTgArZ5sCmLjHFZAo8Kd45yA9byx20RcYtAG8IZl+q1Cri+s0XefzyO\nU6mlfXZkVe6lzjlfXBkrlE/+5ifVbJK4dqOS1t9cWIpgKqv5fbE6Qbq4LVT+5/WM\nVd2BOljuBMGMzdZubqFKFq4mzTuIYfnBm7SmHlZfTdfBYPP1ScNuhpjuzw4n3NCR\nEdU6dQv04Q6th4r7eiOCwbWI9LkmVbvBe3ylhH63lApC7MiiPYLlB13xBubVHVhV\nq1NHoNTi+zA3MN9HWicRxQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBSuxoqm0/wjNiZLvqv+JlQwsDvTPDAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAFfTK/j5kv90uIbM8VaFdVbr/6weKTwehafT0pAk1bfLVX+7\nuf8oHgYiyKTTl0DFQicXejghXTeyzwoEkWSR8c6XkhD5vYG3oESqmt/RGvvoxz11\nrHHy7yHYu7RIUc3VQG60c4qxXv/1mWySGwVwJrnuyNT9KZXPevu3jVaWOVHEILaK\nHvzQ2YEcWBPmde/zEseO2QeeGF8FL45Q1d66wqIP4nNUd2pCjeTS5SpB0MMx7yi9\nki1OH1pv8tOuIdimtZ7wkdB8+JSZoaJ81b8sRrydRwJyvB88rftuI3YB4WwGuONT\nZezUPsmaoK69B0RChB0ofDpAaviF9V3xOWvVZfo=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGDzCCA/egAwIBAgIRAI0sMNG2XhaBMRN3zD7ZyoEwDQYJKoZIhvcNAQEMBQAw\ngZ8xCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE4MDYGA1UEAwwv\nQW1hem9uIFJEUyBQcmV2aWV3IHVzLWVhc3QtMiBSb290IENBIFJTQTQwOTYgRzEx\nEDAOBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTE4MjA1NzUwWhgPMjEyMTA1MTgyMTU3\nNTBaMIGfMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExODA2BgNV\nBAMML0FtYXpvbiBSRFMgUHJldmlldyB1cy1lYXN0LTIgUm9vdCBDQSBSU0E0MDk2\nIEcxMRAwDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\nCgKCAgEAh/otSiCu4Uw3hu7OJm0PKgLsLRqBmUS6jihcrkxfN2SHmp2zuRflkweU\nBhMkebzL+xnNvC8okzbgPWtUxSmDnIRhE8J7bvSKFlqs/tmEdiI/LMqe/YIKcdsI\n20UYmvyLIjtDaJIh598SHHlF9P8DB5jD8snJfhxWY+9AZRN+YVTltgQAAgayxkWp\nM1BbvxpOnz4CC00rE0eqkguXIUSuobb1vKqdKIenlYBNxm2AmtgvQfpsBIQ0SB+8\n8Zip8Ef5rtjSw5J3s2Rq0aYvZPfCVIsKYepIboVwXtD7E9J31UkB5onLBQlaHaA6\nXlH4srsMmrew5d2XejQGy/lGZ1nVWNsKO0x/Az2QzY5Kjd6AlXZ8kq6H68hscA5i\nOMbNlXzeEQsZH0YkId3+UsEns35AAjZv4qfFoLOu8vDotWhgVNT5DfdbIWZW3ZL8\nqbmra3JnCHuaTwXMnc25QeKgVq7/rG00YB69tCIDwcf1P+tFJWxvaGtV0g2NthtB\na+Xo09eC0L53gfZZ3hZw1pa3SIF5dIZ6RFRUQ+lFOux3Q/I3u+rYstYw7Zxc4Zeo\nY8JiedpQXEAnbw2ECHix/L6mVWgiWCiDzBnNLLdbmXjJRnafNSndSfFtHCnY1SiP\naCrNpzwZIJejoV1zDlWAMO+gyS28EqzuIq3WJK/TFE7acHkdKIcCAwEAAaNCMEAw\nDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUrmV1YASnuudfmqAZP4sKGTvScaEw\nDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQBGpEKeQoPvE85tN/25\nqHFkys9oHDl93DZ62EnOqAUKLd6v0JpCyEiop4nlrJe+4KrBYVBPyKOJDcIqE2Sp\n3cvgJXLhY4i46VM3Qxe8yuYF1ElqBpg3jJVj/sCQnYz9dwoAMWIJFaDWOvmU2E7M\nMRaKx+sPXFkIjiDA6Bv0m+VHef7aedSYIY7IDltEQHuXoqNacGrYo3I50R+fZs88\n/mB3e/V7967e99D6565yf9Lcjw4oQf2Hy7kl/6P9AuMz0LODnGITwh2TKk/Zo3RU\nVgq25RDrT4xJK6nFHyjUF6+4cOBxVpimmFw/VP1zaXT8DN5r4HyJ9p4YuSK8ha5N\n2pJc/exvU8Nv2+vS/efcDZWyuEdZ7eh1IJWQZlOZKIAONfRDRTpeQHJ3zzv3QVYy\nt78pYp/eWBHyVIfEE8p2lFKD4279WYe+Uvdb8c4Jm4TJwqkSJV8ifID7Ub80Lsir\nlPAU3OCVTBeVRFPXT2zpC4PB4W6KBSuj6OOcEu2y/HgWcoi7Cnjvp0vFTUhDFdus\nWz3ucmJjfVsrkEO6avDKu4SwdbVHsk30TVAwPd6srIdi9U6MOeOQSOSE4EsrrS7l\nSVmu2QIDUVFpm8QAHYplkyWIyGkupyl3ashH9mokQhixIU/Pzir0byePxHLHrwLu\n1axqeKpI0F5SBUPsaVNYY2uNFg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgIQCREfzzVyDTMcNME+gWnTCTANBgkqhkiG9w0BAQsFADCB\nnDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTUwMwYDVQQDDCxB\nbWF6b24gUkRTIGFwLXNvdXRoZWFzdC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4G\nA1UEBwwHU2VhdHRsZTAgFw0yMTA1MjQyMDQyMzNaGA8yMDYxMDUyNDIxNDIzM1ow\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMiBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDL\n1MT6br3L/4Pq87DPXtcjlXN3cnbNk2YqRAZHJayStTz8VtsFcGPJOpk14geRVeVk\ne9uKFHRbcyr/RM4owrJTj5X4qcEuATYZbo6ou/rW2kYzuWFZpFp7lqm0vasV4Z9F\nfChlhwkNks0UbM3G+psCSMNSoF19ERunj7w2c4E62LwujkeYLvKGNepjnaH10TJL\n2krpERd+ZQ4jIpObtRcMH++bTrvklc+ei8W9lqrVOJL+89v2piN3Ecdd389uphst\nqQdb1BBVXbhUrtuGHgVf7zKqN1SkCoktoWxVuOprVWhSvr7akaWeq0UmlvbEsujU\nvADqxGMcJFyCzxx3CkJjAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O\nBBYEFFk8UJmlhoxFT3PP12PvhvazHjT4MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG\n9w0BAQsFAAOCAQEAfFtr2lGoWVXmWAsIo2NYre7kzL8Xb9Tx7desKxCCz5HOOvIr\n8JMB1YK6A7IOvQsLJQ/f1UnKRh3X3mJZjKIywfrMSh0FiDf+rjcEzXxw2dGtUem4\nA+WMvIA3jwxnJ90OQj5rQ8bg3iPtE6eojzo9vWQGw/Vu48Dtw1DJo9210Lq/6hze\nhPhNkFh8fMXNT7Q1Wz/TJqJElyAQGNOXhyGpHKeb0jHMMhsy5UNoW5hLeMS5ffao\nTBFWEJ1gVfxIU9QRxSh+62m46JIg+dwDlWv8Aww14KgepspRbMqDuaM2cinoejv6\nt3dyOyHHrsOyv3ffZUKtQhQbQr+sUcL89lARsg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIRAIJLTMpzGNxqHZ4t+c1MlCIwDQYJKoZIhvcNAQELBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBhcC1lYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIxMzAzM1oYDzIwNjEwNTI1MjIzMDMzWjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGFwLWVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtdHut0ZhJ9Nn2\nMpVafFcwHdoEzx06okmmhjJsNy4l9QYVeh0UUoek0SufRNMRF4d5ibzpgZol0Y92\n/qKWNe0jNxhEj6sXyHsHPeYtNBPuDMzThfbvsLK8z7pBP7vVyGPGuppqW/6m4ZBB\nlcc9fsf7xpZ689iSgoyjiT6J5wlVgmCx8hFYc/uvcRtfd8jAHvheug7QJ3zZmIye\nV4htOW+fRVWnBjf40Q+7uTv790UAqs0Zboj4Yil+hER0ibG62y1g71XcCyvcVpto\n2/XW7Y9NCgMNqQ7fGN3wR1gjtSYPd7DO32LTzYhutyvfbpAZjsAHnoObmoljcgXI\nQjfBcCFpAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJI3aWLg\nCS5xqU5WYVaeT5s8lpO0MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC\nAQEAUwATpJOcGVOs3hZAgJwznWOoTzOVJKfrqBum7lvkVH1vBwxBl9CahaKj3ZOt\nYYp2qJzhDUWludL164DL4ZjS6eRedLRviyy5cRy0581l1MxPWTThs27z+lCC14RL\nPJZNVYYdl7Jy9Q5NsQ0RBINUKYlRY6OqGDySWyuMPgno2GPbE8aynMdKP+f6G/uE\nYHOf08gFDqTsbyfa70ztgVEJaRooVf5JJq4UQtpDvVswW2reT96qi6tXPKHN5qp3\n3wI0I1Mp4ePmiBKku2dwYzPfrJK/pQlvu0Gu5lKOQ65QdotwLAAoaFqrf9za1yYs\nINUkHLWIxDds+4OHNYcerGp5Dw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRAIO6ldra1KZvNWJ0TA1ihXEwDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTIxMjE0NTA1WhgPMjEyMTA1MjEyMjQ1MDVa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtc291dGhlYXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nsDN52Si9pFSyZ1ruh3xAN0nVqEs960o2IK5CPu/ZfshFmzAwnx/MM8EHt/jMeZtj\nSM58LADAsNDL01ELpFZATjgZQ6xNAyXRXE7RiTRUvNkK7O3o2qAGbLnJq/UqF7Sw\nLRnB8V6hYOv+2EjVnohtGCn9SUFGZtYDjWXsLd4ML4Zpxv0a5LK7oEC7AHzbUR7R\njsjkrXqSv7GE7bvhSOhMkmgxgj1F3J0b0jdQdtyyj109aO0ATUmIvf+Bzadg5AI2\nA9UA+TUcGeebhpHu8AP1Hf56XIlzPpaQv3ZJ4vzoLaVNUC7XKzAl1dlvCl7Klg/C\n84qmbD/tjZ6GHtzpLKgg7kQEV7mRoXq8X4wDX2AFPPQl2fv+Kbe+JODqm5ZjGegm\nuskABBi8IFv1hYx9jEulZPxC6uD/09W2+niFm3pirnlWS83BwVDTUBzF+CooUIMT\njhWkIIZGDDgMJTzouBHfoSJtS1KpUZi99m2WyVs21MNKHeWAbs+zmI6TO5iiMC+T\nuB8spaOiHFO1573Fmeer4sy3YA6qVoqVl6jjTQqOdy3frAMbCkwH22/crV8YA+08\nhLeHXrMK+6XUvU+EtHAM3VzcrLbuYJUI2XJbzTj5g0Eb8I8JWsHvWHR5K7Z7gceR\n78AzxQmoGEfV6KABNWKsgoCQnfb1BidDJIe3BsI0A6UCAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUABp0MlB14MSHgAcuNSOhs3MOlUcwDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQCv4CIOBSQi/QR9NxdRgVAG/pAh\ntFJhV7OWb/wqwsNKFDtg6tTxwaahdCfWpGWId15OUe7G9LoPiKiwM9C92n0ZeHRz\n4ewbrQVo7Eu1JI1wf0rnZJISL72hVYKmlvaWaacHhWxvsbKLrB7vt6Cknxa+S993\nKf8i2Psw8j5886gaxhiUtzMTBwoDWak8ZaK7m3Y6C6hXQk08+3pnIornVSFJ9dlS\nPAqt5UPwWmrEfF+0uIDORlT+cvrAwgSp7nUF1q8iasledycZ/BxFgQqzNwnkBDwQ\nZ/aM52ArGsTzfMhkZRz9HIEhz1/0mJw8gZtDVQroD8778h8zsx2SrIz7eWQ6uWsD\nQEeSWXpcheiUtEfzkDImjr2DLbwbA23c9LoexUD10nwohhoiQQg77LmvBVxeu7WU\nE63JqaYUlOLOzEmNJp85zekIgR8UTkO7Gc+5BD7P4noYscI7pPOL5rP7YLg15ZFi\nega+G53NTckRXz4metsd8XFWloDjZJJq4FfD60VuxgXzoMNT9wpFTNSH42PR2s9L\nI1vcl3w8yNccs9se2utM2nLsItZ3J0m/+QSRiw9hbrTYTcM9sXki0DtH2kyIOwYf\nlOrGJDiYOIrXSQK36H0gQ+8omlrUTvUj4msvkXuQjlfgx6sgp2duOAfnGxE7uHnc\nUhnJzzoe6M+LfGHkVQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICuDCCAj2gAwIBAgIQSAG6j2WHtWUUuLGJTPb1nTAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLW5vcnRoZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMDE2MzgyNloYDzIxMjEwNTIwMTczODI2WjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLW5vcnRoZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE2eqwU4FOzW8RV1W381Bd\nolhDOrqoMqzWli21oDUt7y8OnXM/lmAuOS6sr8Nt61BLVbONdbr+jgCYw75KabrK\nZGg3siqvMOgabIKkKuXO14wtrGyGDt7dnKXg5ERGYOZlo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBS1Acp2WYxOcblv5ikZ3ZIbRCCW+zAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaQAwZgIxAJL84J08PBprxmsAKPTotBuVI3MyW1r8\nxQ0i8lgCQUf8GcmYjQ0jI4oZyv+TuYJAcwIxAP9Xpzq0Docxb+4N1qVhpiOfWt1O\nFnemFiy9m1l+wv6p3riQMPV7mBVpklmijkIv3Q==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRALZLcqCVIJ25maDPE3sbPCIwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTIxMjEzOTM5WhgPMjA2MTA1MjEyMjM5Mzla\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtc291dGhlYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nypKc+6FfGx6Gl6fQ78WYS29QoKgQiur58oxR3zltWeg5fqh9Z85K5S3UbRSTqWWu\nXcfnkz0/FS07qHX+nWAGU27JiQb4YYqhjZNOAq8q0+ptFHJ6V7lyOqXBq5xOzO8f\n+0DlbJSsy7GEtJp7d7QCM3M5KVY9dENVZUKeJwa8PC5StvwPx4jcLeZRJC2rAVDG\nSW7NAInbATvr9ssSh03JqjXb+HDyywiqoQ7EVLtmtXWimX+0b3/2vhqcH5jgcKC9\nIGFydrjPbv4kwMrKnm6XlPZ9L0/3FMzanXPGd64LQVy51SI4d5Xymn0Mw2kMX8s6\nNf05OsWcDzJ1n6/Q1qHSxQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBRmaIc8eNwGP7i6P7AJrNQuK6OpFzAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAIBeHfGwz3S2zwIUIpqEEI5/sMySDeS+3nJR+woWAHeO0C8i\nBJdDh+kzzkP0JkWpr/4NWz84/IdYo1lqASd1Kopz9aT1+iROXaWr43CtbzjXb7/X\nZv7eZZFC8/lS5SROq42pPWl4ekbR0w8XGQElmHYcWS41LBfKeHCUwv83ATF0XQ6I\n4t+9YSqZHzj4vvedrvcRInzmwWJaal9s7Z6GuwTGmnMsN3LkhZ+/GD6oW3pU/Pyh\nEtWqffjsLhfcdCs3gG8x9BbkcJPH5aPAVkPn4wc8wuXg6xxb9YGsQuY930GWTYRf\nschbgjsuqznW4HHakq4WNhs1UdTSTKkRdZz7FUQ=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEDzCCAvegAwIBAgIRAM2zAbhyckaqRim63b+Tib8wDQYJKoZIhvcNAQELBQAw\ngZ8xCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE4MDYGA1UEAwwv\nQW1hem9uIFJEUyBQcmV2aWV3IHVzLWVhc3QtMiBSb290IENBIFJTQTIwNDggRzEx\nEDAOBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTE4MjA0OTQ1WhgPMjA2MTA1MTgyMTQ5\nNDVaMIGfMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExODA2BgNV\nBAMML0FtYXpvbiBSRFMgUHJldmlldyB1cy1lYXN0LTIgUm9vdCBDQSBSU0EyMDQ4\nIEcxMRAwDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEA1ybjQMH1MkbvfKsWJaCTXeCSN1SG5UYid+Twe+TjuSqaXWonyp4WRR5z\ntlkqq+L2MWUeQQAX3S17ivo/t84mpZ3Rla0cx39SJtP3BiA2BwfUKRjhPwOjmk7j\n3zrcJjV5k1vSeLNOfFFSlwyDiVyLAE61lO6onBx+cRjelu0egMGq6WyFVidTdCmT\nQ9Zw3W6LTrnPvPmEyjHy2yCHzH3E50KSd/5k4MliV4QTujnxYexI2eR8F8YQC4m3\nDYjXt/MicbqA366SOoJA50JbgpuVv62+LSBu56FpzY12wubmDZsdn4lsfYKiWxUy\nuc83a2fRXsJZ1d3whxrl20VFtLFHFQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBRC0ytKmDYbfz0Bz0Psd4lRQV3aNTAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQELBQADggEBAGv8qZu4uaeoF6zsbumauz6ea6tdcWt+hGFuwGrb\ntRbI85ucAmVSX06x59DJClsb4MPhL1XmqO3RxVMIVVfRwRHWOsZQPnXm8OYQ2sny\nrYuFln1COOz1U/KflZjgJmxbn8x4lYiTPZRLarG0V/OsCmnLkQLPtEl/spMu8Un7\nr3K8SkbWN80gg17Q8EV5mnFwycUx9xsTAaFItuG0en9bGsMgMmy+ZsDmTRbL+lcX\nFq8r4LT4QjrFz0shrzCwuuM4GmcYtBSxlacl+HxYEtAs5k10tmzRf6OYlY33tGf6\n1tkYvKryxDPF/EDgGp/LiBwx6ixYMBfISoYASt4V/ylAlHA=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtTCCAjqgAwIBAgIRAK9BSZU6nIe6jqfODmuVctYwCgYIKoZIzj0EAwMwgZkx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEyMDAGA1UEAwwpQW1h\nem9uIFJEUyBjYS1jZW50cmFsLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTIxMjIxMzA5WhgPMjEyMTA1MjEyMzEzMDlaMIGZMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMjAwBgNVBAMMKUFtYXpv\nbiBSRFMgY2EtY2VudHJhbC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEUkEERcgxneT5H+P+fERcbGmf\nbVx+M7rNWtgWUr6w+OBENebQA9ozTkeSg4c4M+qdYSObFqjxITdYxT1z/nHz1gyx\nOKAhLjWu+nkbRefqy3RwXaWT680uUaAP6ccnkZOMo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MB0GA1UdDgQWBBSN6fxlg0s5Wny08uRBYZcQ3TUoyzAOBgNVHQ8BAf8EBAMC\nAYYwCgYIKoZIzj0EAwMDaQAwZgIxAORaz+MBVoFBTmZ93j2G2vYTwA6T5hWzBWrx\nCrI54pKn5g6At56DBrkjrwZF5T1enAIxAJe/LZ9xpDkAdxDgGJFN8gZYLRWc0NRy\nRb4hihy5vj9L+w9uKc9VfEBIFuhT7Z3ljg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQB/57HSuaqUkLaasdjxUdPjANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE3NDAzNFoYDzIwNjEwNTE5MTg0MDM0WjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtbkaoVsUS76o\nTgLFmcnaB8cswBk1M3Bf4IVRcwWT3a1HeJSnaJUqWHCJ+u3ip/zGVOYl0gN1MgBb\nMuQRIJiB95zGVcIa6HZtx00VezDTr3jgGWRHmRjNVCCHGmxOZWvJjsIE1xavT/1j\nQYV/ph4EZEIZ/qPq7e3rHohJaHDe23Z7QM9kbyqp2hANG2JtU/iUhCxqgqUHNozV\nZd0l5K6KnltZQoBhhekKgyiHqdTrH8fWajYl5seD71bs0Axowb+Oh0rwmrws3Db2\nDh+oc2PwREnjHeca9/1C6J2vhY+V0LGaJmnnIuOANrslx2+bgMlyhf9j0Bv8AwSi\ndSWsobOhNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQb7vJT\nVciLN72yJGhaRKLn6Krn2TAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAAxEj8N9GslReAQnNOBpGl8SLgCMTejQ6AW/bapQvzxrZrfVOZOYwp/5oV0f\n9S1jcGysDM+DrmfUJNzWxq2Y586R94WtpH4UpJDGqZp+FuOVJL313te4609kopzO\nlDdmd+8z61+0Au93wB1rMiEfnIMkOEyt7D2eTFJfJRKNmnPrd8RjimRDlFgcLWJA\n3E8wca67Lz/G0eAeLhRHIXv429y8RRXDtKNNz0wA2RwURWIxyPjn1fHjA9SPDkeW\nE1Bq7gZj+tBnrqz+ra3yjZ2blss6Ds3/uRY6NYqseFTZWmQWT7FolZEnT9vMUitW\nI0VynUbShVpGf6946e0vgaaKw20=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/jCCAuagAwIBAgIQGyUVTaVjYJvWhroVEiHPpDANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIHVzLXdlc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTE5MTkwNDA2WhgPMjA2MTA1MTkyMDA0MDZaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgdXMtd2VzdC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANhyXpJ0t4nigRDZ\nEwNtFOem1rM1k8k5XmziHKDvDk831p7QsX9ZOxl/BT59Pu/P+6W6SvasIyKls1sW\nFJIjFF+6xRQcpoE5L5evMgN/JXahpKGeQJPOX9UEXVW5B8yi+/dyUitFT7YK5LZA\nMqWBN/LtHVPa8UmE88RCDLiKkqiv229tmwZtWT7nlMTTCqiAHMFcryZHx0pf9VPh\nx/iPV8p2gBJnuPwcz7z1kRKNmJ8/cWaY+9w4q7AYlAMaq/rzEqDaN2XXevdpsYAK\nTMMj2kji4x1oZO50+VPNfBl5ZgJc92qz1ocF95SAwMfOUsP8AIRZkf0CILJYlgzk\n/6u6qZECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm5jfcS9o\n+LwL517HpB6hG+PmpBswDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IB\nAQAcQ6lsqxi63MtpGk9XK8mCxGRLCad51+MF6gcNz6i6PAqhPOoKCoFqdj4cEQTF\nF8dCfa3pvfJhxV6RIh+t5FCk/y6bWT8Ls/fYKVo6FhHj57bcemWsw/Z0XnROdVfK\nYqbc7zvjCPmwPHEqYBhjU34NcY4UF9yPmlLOL8uO1JKXa3CAR0htIoW4Pbmo6sA4\n6P0co/clW+3zzsQ92yUCjYmRNeSbdXbPfz3K/RtFfZ8jMtriRGuO7KNxp8MqrUho\nHK8O0mlSUxGXBZMNicfo7qY8FD21GIPH9w5fp5oiAl7lqFzt3E3sCLD3IiVJmxbf\nfUwpGd1XZBBSdIxysRLM6j48\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrTCCAjOgAwIBAgIQU+PAILXGkpoTcpF200VD/jAKBggqhkjOPQQDAzCBljEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMS8wLQYDVQQDDCZBbWF6\nb24gUkRTIGFwLWVhc3QtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTAgFw0yMTA1MjUyMTQ1MTFaGA8yMTIxMDUyNTIyNDUxMVowgZYxCzAJBgNV\nBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYD\nVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1hem9uIFJE\nUyBhcC1lYXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1NlYXR0bGUw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT3tFKE8Kw1sGQAvNLlLhd8OcGhlc7MiW/s\nNXm3pOiCT4vZpawKvHBzD76Kcv+ZZzHRxQEmG1/muDzZGlKR32h8AAj+NNO2Wy3d\nCKTtYMiVF6Z2zjtuSkZQdjuQbe4eQ7qjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFAiSQOp16Vv0Ohpvqcbd2j5RmhYNMA4GA1UdDwEB/wQEAwIBhjAKBggq\nhkjOPQQDAwNoADBlAjBVsi+5Ape0kOhMt/WFkANkslD4qXA5uqhrfAtH29Xzz2NV\ntR7akiA771OaIGB/6xsCMQCZt2egCtbX7J0WkuZ2KivTh66jecJr5DHvAP4X2xtS\nF/5pS+AUhcKTEGjI9jDH3ew=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICuDCCAj2gAwIBAgIQT5mGlavQzFHsB7hV6Mmy6TAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNDIwNTAxNVoYDzIxMjEwNTI0MjE1MDE1WjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEcm4BBBjYK7clwm0HJRWS\nflt3iYwoJbIXiXn9c1y3E+Vb7bmuyKhS4eO8mwO4GefUcXObRfoHY2TZLhMJLVBQ\n7MN2xDc0RtZNj07BbGD3VAIFRTDX0mH9UNYd0JQM3t/Oo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBRrd5ITedfAwrGo4FA9UaDaGFK3rjAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaQAwZgIxAPBNqmVv1IIA3EZyQ6XuVf4gj79/DMO8\nbkicNS1EcBpUqbSuU4Zwt2BYc8c/t7KVOQIxAOHoWkoKZPiKyCxfMtJpCZySUG+n\nsXgB/LOyWE5BJcXUfm+T1ckeNoWeUUMOLmnJjg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAJcDeinvdNrDQBeJ8+t38WQwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtNCBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjIwNTI1MTY0OTE2WhgPMjA2MjA1MjUxNzQ5MTZa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtc291dGhlYXN0LTQgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nk8DBNkr9tMoIM0NHoFiO7cQfSX0cOMhEuk/CHt0fFx95IBytx7GHCnNzpM27O5z6\nx6iRhfNnx+B6CrGyCzOjxvPizneY+h+9zfvNz9jj7L1I2uYMuiNyOKR6FkHR46CT\n1CiArfVLLPaTqgD/rQjS0GL2sLHS/0dmYipzynnZcs613XT0rAWdYDYgxDq7r/Yi\nXge5AkWQFkMUq3nOYDLCyGGfQqWKkwv6lZUHLCDKf+Y0Uvsrj8YGCI1O8mF0qPCQ\nlmlfaDvbuBu1AV+aabmkvyFj3b8KRIlNLEtQ4N8KGYR2Jdb82S4YUGIOAt4wuuFt\n1B7AUDLk3V/u+HTWiwfoLQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBSNpcjz6ArWBtAA+Gz6kyyZxrrgdDAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAGJEd7UgOzHYIcQRSF7nSYyjLROyalaIV9AX4WXW/Cqlul1c\nMblP5etDZm7A/thliZIWAuyqv2bNicmS3xKvNy6/QYi1YgxZyy/qwJ3NdFl067W0\nt8nGo29B+EVK94IPjzFHWShuoktIgp+dmpijB7wkTIk8SmIoe9yuY4+hzgqk+bo4\nms2SOXSN1DoQ75Xv+YmztbnZM8MuWhL1T7hA4AMorzTQLJ9Pof8SpSdMHeDsHp0R\n01jogNFkwy25nw7cL62nufSuH2fPYGWXyNDg+y42wKsKWYXLRgUQuDVEJ2OmTFMB\nT0Vf7VuNijfIA9hkN2d3K53m/9z5WjGPSdOjGhg=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/jCCAuagAwIBAgIQRiwspKyrO0xoxDgSkqLZczANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIHVzLXdlc3QtMiBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTI0MjE1OTAwWhgPMjA2MTA1MjQyMjU5MDBaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgdXMtd2VzdC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL53Jk3GsKiu+4bx\njDfsevWbwPCNJ3H08Zp7GWhvI3Tgi39opfHYv2ku2BKFjK8N2L6RvNPSR8yplv5j\nY0tK0U+XVNl8o0ibhqRDhbTuh6KL8CFINWYzAajuxFS+CF0U6c1Q3tXLBdALxA7l\nFlXJ71QrP06W31kRe7kvgrvO7qWU3/OzUf9qYw4LSiR1/VkvvRCTqcVNw09clw/M\nJbw6FSgweN65M9j7zPbjGAXSHkXyxH1Erin2fa+B9PE4ZDgX9cp2C1DHewYJQL/g\nSepwwcudVNRN1ibKH7kpMrgPnaNIVNx5sXVsTjk6q2ZqYw3SVHegltJpLy/cZReP\nmlivF2kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUmTcQd6o1\nCuS65MjBrMwQ9JJjmBwwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IB\nAQAKSDSIzl956wVddPThf2VAzI8syw9ngSwsEHZvxVGHBvu5gg618rDyguVCYX9L\n4Kw/xJrk6S3qxOS2ZDyBcOpsrBskgahDFIunzoRP3a18ARQVq55LVgfwSDQiunch\nBd05cnFGLoiLkR5rrkgYaP2ftn3gRBRaf0y0S3JXZ2XB3sMZxGxavYq9mfiEcwB0\nLMTMQ1NYzahIeG6Jm3LqRqR8HkzP/Ztq4dT2AtSLvFebbNMiWqeqT7OcYp94HTYT\nzqrtaVdUg9bwyAUCDgy0GV9RHDIdNAOInU/4LEETovrtuBU7Z1q4tcHXvN6Hd1H8\ngMb0mCG5I393qW5hFsA/diFb\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAPQAvihfjBg/JDbj6U64K98wDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMiBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTIwMTYyODQxWhgPMjA2MTA1MjAxNzI4NDFa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTIgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nvJ9lgyksCxkBlY40qOzI1TCj/Q0FVGuPL/Z1Mw2YN0l+41BDv0FHApjTUkIKOeIP\nnwDwpXTa3NjYbk3cOZ/fpH2rYJ++Fte6PNDGPgKppVCUh6x3jiVZ1L7wOgnTdK1Q\nTrw8440IDS5eLykRHvz8OmwvYDl0iIrt832V0QyOlHTGt6ZJ/aTQKl12Fy3QBLv7\nstClPzvHTrgWqVU6uidSYoDtzHbU7Vda7YH0wD9IUoMBf7Tu0rqcE4uH47s2XYkc\nSdLEoOg/Ngs7Y9B1y1GCyj3Ux7hnyvCoRTw014QyNB7dTatFMDvYlrRDGG14KeiU\nUL7Vo/+EejWI31eXNLw84wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBQkgTWFsNg6wA3HbbihDQ4vpt1E2zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAGz1Asiw7hn5WYUj8RpOCzpE0h/oBZcnxP8wulzZ5Xd0YxWO\n0jYUcUk3tTQy1QvoY+Q5aCjg6vFv+oFBAxkib/SmZzp4xLisZIGlzpJQuAgRkwWA\n6BVMgRS+AaOMQ6wKPgz1x4v6T0cIELZEPq3piGxvvqkcLZKdCaeC3wCS6sxuafzZ\n4qA3zMwWuLOzRftgX2hQto7d/2YkRXga7jSvQl3id/EI+xrYoH6zIWgjdU1AUaNq\nNGT7DIo47vVMfnd9HFZNhREsd4GJE83I+JhTqIxiKPNxrKgESzyADmNPt0gXDnHo\ntbV1pMZz5HpJtjnP/qVZhEK5oB0tqlKPv9yx074=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICuTCCAj6gAwIBAgIRAKp1Rn3aL/g/6oiHVIXtCq8wCgYIKoZIzj0EAwMwgZsx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE0MDIGA1UEAwwrQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMyBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MjQyMDMyMTdaGA8yMTIxMDUyNDIxMzIxN1owgZsx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE0MDIGA1UEAwwrQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMyBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGTYWPILeBJXfcL3Dz4z\nEWMUq78xB1HpjBwHoTURYfcMd5r96BTVG6yaUBWnAVCMeeD6yTG9a1eVGNhG14Hk\nZAEjgLiNB7RRbEG5JZ/XV7W/vODh09WCst2y9SLKsdgeAaNCMEAwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUoE0qZHmDCDB+Bnm8GUa/evpfPwgwDgYDVR0PAQH/\nBAQDAgGGMAoGCCqGSM49BAMDA2kAMGYCMQCnil5MMwhY3qoXv0xvcKZGxGPaBV15\n0CCssCKn0oVtdJQfJQ3Jrf3RSaEyijXIJsoCMQC35iJi4cWoNX3N/qfgnHohW52O\nB5dg0DYMqy5cNZ40+UcAanRMyqNQ6P7fy3umGco=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtzCCAj2gAwIBAgIQPXnDTPegvJrI98qz8WxrMjAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIEJldGEgdXMtZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxODIxNDAxMloYDzIxMjEwNTE4MjI0MDEyWjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIEJldGEgdXMtZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEI0sR7gwutK5AB46hM761\ngcLTGBIYlURSEoM1jcBwy56CL+3CJKZwLLyJ7qoOKfWbu5GsVLUTWS8MV6Nw33cx\n2KQD2svb694wi+Px2f4n9+XHkEFQw8BbiodDD7RZA70fo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBTQSioOvnVLEMXwNSDg+zgln/vAkjAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIxAMwu1hqm5Bc98uE/E0B5iMYbBQ4kpMxO\ntP8FTfz5UR37HUn26nXE0puj6S/Ffj4oJgIwXI7s2c26tFQeqzq6u3lrNJHp5jC9\nUxlo/hEJOLoDj5jnpxo8dMAtCNoQPaHdfL0P\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjWgAwIBAgIQGKVv+5VuzEZEBzJ+bVfx2zAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGFwLXNvdXRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTE5MTc1MDU5WhgPMjEyMTA1MTkxODUwNTlaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgYXAtc291dGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMqdLJ0tZF/DGFZTKZDrGRJZID8ivC2I\nJRCYTWweZKCKSCAzoiuGGHzJhr5RlLHQf/QgmFcgXsdmO2n3CggzhA4tOD9Ip7Lk\nP05eHd2UPInyPCHRgmGjGb0Z+RdQ6zkitKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUC1yhRgVqU5bR8cGzOUCIxRpl4EYwDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2cAMGQCMG0c/zLGECRPzGKJvYCkpFTCUvdP4J74YP0v/dPvKojL\nt/BrR1Tg4xlfhaib7hPc7wIwFvgqHes20CubQnZmswbTKLUrgSUW4/lcKFpouFd2\nt2/ewfi/0VhkeUW+IiHhOMdU\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRAOXxJuyXVkbfhZCkS/dOpfEwDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI1MjE1OTEwWhgPMjEyMTA1MjUyMjU5MTBa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nxiP4RDYm4tIS12hGgn1csfO8onQDmK5SZDswUpl0HIKXOUVVWkHNlINkVxbdqpqH\nFhbyZmNN6F/EWopotMDKe1B+NLrjNQf4zefv2vyKvPHJXhxoKmfyuTd5Wk8k1F7I\nlNwLQzznB+ElhrLIDJl9Ro8t31YBBNFRGAGEnxyACFGcdkjlsa52UwfYrwreEg2l\ngW5AzqHgjFfj9QRLydeU/n4bHm0F1adMsV7P3rVwilcUlqsENDwXnWyPEyv3sw6F\nwNemLEs1129mB77fwvySb+lLNGsnzr8w4wdioZ74co+T9z2ca+eUiP+EQccVw1Is\nD4Fh57IjPa6Wuc4mwiUYKkKY63+38aCfEWb0Qoi+zW+mE9nek6MOQ914cN12u5LX\ndBoYopphRO5YmubSN4xcBy405nIdSdbrAVWwxXnVVyjqjknmNeqQsPZaxAhdoKhV\nAqxNr8AUAdOAO6Sz3MslmcLlDXFihrEEOeUbpg/m1mSUUHGbu966ajTG1FuEHHwS\n7WB52yxoJo/tHvt9nAWnh3uH5BHmS8zn6s6CGweWKbX5yICnZ1QFR1e4pogxX39v\nXD6YcNOO+Vn+HY4nXmjgSYVC7l+eeP8eduMg1xJujzjrbmrXU+d+cBObgdTOAlpa\nJFHaGwYw1osAwPCo9cZ2f04yitBfj9aPFia8ASKldakCAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqKS+ltlior0SyZKYAkJ/efv55towDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQAdElvp8bW4B+Cv+1WSN87dg6TN\nwGyIjJ14/QYURgyrZiYpUmZpj+/pJmprSWXu4KNyqHftmaidu7cdjL5nCAvAfnY5\n/6eDDbX4j8Gt9fb/6H9y0O0dn3mUPSEKG0crR+JRFAtPhn/2FNvst2P82yguWLv0\npHjHVUVcq+HqDMtUIJsTPYjSh9Iy77Q6TOZKln9dyDOWJpCSkiUWQtMAKbCSlvzd\nzTs/ahqpT+zLfGR1SR+T3snZHgQnbnemmz/XtlKl52NxccARwfcEEKaCRQyGq/pR\n0PVZasyJS9JY4JfQs4YOdeOt4UMZ8BmW1+BQWGSkkb0QIRl8CszoKofucAlqdPcO\nIT/ZaMVhI580LFGWiQIizWFskX6lqbCyHqJB3LDl8gJISB5vNTHOHpvpMOMs5PYt\ncRl5Mrksx5MKMqG7y5R734nMlZxQIHjL5FOoOxTBp9KeWIL/Ib89T2QDaLw1SQ+w\nihqWBJ4ZdrIMWYpP3WqM+MXWk7WAem+xsFJdR+MDgOOuobVQTy5dGBlPks/6gpjm\nrO9TjfQ36ppJ3b7LdKUPeRfnYmlR5RU4oyYJ//uLbClI443RZAgxaCXX/nyc12lr\neVLUMNF2abLX4/VF63m2/Z9ACgMRfqGshPssn1NN33OonrotQoj4S3N9ZrjvzKt8\niHcaqd60QKpfiH2A3A==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICuDCCAj2gAwIBAgIQPaVGRuu86nh/ylZVCLB0MzAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLW5vcnRoZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIyMDMxNloYDzIxMjEwNTI1MjMwMzE2WjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLW5vcnRoZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEexNURoB9KE93MEtEAlJG\nobz4LS/pD2hc8Gczix1WhVvpJ8bN5zCDXaKdnDMCebetyRQsmQ2LYlfmCwpZwSDu\n0zowB11Pt3I5Avu2EEcuKTlKIDMBeZ1WWuOd3Tf7MEAMo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBSaYbZPBvFLikSAjpa8mRJvyArMxzAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaQAwZgIxAOEJkuh3Zjb7Ih/zuNRd1RBqmIYcnyw0\nnwUZczKXry+9XebYj3VQxSRNadrarPWVqgIxAMg1dyGoDAYjY/L/9YElyMnvHltO\nPwpJShmqHvCLc/mXMgjjYb/akK7yGthvW6j/uQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCDCCA/CgAwIBAgIQChu3v5W1Doil3v6pgRIcVzANBgkqhkiG9w0BAQwFADCB\nnDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTUwMwYDVQQDDCxB\nbWF6b24gUkRTIEJldGEgdXMtZWFzdC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4G\nA1UEBwwHU2VhdHRsZTAgFw0yMTA1MTgyMTM0MTVaGA8yMTIxMDUxODIyMzQxNVow\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBCZXRhIHVzLWVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC1\nFUGQ5tf3OwpDR6hGBxhUcrkwKZhaXP+1St1lSOQvjG8wXT3RkKzRGMvb7Ee0kzqI\nmzKKe4ASIhtV3UUWdlNmP0EA3XKnif6N79MismTeGkDj75Yzp5A6tSvqByCgxIjK\nJqpJrch3Dszoyn8+XhwDxMZtkUa5nQVdJgPzJ6ltsQ8E4SWLyLtTu0S63jJDkqYY\nS7cQblk7y7fel+Vn+LS5dGTdRRhMvSzEnb6mkVBaVzRyVX90FNUED06e8q+gU8Ob\nhtvQlf9/kRzHwRAdls2YBhH40ZeyhpUC7vdtPwlmIyvW5CZ/QiG0yglixnL6xahL\npbmTuTSA/Oqz4UGQZv2WzHe1lD2gRHhtFX2poQZeNQX8wO9IcUhrH5XurW/G9Xwl\nSat9CMPERQn4KC3HSkat4ir2xaEUrjfg6c4XsGyh2Pk/LZ0gLKum0dyWYpWP4JmM\nRQNjrInXPbMhzQObozCyFT7jYegS/3cppdyy+K1K7434wzQGLU1gYXDKFnXwkX8R\nbRKgx2pHNbH5lUddjnNt75+e8m83ygSq/ZNBUz2Ur6W2s0pl6aBjwaDES4VfWYlI\njokcmrGvJNDfQWygb1k00eF2bzNeNCHwgWsuo3HSxVgc/WGsbcGrTlDKfz+g3ich\nbXUeUidPhRiv5UQIVCLIHpHuin3bj9lQO/0t6p+tAQIDAQABo0IwQDAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBSFmMBgm5IsRv3hLrvDPIhcPweXYTAOBgNVHQ8B\nAf8EBAMCAYYwDQYJKoZIhvcNAQEMBQADggIBAAa2EuozymOsQDJlEi7TqnyA2OhT\nGXPfYqCyMJVkfrqNgcnsNpCAiNEiZbb+8sIPXnT8Ay8hrwJYEObJ5b7MHXpLuyft\nz0Pu1oFLKnQxKjNxrIsCvaB4CRRdYjm1q7EqGhMGv76se9stOxkOqO9it31w/LoU\nENDk7GLsSqsV1OzYLhaH8t+MaNP6rZTSNuPrHwbV3CtBFl2TAZ7iKgKOhdFz1Hh9\nPez0lG+oKi4mHZ7ajov6PD0W7njn5KqzCAkJR6OYmlNVPjir+c/vUtEs0j+owsMl\ng7KE5g4ZpTRShyh5BjCFRK2tv0tkqafzNtxrKC5XNpEkqqVTCnLcKG+OplIEadtr\nC7UWf4HyhCiR+xIyxFyR05p3uY/QQU/5uza7GlK0J+U1sBUytx7BZ+Fo8KQfPPqV\nCqDCaYUksoJcnJE/KeoksyqNQys7sDGJhkd0NeUGDrFLKHSLhIwAMbEWnqGxvhli\nE7sP2E5rI/I9Y9zTbLIiI8pfeZlFF8DBdoP/Hzg8pqsiE/yiXSFTKByDwKzGwNqz\nF0VoFdIZcIbLdDbzlQitgGpJtvEL7HseB0WH7B2PMMD8KPJlYvPveO3/6OLzCsav\n+CAkvk47NQViKMsUTKOA0JDCW+u981YRozxa3K081snhSiSe83zIPBz1ikldXxO9\n6YYLNPRrj3mi9T/f\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAMkvdFnVDb0mWWFiXqnKH68wCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyB1cy13ZXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTE5MTkxMzI0WhgPMjEyMTA1MTkyMDEzMjRaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgdXMtd2VzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEy86DB+9th/0A5VcWqMSWDxIUblWTt/R0\nao6Z2l3vf2YDF2wt1A2NIOGpfQ5+WAOJO/IQmnV9LhYo+kacB8sOnXdQa6biZZkR\nIyouUfikVQAKWEJnh1Cuo5YMM4E2sUt5o0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBQ8u3OnecANmG8OoT7KLWDuFzZwBTAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIwQ817qkb7mWJFnieRAN+m9W3E0FLVKaV3zC5aYJUk2fcZ\nTaUx3oLp3jPLGvY5+wgeAjEA6wAicAki4ZiDfxvAIuYiIe1OS/7H5RA++R8BH6qG\niRzUBM/FItFpnkus7u/eTkvo\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrzCCAjWgAwIBAgIQS/+Ryfgb/IOVEa1pWoe8oTAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGFwLXNvdXRoLTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjIwNjA2MjE1NDQyWhgPMjEyMjA2MDYyMjU0NDJaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgYXAtc291dGgtMiBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDsX6fhdUWBQpYTdseBD/P3s96Dtw2Iw\nOrXKNToCnmX5nMkUGdRn9qKNiz1pw3EPzaPxShbYwQ7LYP09ENK/JN4QQjxMihxC\njLFxS85nhBQQQGRCWikDAe38mD8fSvREQKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUIh1xZiseQYFjPYKJmGbruAgRH+AwDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2gAMGUCMFudS4zLy+UUGrtgNLtRMcu/DZ9BUzV4NdHxo0bkG44O\nthnjl4+wTKI6VbyAbj2rkgIxAOHps8NMITU5DpyiMnKTxV8ubb/WGHrLl0BjB8Lw\nETVJk5DNuZvsIIcm7ykk6iL4Tw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGBDCCA+ygAwIBAgIQDcEmNIAVrDpUw5cH5ynutDANBgkqhkiG9w0BAQwFADCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIG1lLWNlbnRyYWwtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNV\nBAcMB1NlYXR0bGUwIBcNMjIwNTA3MDA0MDIzWhgPMjEyMjA1MDcwMTQwMjNaMIGa\nMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5j\nLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMzAxBgNVBAMMKkFt\nYXpvbiBSRFMgbWUtY2VudHJhbC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKvADk8t\nFl9bFlU5sajLPPDSOUpPAkKs6iPlz+27o1GJC88THcOvf3x0nVAcu9WYe9Qaas+4\nj4a0vv51agqyODRD/SNi2HnqW7DbtLPAm6KBHe4twl28ItB/JD5g7u1oPAHFoXMS\ncH1CZEAs5RtlZGzJhcBXLFsHNv/7+SCLyZ7+2XFh9OrtgU4wMzkHoRNndhfwV5bu\n17bPTwuH+VxH37zXf1mQ/KjhuJos0C9dL0FpjYBAuyZTAWhZKs8dpSe4DI544z4w\ngkwUB4bC2nA1TBzsywEAHyNuZ/xRjNpWvx0ToWAA2iFJqC3VO3iKcnBplMvaUuMt\njwzVSNBnKcoabXCZL2XDLt4YTZR8FSwz05IvsmwcPB7uNTBXq3T9sjejW8QQK3vT\ntzyfLq4jKmQE7PoS6cqYm+hEPm2hDaC/WP9bp3FdEJxZlPH26fq1b7BWYWhQ9pBA\nNv9zTnzdR1xohTyOJBUFQ81ybEzabqXqVXUIANqIOaNcTB09/sLJ7+zuMhp3mwBu\nLtjfJv8PLuT1r63bU3seROhKA98b5KfzjvbvPSg3vws78JQyoYGbqNyDfyjVjg3U\nv//AdVuPie6PNtdrW3upZY4Qti5IjP9e3kimaJ+KAtTgMRG56W0WxD3SP7+YGGbG\nKhntDOkKsN39hLpn9UOafTIqFu7kIaueEy/NAgMBAAGjQjBAMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFHAems86dTwdZbLe8AaPy3kfIUVoMA4GA1UdDwEB/wQE\nAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEAOBHpp0ICx81kmeoBcZTrMdJs2gnhcd85\nFoSCjXx9H5XE5rmN/lQcxxOgj8hr3uPuLdLHu+i6THAyzjrl2NA1FWiqpfeECGmy\n0jm7iZsYORgGQYp/VKnDrwnKNSqlZvOuRr0kfUexwFlr34Y4VmupvEOK/RdGsd3S\n+3hiemcHse9ST/sJLHx962AWMkN86UHPscJEe4+eT3f2Wyzg6La8ARwdWZSNS+WH\nZfybrncMmuiXuUdHv9XspPsqhKgtHhcYeXOGUtrwQPLe3+VJZ0LVxhlTWr9951GZ\nGfmWwTV/9VsyKVaCFIXeQ6L+gjcKyEzYF8wpMtQlSc7FFqwgC4bKxvMBSaRy88Nr\nlV2+tJD/fr8zGUeBK44Emon0HKDBWGX+/Hq1ZIv0Da0S+j6LbA4fusWxtGfuGha+\nluhHgVInCpALIOamiBEdGhILkoTtx7JrYppt3/Raqg9gUNCOOYlCvGhqX7DXeEfL\nDGabooiY2FNWot6h04JE9nqGj5QqT8D6t/TL1nzxhRPzbcSDIHUd/b5R+a0bAA+7\nYTU6JqzEVCWKEIEynYmqikgLMGB/OzWsgyEL6822QW6hJAQ78XpbNeCzrICF4+GC\n7KShLnwuWoWpAb26268lvOEvCTFM47VC6jNQl97md+2SA9Ma81C9wflid2M83Wle\ncuLMVcQZceE=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQAhAteLRCvizAElaWORFU2zANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMDE3MDkxNloYDzIwNjEwNTIwMTgwOTE2WjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+qg7JAcOVKjh\nN83SACnBFZPyB63EusfDr/0V9ZdL8lKcmZX9sv/CqoBo3N0EvBqHQqUUX6JvFb7F\nXrMUZ740kr28gSRALfXTFgNODjXeDsCtEkKRTkac/UM8xXHn+hR7UFRPHS3e0GzI\niLiwQWDkr0Op74W8aM0CfaVKvh2bp4BI1jJbdDnQ9OKXpOxNHGUf0ZGb7TkNPkgI\nb2CBAc8J5o3H9lfw4uiyvl6Fz5JoP+A+zPELAioYBXDrbE7wJeqQDJrETWqR9VEK\nBXURCkVnHeaJy123MpAX2ozf4pqk0V0LOEOZRS29I+USF5DcWr7QIXR/w2I8ws1Q\n7ys+qbE+kQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQFJ16n\n1EcCMOIhoZs/F9sR+Jy++zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAOc5nXbT3XTDEZsxX2iD15YrQvmL5m13B3ImZWpx/pqmObsgx3/dg75rF2nQ\nqS+Vl+f/HLh516pj2BPP/yWCq12TRYigGav8UH0qdT3CAClYy2o+zAzUJHm84oiB\nud+6pFVGkbqpsY+QMpJUbZWu52KViBpJMYsUEy+9cnPSFRVuRAHjYynSiLk2ZEjb\nWkdc4x0nOZR5tP0FgrX0Ve2KcjFwVQJVZLgOUqmFYQ/G0TIIGTNh9tcmR7yp+xJR\nA2tbPV2Z6m9Yxx4E8lLEPNuoeouJ/GR4CkMEmF8cLwM310t174o3lKKUXJ4Vs2HO\nWj2uN6R9oI+jGLMSswTzCNV1vgc=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICuDCCAj6gAwIBAgIRAOocLeZWjYkG/EbHmscuy8gwCgYIKoZIzj0EAwMwgZsx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE0MDIGA1UEAwwrQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MjEyMTUwMDFaGA8yMTIxMDUyMTIyNTAwMVowgZsx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE0MDIGA1UEAwwrQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABCEr3jq1KtRncnZfK5cq\nbtY0nW6ZG3FMbh7XwBIR6Ca0f8llGZ4vJEC1pXgiM/4Dh045B9ZIzNrR54rYOIfa\n2NcYZ7mk06DjIQML64hbAxbQzOAuNzLPx268MrlL2uW2XaNCMEAwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUln75pChychwN4RfHl+tOinMrfVowDgYDVR0PAQH/\nBAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMGiyPINRU1mwZ4Crw01vpuPvxZxb2IOr\nyX3RNlOIu4We1H+5dQk5tIvH8KGYFbWEpAIxAO9NZ6/j9osMhLgZ0yj0WVjb+uZx\nYlZR9fyFisY/jNfX7QhSk+nrc3SFLRUNtpXrng==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBTCCAu2gAwIBAgIRAKiaRZatN8eiz9p0s0lu0rQwDQYJKoZIhvcNAQELBQAw\ngZoxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEzMDEGA1UEAwwq\nQW1hem9uIFJEUyBjYS1jZW50cmFsLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYD\nVQQHDAdTZWF0dGxlMCAXDTIxMDUyMTIyMDIzNVoYDzIwNjEwNTIxMjMwMjM1WjCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGNhLWNlbnRyYWwtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNV\nBAcMB1NlYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCygVMf\nqB865IR9qYRBRFHn4eAqGJOCFx+UbraQZmjr/mnRqSkY+nhbM7Pn/DWOrRnxoh+w\nq5F9ZxdZ5D5T1v6kljVwxyfFgHItyyyIL0YS7e2h7cRRscCM+75kMedAP7icb4YN\nLfWBqfKHbHIOqvvQK8T6+Emu/QlG2B5LvuErrop9K0KinhITekpVIO4HCN61cuOe\nCADBKF/5uUJHwS9pWw3uUbpGUwsLBuhJzCY/OpJlDqC8Y9aToi2Ivl5u3/Q/sKjr\n6AZb9lx4q3J2z7tJDrm5MHYwV74elGSXoeoG8nODUqjgklIWAPrt6lQ3WJpO2kug\n8RhCdSbWkcXHfX95AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFOIxhqTPkKVqKBZvMWtKewKWDvDBMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0B\nAQsFAAOCAQEAqoItII89lOl4TKvg0I1EinxafZLXIheLcdGCxpjRxlZ9QMQUN3yb\ny/8uFKBL0otbQgJEoGhxm4h0tp54g28M6TN1U0332dwkjYxUNwvzrMaV5Na55I2Z\n1hq4GB3NMXW+PvdtsgVOZbEN+zOyOZ5MvJHEQVkT3YRnf6avsdntltcRzHJ16pJc\nY8rR7yWwPXh1lPaPkxddrCtwayyGxNbNmRybjR48uHRhwu7v2WuAMdChL8H8bp89\nTQLMrMHgSbZfee9hKhO4Zebelf1/cslRSrhkG0ESq6G5MUINj6lMg2g6F0F7Xz2v\nncD/vuRN5P+vT8th/oZ0Q2Gc68Pun0cn/g==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIRAJYlnmkGRj4ju/2jBQsnXJYwDQYJKoZIhvcNAQELBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyB1cy1lYXN0LTIgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMTIzMDQ0NFoYDzIwNjEwNTIyMDAwNDQ0WjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIHVzLWVhc3QtMiBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC74V3eigv+pCj5\nnqDBqplY0Jp16pTeNB06IKbzb4MOTvNde6QjsZxrE1xUmprT8LxQqN9tI3aDYEYk\nb9v4F99WtQVgCv3Y34tYKX9NwWQgwS1vQwnIR8zOFBYqsAsHEkeJuSqAB12AYUSd\nZv2RVFjiFmYJho2X30IrSLQfS/IE3KV7fCyMMm154+/K1Z2IJlcissydEAwgsUHw\nedrE6CxJVkkJ3EvIgG4ugK/suxd8eEMztaQYJwSdN8TdfT59LFuSPl7zmF3fIBdJ\n//WexcQmGabaJ7Xnx+6o2HTfkP8Zzzzaq8fvjAcvA7gyFH5EP26G2ZqMG+0y4pTx\nSPVTrQEXAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIWWuNEF\nsUMOC82XlfJeqazzrkPDMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC\nAQEAgClmxcJaQTGpEZmjElL8G2Zc8lGc+ylGjiNlSIw8X25/bcLRptbDA90nuP+q\nzXAMhEf0ccbdpwxG/P5a8JipmHgqQLHfpkvaXx+0CuP++3k+chAJ3Gk5XtY587jX\n+MJfrPgjFt7vmMaKmynndf+NaIJAYczjhJj6xjPWmGrjM3MlTa9XesmelMwP3jep\nbApIWAvCYVjGndbK9byyMq1nyj0TUzB8oJZQooaR3MMjHTmADuVBylWzkRMxbKPl\n4Nlsk4Ef1JvIWBCzsMt+X17nuKfEatRfp3c9tbpGlAE/DSP0W2/Lnayxr4RpE9ds\nICF35uSis/7ZlsftODUe8wtpkQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/zCCA+egAwIBAgIRAPvvd+MCcp8E36lHziv0xhMwDQYJKoZIhvcNAQEMBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyB1cy1lYXN0LTIgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMTIzMTEwNloYDzIxMjEwNTIyMDAxMTA2WjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIHVzLWVhc3QtMiBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDbvwekKIKGcV/s\nlDU96a71ZdN2pTYkev1X2e2/ICb765fw/i1jP9MwCzs8/xHBEQBJSxdfO4hPeNx3\nENi0zbM+TrMKliS1kFVe1trTTEaHYjF8BMK9yTY0VgSpWiGxGwg4tshezIA5lpu8\nsF6XMRxosCEVCxD/44CFqGZTzZaREIvvFPDTXKJ6yOYnuEkhH3OcoOajHN2GEMMQ\nShuyRFDQvYkqOC/Q5icqFbKg7eGwfl4PmimdV7gOVsxSlw2s/0EeeIILXtHx22z3\n8QBhX25Lrq2rMuaGcD3IOMBeBo2d//YuEtd9J+LGXL9AeOXHAwpvInywJKAtXTMq\nWsy3LjhuANFrzMlzjR2YdjkGVzeQVx3dKUzJ2//Qf7IXPSPaEGmcgbxuatxjnvfT\nH85oeKr3udKnXm0Kh7CLXeqJB5ITsvxI+Qq2iXtYCc+goHNR01QJwtGDSzuIMj3K\nf+YMrqBXZgYBwU2J/kCNTH31nfw96WTbOfNGwLwmVRDgguzFa+QzmQsJW4FTDMwc\n7cIjwdElQQVA+Gqa67uWmyDKAnoTkudmgAP+OTBkhnmc6NJuZDcy6f/iWUdl0X0u\n/tsfgXXR6ZovnHonM13ANiN7VmEVqFlEMa0VVmc09m+2FYjjlk8F9sC7Rc4wt214\n7u5YvCiCsFZwx44baP5viyRZgkJVpQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBQgCZCsc34nVTRbWsniXBPjnUTQ2DAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQEMBQADggIBAAQas3x1G6OpsIvQeMS9BbiHG3+kU9P/ba6Rrg+E\nlUz8TmL04Bcd+I+R0IyMBww4NznT+K60cFdk+1iSmT8Q55bpqRekyhcdWda1Qu0r\nJiTi7zz+3w2v66akofOnGevDpo/ilXGvCUJiLOBnHIF0izUqzvfczaMZGJT6xzKq\nPcEVRyAN1IHHf5KnGzUlVFv9SGy47xJ9I1vTk24JU0LWkSLzMMoxiUudVmHSqJtN\nu0h+n/x3Q6XguZi1/C1KOntH56ewRh8n5AF7c+9LJJSRM9wunb0Dzl7BEy21Xe9q\n03xRYjf5wn8eDELB8FZPa1PrNKXIOLYM9egdctbKEcpSsse060+tkyBrl507+SJT\n04lvJ4tcKjZFqxn+bUkDQvXYj0D3WK+iJ7a8kZJPRvz8BDHfIqancY8Tgw+69SUn\nWqIb+HNZqFuRs16WFSzlMksqzXv6wcDSyI7aZOmCGGEcYW9NHk8EuOnOQ+1UMT9C\nQb1GJcipjRzry3M4KN/t5vN3hIetB+/PhmgTO4gKhBETTEyPC3HC1QbdVfRndB6e\nU/NF2U/t8U2GvD26TTFLK4pScW7gyw4FQyXWs8g8FS8f+R2yWajhtS9++VDJQKom\nfAUISoCH+PlPRJpu/nHd1Zrddeiiis53rBaLbXu2J1Q3VqjWOmtj0HjxJJxWnYmz\nPqj2\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAI/U4z6+GF8/znpHM8Dq8G0wDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBhcC1zb3V0aC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMjA2MDYyMTQ4MThaGA8yMTIyMDYwNjIyNDgxOFowgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBhcC1zb3V0aC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK5WqMvyq888\n3uuOtEj1FcP6iZhqO5kJurdJF59Otp2WCg+zv6I+QwaAspEWHQsKD405XfFsTGKV\nSKTCwoMxwBniuChSmyhlagQGKSnRY9+znOWq0v7hgmJRwp6FqclTbubmr+K6lzPy\nhs86mEp68O5TcOTYWUlPZDqfKwfNTbtCl5YDRr8Gxb5buHmkp6gUSgDkRsXiZ5VV\nb3GBmXRqbnwo5ZRNAzQeM6ylXCn4jKs310lQGUrFbrJqlyxUdfxzqdlaIRn2X+HY\nxRSYbHox3LVNPpJxYSBRvpQVFSy9xbX8d1v6OM8+xluB31cbLBtm08KqPFuqx+cO\nI2H5F0CYqYzhyOSKJsiOEJT6/uH4ewryskZzncx9ae62SC+bB5n3aJLmOSTkKLFY\nYS5IsmDT2m3iMgzsJNUKVoCx2zihAzgBanFFBsG+Xmoq0aKseZUI6vd2qpd5tUST\n/wS1sNk0Ph7teWB2ACgbFE6etnJ6stwjHFZOj/iTYhlnR2zDRU8akunFdGb6CB4/\nhMxGJxaqXSJeGtHm7FpadlUTf+2ESbYcVW+ui/F8sdBJseQdKZf3VdZZMgM0bcaX\nNE47cauDTy72WdU9YJX/YXKYMLDE0iFHTnGpfVGsuWGPYhlwZ3dFIO07mWnCRM6X\nu5JXRB1oy5n5HRluMsmpSN/R92MeBxKFAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFNtH0F0xfijSLHEyIkRGD9gW6NazMA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEACo+5jFeY3ygxoDDzL3xpfe5M0U1WxdKk+az4\n/OfjZvkoma7WfChi3IIMtwtKLYC2/seKWA4KjlB3rlTsCVNPnK6D+gAnybcfTKk/\nIRSPk92zagwQkSUWtAk80HpVfWJzpkSU16ejiajhedzOBRtg6BwsbSqLCDXb8hXr\neXWC1S9ZceGc+LcKRHewGWPu31JDhHE9bNcl9BFSAS0lYVZqxIRWxivZ+45j5uQv\nwPrC8ggqsdU3K8quV6dblUQzzA8gKbXJpCzXZihkPrYpQHTH0szvXvgebh+CNUAG\nrUxm8+yTS0NFI3U+RLbcLFVzSvjMOnEwCX0SPj5XZRYYXs5ajtQCoZhTUkkwpDV8\nRxXk8qGKiXwUxDO8GRvmvM82IOiXz5w2jy/h7b7soyIgdYiUydMq4Ja4ogB/xPZa\ngf4y0o+bremO15HFf1MkaU2UxPK5FFVUds05pKvpSIaQWbF5lw4LHHj4ZtVup7zF\nCLjPWs4Hs/oUkxLMqQDw0FBwlqa4uot8ItT8uq5BFpz196ZZ+4WXw5PVzfSxZibI\nC/nwcj0AS6qharXOs8yPnPFLPSZ7BbmWzFDgo3tpglRqo3LbSPsiZR+sLeivqydr\n0w4RK1btRda5Ws88uZMmW7+2aufposMKcbAdrApDEAVzHijbB/nolS5nsnFPHZoA\nKDPtFEk=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtzCCAj2gAwIBAgIQVZ5Y/KqjR4XLou8MCD5pOjAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC00IFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIyMDUyNTE2NTgzM1oYDzIxMjIwNTI1MTc1ODMzWjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC00IFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbo473OmpD5vkckdJajXg\nbrhmNFyoSa0WCY1njuZC2zMFp3zP6rX4I1r3imrYnJd9pFH/aSiV/r6L5ACE5RPx\n4qdg5SQ7JJUaZc3DWsTOiOed7BCZSzM+KTYK/2QzDMApo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBTmogc06+1knsej1ltKUOdWFvwgsjAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIxAIs7TlLMbGTWNXpGiKf9DxaM07d/iDHe\nF/Vv/wyWSTGdobxBL6iArQNVXz0Gr4dvPAIwd0rsoa6R0x5mtvhdRPtM37FYrbHJ\npbV+OMusQqcSLseunLBoCHenvJW0QOCQ8EDY\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICvTCCAkOgAwIBAgIQCIY7E/bFvFN2lK9Kckb0dTAKBggqhkjOPQQDAzCBnjEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTcwNQYDVQQDDC5BbWF6\nb24gUkRTIFByZXZpZXcgdXMtZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYD\nVQQHDAdTZWF0dGxlMCAXDTIxMDUxODIxMDUxMFoYDzIxMjEwNTE4MjIwNTEwWjCB\nnjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTcwNQYDVQQDDC5B\nbWF6b24gUkRTIFByZXZpZXcgdXMtZWFzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEMI0hzf1JCEOI\nEue4+DmcNnSs2i2UaJxHMrNGGfU7b42a7vwP53F7045ffHPBGP4jb9q02/bStZzd\nVHqfcgqkSRI7beBKjD2mfz82hF/wJSITTgCLs+NRpS6zKMFOFHUNo0IwQDAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS8uF/6hk5mPLH4qaWv9NVZaMmyTjAOBgNV\nHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIxAO7Pu9wzLyM0X7Q08uLIL+vL\nqaxe3UFuzFTWjM16MLJHbzLf1i9IDFKz+Q4hXCSiJwIwClMBsqT49BPUxVsJnjGr\nEbyEk6aOOVfY1p2yQL649zh3M4h8okLnwf+bYIb1YpeU\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQY+JhwFEQTe36qyRlUlF8ozANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGFmLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE5MjQxNloYDzIwNjEwNTE5MjAyNDE2WjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGFmLXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnIye77j6ev40\n8wRPyN2OdKFSUfI9jB20Or2RLO+RDoL43+USXdrze0Wv4HMRLqaen9BcmCfaKMp0\nE4SFo47bXK/O17r6G8eyq1sqnHE+v288mWtYH9lAlSamNFRF6YwA7zncmE/iKL8J\n0vePHMHP/B6svw8LULZCk+nZk3tgxQn2+r0B4FOz+RmpkoVddfqqUPMbKUxhM2wf\nfO7F6bJaUXDNMBPhCn/3ayKCjYr49ErmnpYV2ZVs1i34S+LFq39J7kyv6zAgbHv9\n+/MtRMoRB1CjpqW0jIOZkHBdYcd1o9p1zFn591Do1wPkmMsWdjIYj+6e7UXcHvOB\n2+ScIRAcnwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQGtq2W\nYSyMMxpdQ3IZvcGE+nyZqTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAEgoP3ixJsKSD5FN8dQ01RNHERl/IFbA7TRXfwC+L1yFocKnQh4Mp/msPRSV\n+OeHIvemPW/wtZDJzLTOFJ6eTolGekHK1GRTQ6ZqsWiU2fmiOP8ks4oSpI+tQ9Lw\nVrfZqTiEcS5wEIqyfUAZZfKDo7W1xp+dQWzfczSBuZJZwI5iaha7+ILM0r8Ckden\nTVTapc5pLSoO15v0ziRuQ2bT3V3nwu/U0MRK44z+VWOJdSiKxdnOYDs8hFNnKhfe\nklbTZF7kW7WbiNYB43OaAQBJ6BALZsIskEaqfeZT8FD71uN928TcEQyBDXdZpRN+\niGQZDGhht0r0URGMDSs9waJtTfA=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/jCCA+agAwIBAgIQXY/dmS+72lZPranO2JM9jjANBgkqhkiG9w0BAQwFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIGFwLWVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTI1MjEzNDUxWhgPMjEyMTA1MjUyMjM0NTFaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgYXAtZWFzdC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMyW9kBJjD/hx8e8\nb5E1sF42bp8TXsz1htSYE3Tl3T1Aq379DfEhB+xa/ASDZxt7/vwa81BkNo4M6HYq\nokYIXeE7cu5SnSgjWXqcERhgPevtAwgmhdE3yREe8oz2DyOi2qKKZqah+1gpPaIQ\nfK0uAqoeQlyHosye3KZZKkDHBatjBsQ5kf8lhuf7wVulEZVRHY2bP2X7N98PfbpL\nQdH7mWXzDtJJ0LiwFwds47BrkgK1pkHx2p1mTo+HMkfX0P6Fq1atkVC2RHHtbB/X\niYyH7paaHBzviFrhr679zNqwXIOKlbf74w3mS11P76rFn9rS1BAH2Qm6eY5S/Fxe\nHEKXm4kjPN63Zy0p3yE5EjPt54yPkvumOnT+RqDGJ2HCI9k8Ehcbve0ogfdRKNqQ\nVHWYTy8V33ndQRHZlx/CuU1yN61TH4WSoMly1+q1ihTX9sApmlQ14B2pJi/9DnKW\ncwECrPy1jAowC2UJ45RtC8UC05CbP9yrIy/7Noj8gQDiDOepm+6w1g6aNlWoiuQS\nkyI6nzz1983GcnOHya73ga7otXo0Qfg9jPghlYiMomrgshlSLDHZG0Ib/3hb8cnR\n1OcN9FpzNmVK2Ll1SmTMLrIhuCkyNYX9O/bOknbcf706XeESxGduSkHEjIw/k1+2\nAtteoq5dT6cwjnJ9hyhiueVlVkiDAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFLUI+DD7RJs+0nRnjcwIVWzzYSsFMA4GA1UdDwEB/wQEAwIBhjAN\nBgkqhkiG9w0BAQwFAAOCAgEAb1mcCHv4qMQetLGTBH9IxsB2YUUhr5dda0D2BcHr\nUtDbfd0VQs4tux6h/6iKwHPx0Ew8fuuYj99WknG0ffgJfNc5/fMspxR/pc1jpdyU\n5zMQ+B9wi0lOZPO9uH7/pr+d2odcNEy8zAwqdv/ihsTwLmGP54is9fVbsgzNW1cm\nHKAVL2t/Ope+3QnRiRilKCN1lzhav4HHdLlN401TcWRWKbEuxF/FgxSO2Hmx86pj\ne726lweCTMmnq/cTsPOVY0WMjs0or3eHDVlyLgVeV5ldyN+ptg3Oit60T05SRa58\nAJPTaVKIcGQ/gKkKZConpu7GDofT67P/ox0YNY57LRbhsx9r5UY4ROgz7WMQ1yoS\nY+19xizm+mBm2PyjMUbfwZUyCxsdKMwVdOq5/UmTmdms+TR8+m1uBHPOTQ2vKR0s\nPd/THSzPuu+d3dbzRyDSLQbHFFneG760CUlD/ZmzFlQjJ89/HmAmz8IyENq+Sjhx\nJgzy+FjVZb8aRUoYLlnffpUpej1n87Ynlr1GrvC4GsRpNpOHlwuf6WD4W0qUTsC/\nC9JO+fBzUj/aWlJzNcLEW6pte1SB+EdkR2sZvWH+F88TxemeDrV0jKJw5R89CDf8\nZQNfkxJYjhns+YeV0moYjqQdc7tq4i04uggEQEtVzEhRLU5PE83nlh/K2NZZm8Kj\ndIA=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIRAPVSMfFitmM5PhmbaOFoGfUwDQYJKoZIhvcNAQELBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyB1cy1lYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIyMzQ1N1oYDzIwNjEwNTI1MjMzNDU3WjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIHVzLWVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDu9H7TBeGoDzMr\ndxN6H8COntJX4IR6dbyhnj5qMD4xl/IWvp50lt0VpmMd+z2PNZzx8RazeGC5IniV\n5nrLg0AKWRQ2A/lGGXbUrGXCSe09brMQCxWBSIYe1WZZ1iU1IJ/6Bp4D2YEHpXrW\nbPkOq5x3YPcsoitgm1Xh8ygz6vb7PsvJvPbvRMnkDg5IqEThapPjmKb8ZJWyEFEE\nQRrkCIRueB1EqQtJw0fvP4PKDlCJAKBEs/y049FoOqYpT3pRy0WKqPhWve+hScMd\n6obq8kxTFy1IHACjHc51nrGII5Bt76/MpTWhnJIJrCnq1/Uc3Qs8IVeb+sLaFC8K\nDI69Sw6bAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE7PCopt\nlyOgtXX0Y1lObBUxuKaCMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC\nAQEAFj+bX8gLmMNefr5jRJfHjrL3iuZCjf7YEZgn89pS4z8408mjj9z6Q5D1H7yS\njNETVV8QaJip1qyhh5gRzRaArgGAYvi2/r0zPsy+Tgf7v1KGL5Lh8NT8iCEGGXwF\ng3Ir+Nl3e+9XUp0eyyzBIjHtjLBm6yy8rGk9p6OtFDQnKF5OxwbAgip42CD75r/q\np421maEDDvvRFR4D+99JZxgAYDBGqRRceUoe16qDzbMvlz0A9paCZFclxeftAxv6\nQlR5rItMz/XdzpBJUpYhdzM0gCzAzdQuVO5tjJxmXhkSMcDP+8Q+Uv6FA9k2VpUV\nE/O5jgpqUJJ2Hc/5rs9VkAPXeA==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrzCCAjWgAwIBAgIQW0yuFCle3uj4vWiGU0SaGzAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGFmLXNvdXRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTE5MTkzNTE2WhgPMjEyMTA1MTkyMDM1MTZaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgYWYtc291dGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDPiKNZSaXs3Un/J/v+LTsFDANHpi7en\noL2qh0u0DoqNzEBTbBjvO23bLN3k599zh6CY3HKW0r2k1yaIdbWqt4upMCRCcUFi\nI4iedAmubgzh56wJdoMZztjXZRwDthTkJKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUWbYkcrvVSnAWPR5PJhIzppcAnZIwDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2gAMGUCMCESGqpat93CjrSEjE7z+Hbvz0psZTHwqaxuiH64GKUm\nmYynIiwpKHyBrzjKBmeDoQIxANGrjIo6/b8Jl6sdIZQI18V0pAyLfLiZjlHVOnhM\nMOTVgr82ZuPoEHTX78MxeMnYlw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAIbsx8XOl0sgTNiCN4O+18QwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI1MjE1NDU4WhgPMjA2MTA1MjUyMjU0NTha\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\ntROxwXWCgn5R9gI/2Ivjzaxc0g95ysBjoJsnhPdJEHQb7w3y2kWrVWU3Y9fOitgb\nCEsnEC3PrhRnzNVW0fPsK6kbvOeCmjvY30rdbxbc8h+bjXfGmIOgAkmoULEr6Hc7\nG1Q/+tvv4lEwIs7bEaf+abSZxRJbZ0MBxhbHn7UHHDiMZYvzK+SV1MGCxx7JVhrm\nxWu3GC1zZCsGDhB9YqY9eR6PmjbqA5wy8vqbC57dZZa1QVtWIQn3JaRXn+faIzHx\nnLMN5CEWihsdmHBXhnRboXprE/OS4MFv1UrQF/XM/h5RBeCywpHePpC+Oe1T3LNC\niP8KzRFrjC1MX/WXJnmOVQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBS33XbXAUMs1znyZo4B0+B3D68WFTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBADuadd2EmlpueY2VlrIIPC30QkoA1EOSoCmZgN6124apkoY1\nHiV4r+QNPljN4WP8gmcARnNkS7ZeR4fvWi8xPh5AxQCpiaBMw4gcbTMCuKDV68Pw\nP2dZCTMspvR3CDfM35oXCufdtFnxyU6PAyINUqF/wyTHguO3owRFPz64+sk3r2pT\nWHmJjG9E7V+KOh0s6REgD17Gqn6C5ijLchSrPUHB0wOIkeLJZndHxN/76h7+zhMt\nfFeNxPWHY2MfpcaLjz4UREzZPSB2U9k+y3pW1omCIcl6MQU9itGx/LpQE+H3ZeX2\nM2bdYd5L+ow+bdbGtsVKOuN+R9Dm17YpswF+vyQ=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAKlQ+3JX9yHXyjP/Ja6kZhkwDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBhcC1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MTkxNzQ1MjBaGA8yMTIxMDUxOTE4NDUyMFowgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBhcC1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKtahBrpUjQ6\nH2mni05BAKU6Z5USPZeSKmBBJN3YgD17rJ93ikJxSgzJ+CupGy5rvYQ0xznJyiV0\n91QeQN4P+G2MjGQR0RGeUuZcfcZitJro7iAg3UBvw8WIGkcDUg+MGVpRv/B7ry88\n7E4OxKb8CPNoa+a9j6ABjOaaxaI22Bb7j3OJ+JyMICs6CU2bgkJaj3VUV9FCNUOc\nh9PxD4jzT9yyGYm/sK9BAT1WOTPG8XQUkpcFqy/IerZDfiQkf1koiSd4s5VhBkUn\naQHOdri/stldT7a+HJFVyz2AXDGPDj+UBMOuLq0K6GAT6ThpkXCb2RIf4mdTy7ox\nN5BaJ+ih+Ro3ZwPkok60egnt/RN98jgbm+WstgjJWuLqSNInnMUgkuqjyBWwePqX\nKib+wdpyx/LOzhKPEFpeMIvHQ3A0sjlulIjnh+j+itezD+dp0UNxMERlW4Bn/IlS\nsYQVNfYutWkRPRLErXOZXtlxxkI98JWQtLjvGzQr+jywxTiw644FSLWdhKa6DtfU\n2JWBHqQPJicMElfZpmfaHZjtXuCZNdZQXWg7onZYohe281ZrdFPOqC4rUq7gYamL\nT+ZB+2P+YCPOLJ60bj/XSvcB7mesAdg8P0DNddPhHUFWx2dFqOs1HxIVB4FZVA9U\nPpbv4a484yxjTgG7zFZNqXHKTqze6rBBAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFCEAqjighncv/UnWzBjqu1Ka2Yb4MA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEAYyvumblckIXlohzi3QiShkZhqFzZultbFIu9\nGhA5CDar1IFMhJ9vJpO9nUK/camKs1VQRs8ZsBbXa0GFUM2p8y2cgUfLwFULAiC/\nsWETyW5lcX/xc4Pyf6dONhqFJt/ovVBxNZtcmMEWv/1D6Tf0nLeEb0P2i/pnSRR4\nOq99LVFjossXtyvtaq06OSiUUZ1zLPvV6AQINg8dWeBOWRcQYhYcEcC2wQ06KShZ\n0ahuu7ar5Gym3vuLK6nH+eQrkUievVomN/LpASrYhK32joQ5ypIJej3sICIgJUEP\nUoeswJ+Z16f3ECoL1OSnq4A0riiLj1ZGmVHNhM6m/gotKaHNMxsK9zsbqmuU6IT/\nP6cR0S+vdigQG8ZNFf5vEyVNXhl8KcaJn6lMD/gMB2rY0qpaeTg4gPfU5wcg8S4Y\nC9V//tw3hv0f2n+8kGNmqZrylOQDQWSSo8j8M2SRSXiwOHDoTASd1fyBEIqBAwzn\nLvXVg8wQd1WlmM3b0Vrsbzltyh6y4SuKSkmgufYYvC07NknQO5vqvZcNoYbLNea3\n76NkFaMHUekSbwVejZgG5HGwbaYBgNdJEdpbWlA3X4yGRVxknQSUyt4dZRnw/HrX\nk8x6/wvtw7wht0/DOqz1li7baSsMazqxx+jDdSr1h9xML416Q4loFCLgqQhil8Jq\nEm4Hy3A=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGBTCCA+2gAwIBAgIRAJfKe4Zh4aWNt3bv6ZjQwogwDQYJKoZIhvcNAQEMBQAw\ngZoxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEzMDEGA1UEAwwq\nQW1hem9uIFJEUyBjYS1jZW50cmFsLTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYD\nVQQHDAdTZWF0dGxlMCAXDTIxMDUyMTIyMDg1M1oYDzIxMjEwNTIxMjMwODUzWjCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGNhLWNlbnRyYWwtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNV\nBAcMB1NlYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpgUH6\nCrzd8cOw9prAh2rkQqAOx2vtuI7xX4tmBG4I/um28eBjyVmgwQ1fpq0Zg2nCKS54\nNn0pCmT7f3h6Bvopxn0J45AzXEtajFqXf92NQ3iPth95GVfAJSD7gk2LWMhpmID9\nJGQyoGuDPg+hYyr292X6d0madzEktVVGO4mKTF989qEg+tY8+oN0U2fRTrqa2tZp\niYsmg350ynNopvntsJAfpCO/srwpsqHHLNFZ9jvhTU8uW90wgaKO9i31j/mHggCE\n+CAOaJCM3g+L8DPl/2QKsb6UkBgaaIwKyRgKSj1IlgrK+OdCBCOgM9jjId4Tqo2j\nZIrrPBGl6fbn1+etZX+2/tf6tegz+yV0HHQRAcKCpaH8AXF44bny9andslBoNjGx\nH6R/3ib4FhPrnBMElzZ5i4+eM/cuPC2huZMBXb/jKgRC/QN1Wm3/nah5FWq+yn+N\ntiAF10Ga0BYzVhHDEwZzN7gn38bcY5yi/CjDUNpY0OzEe2+dpaBKPlXTaFfn9Nba\nCBmXPRF0lLGGtPeTAgjcju+NEcVa82Ht1pqxyu2sDtbu3J5bxp4RKtj+ShwN8nut\nTkf5Ea9rSmHEY13fzgibZlQhXaiFSKA2ASUwgJP19Putm0XKlBCNSGCoECemewxL\n+7Y8FszS4Uu4eaIwvXVqUEE2yf+4ex0hqQ1acQIDAQABo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBSeUnXIRxNbYsZLtKomIz4Y1nOZEzAOBgNVHQ8BAf8E\nBAMCAYYwDQYJKoZIhvcNAQEMBQADggIBAIpRvxVS0dzoosBh/qw65ghPUGSbP2D4\ndm6oYCv5g/zJr4fR7NzEbHOXX5aOQnHbQL4M/7veuOCLNPOW1uXwywMg6gY+dbKe\nYtPVA1as8G9sUyadeXyGh2uXGsziMFXyaESwiAXZyiYyKChS3+g26/7jwECFo5vC\nXGhWpIO7Hp35Yglp8AnwnEAo/PnuXgyt2nvyTSrxlEYa0jus6GZEZd77pa82U1JH\nqFhIgmKPWWdvELA3+ra1nKnvpWM/xX0pnMznMej5B3RT3Y+k61+kWghJE81Ix78T\n+tG4jSotgbaL53BhtQWBD1yzbbilqsGE1/DXPXzHVf9yD73fwh2tGWSaVInKYinr\na4tcrB3KDN/PFq0/w5/21lpZjVFyu/eiPj6DmWDuHW73XnRwZpHo/2OFkei5R7cT\nrn/YdDD6c1dYtSw5YNnS6hdCQ3sOiB/xbPRN9VWJa6se79uZ9NLz6RMOr73DNnb2\nbhIR9Gf7XAA5lYKqQk+A+stoKbIT0F65RnkxrXi/6vSiXfCh/bV6B41cf7MY/6YW\nehserSdjhQamv35rTFdM+foJwUKz1QN9n9KZhPxeRmwqPitAV79PloksOnX25ElN\nSlyxdndIoA1wia1HRd26EFm2pqfZ2vtD2EjU3wD42CXX4H8fKVDna30nNFSYF0yn\njGKc3k6UNxpg\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/jCCA+agAwIBAgIQaRHaEqqacXN20e8zZJtmDDANBgkqhkiG9w0BAQwFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIHVzLWVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTI1MjIzODM1WhgPMjEyMTA1MjUyMzM4MzVaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgdXMtZWFzdC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAInfBCaHuvj6Rb5c\nL5Wmn1jv2PHtEGMHm+7Z8dYosdwouG8VG2A+BCYCZfij9lIGszrTXkY4O7vnXgru\nJUNdxh0Q3M83p4X+bg+gODUs3jf+Z3Oeq7nTOk/2UYvQLcxP4FEXILxDInbQFcIx\nyen1ESHggGrjEodgn6nbKQNRfIhjhW+TKYaewfsVWH7EF2pfj+cjbJ6njjgZ0/M9\nVZifJFBgat6XUTOf3jwHwkCBh7T6rDpgy19A61laImJCQhdTnHKvzTpxcxiLRh69\nZObypR7W04OAUmFS88V7IotlPmCL8xf7kwxG+gQfvx31+A9IDMsiTqJ1Cc4fYEKg\nbL+Vo+2Ii4W2esCTGVYmHm73drznfeKwL+kmIC/Bq+DrZ+veTqKFYwSkpHRyJCEe\nU4Zym6POqQ/4LBSKwDUhWLJIlq99bjKX+hNTJykB+Lbcx0ScOP4IAZQoxmDxGWxN\nS+lQj+Cx2pwU3S/7+OxlRndZAX/FKgk7xSMkg88HykUZaZ/ozIiqJqSnGpgXCtED\noQ4OJw5ozAr+/wudOawaMwUWQl5asD8fuy/hl5S1nv9XxIc842QJOtJFxhyeMIXt\nLVECVw/dPekhMjS3Zo3wwRgYbnKG7YXXT5WMxJEnHu8+cYpMiRClzq2BEP6/MtI2\nAZQQUFu2yFjRGL2OZA6IYjxnXYiRAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFADCcQCPX2HmkqQcmuHfiQ2jjqnrMA4GA1UdDwEB/wQEAwIBhjAN\nBgkqhkiG9w0BAQwFAAOCAgEASXkGQ2eUmudIKPeOIF7RBryCoPmMOsqP0+1qxF8l\npGkwmrgNDGpmd9s0ArfIVBTc1jmpgB3oiRW9c6n2OmwBKL4UPuQ8O3KwSP0iD2sZ\nKMXoMEyphCEzW1I2GRvYDugL3Z9MWrnHkoaoH2l8YyTYvszTvdgxBPpM2x4pSkp+\n76d4/eRpJ5mVuQ93nC+YG0wXCxSq63hX4kyZgPxgCdAA+qgFfKIGyNqUIqWgeyTP\nn5OgKaboYk2141Rf2hGMD3/hsGm0rrJh7g3C0ZirPws3eeJfulvAOIy2IZzqHUSY\njkFzraz6LEH3IlArT3jUPvWKqvh2lJWnnp56aqxBR7qHH5voD49UpJWY1K0BjGnS\nOHcurpp0Yt/BIs4VZeWdCZwI7JaSeDcPMaMDBvND3Ia5Fga0thgYQTG6dE+N5fgF\nz+hRaujXO2nb0LmddVyvE8prYlWRMuYFv+Co8hcMdJ0lEZlfVNu0jbm9/GmwAZ+l\n9umeYO9yz/uC7edC8XJBglMAKUmVK9wNtOckUWAcCfnPWYLbYa/PqtXBYcxrso5j\niaS/A7iEW51uteHBGrViCy1afGG+hiUWwFlesli+Rq4dNstX3h6h2baWABaAxEVJ\ny1RnTQSz6mROT1VmZSgSVO37rgIyY0Hf0872ogcTS+FfvXgBxCxsNWEbiQ/XXva4\n0Ws=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtDCCAjqgAwIBAgIRAMyaTlVLN0ndGp4ffwKAfoMwCgYIKoZIzj0EAwMwgZkx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEyMDAGA1UEAwwpQW1h\nem9uIFJEUyBtZS1jZW50cmFsLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjIwNTA3MDA0NDM3WhgPMjEyMjA1MDcwMTQ0MzdaMIGZMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMjAwBgNVBAMMKUFtYXpv\nbiBSRFMgbWUtY2VudHJhbC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE19nCV1nsI6CohSor13+B25cr\nzg+IHdi9Y3L7ziQnHWI6yjBazvnKD+oC71aRRlR8b5YXsYGUQxWzPLHN7EGPcSGv\nbzA9SLG1KQYCJaQ0m9Eg/iGrwKWOgylbhVw0bCxoo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MB0GA1UdDgQWBBS4KsknsJXM9+QPEkBdZxUPaLr11zAOBgNVHQ8BAf8EBAMC\nAYYwCgYIKoZIzj0EAwMDaAAwZQIxAJaRgrYIEfXQMZQQDxMTYS0azpyWSseQooXo\nL3nYq4OHGBgYyQ9gVjvRYWU85PXbfgIwdi82DtANQFkCu+j+BU0JBY/uRKPEeYzo\nJG92igKIcXPqCoxIJ7lJbbzmuf73gQu5\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAJwCobx0Os8F7ihbJngxrR8wDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MjAxNzE1MzNaGA8yMTIxMDUyMDE4MTUzM1owgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANukKwlm+ZaI\nY5MkWGbEVLApEyLmlrHLEg8PfiiEa9ts7jssQcin3bzEPdTqGr5jo91ONoZ3ccWq\nxJgg1W3bLu5CAO2CqIOXTXHRyCO/u0Ch1FGgWB8xETPSi3UHt/Vn1ltdO6DYdbDU\nmYgwzYrvLBdRCwxsb9o+BuYQHVFzUYonqk/y9ujz3gotzFq7r55UwDTA1ita3vb4\neDKjIb4b1M4Wr81M23WHonpje+9qkkrAkdQcHrkgvSCV046xsq/6NctzwCUUNsgF\n7Q1a8ut5qJEYpz5ta8vI1rqFqAMBqCbFjRYlmAoTTpFPOmzAVxV+YoqTrW5A16su\n/2SXlMYfJ/n/ad/QfBNPPAAQMpyOr2RCL/YiL/PFZPs7NxYjnZHNWxMLSPgFyI+/\nt2klnn5jR76KJK2qimmaXedB90EtFsMRUU1e4NxH9gDuyrihKPJ3aVnZ35mSipvR\n/1KB8t8gtFXp/VQaz2sg8+uxPMKB81O37fL4zz6Mg5K8+aq3ejBiyHucpFGnsnVB\n3kQWeD36ONkybngmgWoyPceuSWm1hQ0Z7VRAQX+KlxxSaHmSaIk1XxZu9h9riQHx\nfMuev6KXjRn/CjCoUTn+7eFrt0dT5GryQEIZP+nA0oq0LKxogigHNZlwAT4flrqb\nJUfZJrqgoce5HjZSXl10APbtPjJi0fW9AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFEfV+LztI29OVDRm0tqClP3NrmEWMA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEAvSNe+0wuk53KhWlRlRf2x/97H2Q76X3anzF0\n5fOSVm022ldALzXMzqOfdnoKIhAu2oVKiHHKs7mMas+T6TL+Mkphx0CYEVxFE3PG\n061q3CqJU+wMm9W9xsB79oB2XG47r1fIEywZZ3GaRsatAbjcNOT8uBaATPQAfJFN\nzjFe4XyN+rA4cFrYNvfHTeu5ftrYmvks7JlRaJgEGWsz+qXux7uvaEEVPqEumd2H\nuYeaRNOZ2V23R009X5lbgBFx9tq5VDTnKhQiTQ2SeT0rc1W3Dz5ik6SbQQNP3nSR\n0Ywy7r/sZ3fcDyfFiqnrVY4Ympfvb4YW2PZ6OsQJbzH6xjdnTG2HtzEU30ngxdp1\nWUEF4zt6rjJCp7QBUqXgdlHvJqYu6949qtWjEPiFN9uSsRV2i1YDjJqN52dLjAPn\nAipJKo8x1PHTwUzuITqnB9BdP+5TlTl8biJfkEf/+08eWDTLlDHr2VrZLOLompTh\nbS5OrhDmqA2Q+O+EWrTIhMflwwlCpR9QYM/Xwvlbad9H0FUHbJsCVNaru3wGOgWo\ntt3dNSK9Lqnv/Ej9K9v6CRr36in4ylJKivhJ5B9E7ABHg7EpBJ1xi7O5eNDkNoJG\n+pFyphJq3AkBR2U4ni2tUaTAtSW2tks7IaiDV+UMtqZyGabT5ISQfWLLtLHSWn2F\nTspdjbg=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAJZFh4s9aZGzKaTMLrSb4acwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBCZXRhIHVzLWVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTE4MjEyODQxWhgPMjA2MTA1MTgyMjI4NDFa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgQmV0YSB1cy1lYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n17i2yoU6diep+WrqxIn2CrDEO2NdJVwWTSckx4WMZlLpkQDoymSmkNHjq9ADIApD\nA31Cx+843apL7wub8QkFZD0Tk7/ThdHWJOzcAM3ov98QBPQfOC1W5zYIIRP2F+vQ\nTRETHQnLcW3rLv0NMk5oQvIKpJoC9ett6aeVrzu+4cU4DZVWYlJUoC/ljWzCluau\n8blfW0Vwin6OB7s0HCG5/wijQWJBU5SrP/KAIPeQi1GqG5efbqAXDr/ple0Ipwyo\nXjjl73LenGUgqpANlC9EAT4i7FkJcllLPeK3NcOHjuUG0AccLv1lGsHAxZLgjk/x\nz9ZcnVV9UFWZiyJTKxeKPwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBRWyMuZUo4gxCR3Luf9/bd2AqZ7CjAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAIqN2DlIKlvDFPO0QUZQVFbsi/tLdYM98/vvzBpttlTGVMyD\ngJuQeHVz+MnhGIwoCGOlGU3OOUoIlLAut0+WG74qYczn43oA2gbMd7HoD7oL/IGg\nnjorBwJVcuuLv2G//SqM3nxGcLRtkRnQ+lvqPxMz9+0fKFUn6QcIDuF0QSfthLs2\nWSiGEPKO9c9RSXdRQ4pXA7c3hXng8P4A2ZmdciPne5Nu4I4qLDGZYRrRLRkNTrOi\nTyS6r2HNGUfgF7eOSeKt3NWL+mNChcYj71/Vycf5edeczpUgfnWy9WbPrK1svKyl\naAs2xg+X6O8qB+Mnj2dNBzm+lZIS3sIlm+nO9sg=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAPAlEk8VJPmEzVRRaWvTh2AwCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyB1cy1lYXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTI1MjI0MTU1WhgPMjEyMTA1MjUyMzQxNTVaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgdXMtZWFzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEx5xjrup8II4HOJw15NTnS3H5yMrQGlbj\nEDA5MMGnE9DmHp5dACIxmPXPMe/99nO7wNdl7G71OYPCgEvWm0FhdvVUeTb3LVnV\nBnaXt32Ek7/oxGk1T+Df03C+W0vmuJ+wo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBTGXmqBWN/1tkSea4pNw0oHrjk2UDAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIxAIqqZWCSrIkZ7zsv/FygtAusW6yvlL935YAWYPVXU30m\njkMFLM+/RJ9GMvnO8jHfCgIwB+whlkcItzE9CRQ6CsMo/d5cEHDUu/QW6jSIh9BR\nOGh9pTYPVkUbBiKPA7lVVhre\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/zCCA+egAwIBAgIRAJGY9kZITwfSRaAS/bSBOw8wDQYJKoZIhvcNAQEMBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBzYS1lYXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE4MTEyMFoYDzIxMjEwNTE5MTkxMTIwWjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIHNhLWVhc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDe2vlDp6Eo4WQi\nWi32YJOgdXHhxTFrLjB9SRy22DYoMaWfginJIwJcSR8yse8ZDQuoNhERB9LRggAE\neng23mhrfvtL1yQkMlZfBu4vG1nOb22XiPFzk7X2wqz/WigdYNBCqa1kK3jrLqPx\nYUy7jk2oZle4GLVRTNGuMfcid6S2hs3UCdXfkJuM2z2wc3WUlvHoVNk37v2/jzR/\nhSCHZv5YHAtzL/kLb/e64QkqxKll5QmKhyI6d7vt6Lr1C0zb+DmwxUoJhseAS0hI\ndRk5DklMb4Aqpj6KN0ss0HAYqYERGRIQM7KKA4+hxDMUkJmt8KqWKZkAlCZgflzl\nm8NZ31o2cvBzf6g+VFHx+6iVrSkohVQydkCxx7NJ743iPKsh8BytSM4qU7xx4OnD\nH2yNXcypu+D5bZnVZr4Pywq0w0WqbTM2bpYthG9IC4JeVUvZ2mDc01lqOlbMeyfT\nog5BRPLDXdZK8lapo7se2teh64cIfXtCmM2lDSwm1wnH2iSK+AWZVIM3iE45WSGc\nvZ+drHfVgjJJ5u1YrMCWNL5C2utFbyF9Obw9ZAwm61MSbPQL9JwznhNlCh7F2ANW\nZHWQPNcOAJqzE4uVcJB1ZeVl28ORYY1668lx+s9yYeMXk3QQdj4xmdnvoBFggqRB\nZR6Z0D7ZohADXe024RzEo1TukrQgKQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBT7Vs4Y5uG/9aXnYGNMEs6ycPUT3jAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQEMBQADggIBACN4Htp2PvGcQA0/sAS+qUVWWJoAXSsu8Pgc6Gar\n7tKVlNJ/4W/a6pUV2Xo/Tz3msg4yiE8sMESp2k+USosD5n9Alai5s5qpWDQjrqrh\n76AGyF2nzve4kIN19GArYhm4Mz/EKEG1QHYvBDGgXi3kNvL/a2Zbybp+3LevG+q7\nxtx4Sz9yIyMzuT/6Y7ijtiMZ9XbuxGf5wab8UtwT3Xq1UradJy0KCkzRJAz/Wy/X\nHbTkEvKSaYKExH6sLo0jqdIjV/d2Io31gt4e0Ly1ER2wPyFa+pc/swu7HCzrN+iz\nA2ZM4+KX9nBvFyfkHLix4rALg+WTYJa/dIsObXkdZ3z8qPf5A9PXlULiaa1mcP4+\nrokw74IyLEYooQ8iSOjxumXhnkTS69MAdGzXYE5gnHokABtGD+BB5qLhtLt4fqAp\n8AyHpQWMyV42M9SJLzQ+iOz7kAgJOBOaVtJI3FV/iAg/eqWVm3yLuUTWDxSHrKuL\nN19+pSjF6TNvUSFXwEa2LJkfDqIOCE32iOuy85QY//3NsgrSQF6UkSPa95eJrSGI\n3hTRYYh3Up2GhBGl1KUy7/o0k3KRZTk4s38fylY8bZ3TakUOH5iIGoHyFVVcp361\nPyy25SzFSmNalWoQd9wZVc/Cps2ldxhcttM+WLkFNzprd0VJa8qTz8vYtHP0ouDN\nnWS0\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRAOY7gfcBZgR2tqfBzMbFQCUwDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtNCBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjIwNTI1MTY1NDU5WhgPMjEyMjA1MjUxNzU0NTla\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtc291dGhlYXN0LTQgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nlfxER43FuLRdL08bddF0YhbCP+XXKj1A/TFMXmd2My8XDei8rPXFYyyjMig9+xZw\nuAsIxLwz8uiA26CKA8bCZKg5VG2kTeOJAfvBJaLv1CZefs3Z4Uf1Sjvm6MF2yqEj\nGoORfyfL9HiZFTDuF/hcjWoKYCfMuG6M/wO8IbdICrX3n+BiYQJu/pFO660Mg3h/\n8YBBWYDbHoCiH/vkqqJugQ5BM3OI5nsElW51P1icEEqti4AZ7JmtSv9t7fIFBVyR\noaEyOgpp0sm193F/cDJQdssvjoOnaubsSYm1ep3awZAUyGN/X8MBrPY95d0hLhfH\nEhc5Icyg+hsosBljlAyksmt4hFQ9iBnWIz/ZTfGMck+6p3HVL9RDgvluez+rWv59\n8q7omUGsiPApy5PDdwI/Wt/KtC34/2sjslIJfvgifdAtkRPkhff1WEwER00ADrN9\neGGInaCpJfb1Rq8cV2n00jxg7DcEd65VR3dmIRb0bL+jWK62ni/WdEyomAOMfmGj\naWf78S/4rasHllWJ+QwnaUYY3u6N8Cgio0/ep4i34FxMXqMV3V0/qXdfhyabi/LM\nwCxNo1Dwt+s6OtPJbwO92JL+829QAxydfmaMTeHBsgMPkG7RwAekeuatKGHNsc2Z\nx2Q4C2wVvOGAhcHwxfM8JfZs3nDSZJndtVVnFlUY0UECAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUpnG7mWazy6k97/tb5iduRB3RXgQwDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQCDLqq1Wwa9Tkuv7vxBnIeVvvFF\necTn+P+wJxl9Qa2ortzqTHZsBDyJO62d04AgBwiDXkJ9a+bthgG0H1J7Xee8xqv1\nxyX2yKj24ygHjspLotKP4eDMdDi5TYq+gdkbPmm9Q69B1+W6e049JVGXvWG8/7kU\nigxeuCYwtCCdUPRLf6D8y+1XMGgVv3/DSOHWvTg3MJ1wJ3n3+eve3rjGdRYWZeJu\nk21HLSZYzVrCtUsh2YAeLnUbSxVuT2Xr4JehYe9zW5HEQ8Je/OUfnCy9vzoN/ITw\nosAH+EBJQey7RxEDqMwCaRefH0yeHFcnOll0OXg/urnQmwbEYzQ1uutJaBPsjU0J\nQf06sMxI7GiB5nPE+CnI2sM6A9AW9kvwexGXpNJiLxF8dvPQthpOKGcYu6BFvRmt\n6ctfXd9b7JJoVqMWuf5cCY6ihpk1e9JTlAqu4Eb/7JNyGiGCR40iSLvV28un9wiE\nplrdYxwcNYq851BEu3r3AyYWw/UW1AKJ5tM+/Gtok+AphMC9ywT66o/Kfu44mOWm\nL3nSLSWEcgfUVgrikpnyGbUnGtgCmHiMlUtNVexcE7OtCIZoVAlCGKNu7tyuJf10\nQlk8oIIzfSIlcbHpOYoN79FkLoDNc2er4Gd+7w1oPQmdAB0jBJnA6t0OUBPKdDdE\nUfff2jrbfbzECn1ELg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCDCCA/CgAwIBAgIQIuO1A8LOnmc7zZ/vMm3TrDANBgkqhkiG9w0BAQwFADCB\nnDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTUwMwYDVQQDDCxB\nbWF6b24gUkRTIGFwLXNvdXRoZWFzdC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4G\nA1UEBwwHU2VhdHRsZTAgFw0yMTA1MjQyMDQ2MThaGA8yMTIxMDUyNDIxNDYxOFow\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMiBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDq\nqRHKbG8ZK6/GkGm2cenznEF06yHwI1gD5sdsHjTgekDZ2Dl9RwtDmUH2zFuIQwGj\nSeC7E2iKwrJRA5wYzL9/Vk8NOILEKQOP8OIKUHbc7q8rEtjs401KcU6pFBBEdO9G\nCTiRhogq+8mhC13AM/UriZJbKhwgM2UaDOzAneGMhQAGjH8z83NsNcPxpYVE7tqM\nsch5yLtIJLkJRusrmQQTeHUev16YNqyUa+LuFclFL0FzFCimkcxUhXlbfEKXbssS\nyPzjiv8wokGyo7+gA0SueceMO2UjfGfute3HlXZDcNvBbkSY+ver41jPydyRD6Qq\noEkh0tyIbPoa3oU74kwipJtz6KBEA3u3iq61OUR0ENhR2NeP7CSKrC24SnQJZ/92\nqxusrbyV/0w+U4m62ug/o4hWNK1lUcc2AqiBOvCSJ7qpdteTFxcEIzDwYfERDx6a\nd9+3IPvzMb0ZCxBIIUFMxLTF7yAxI9s6KZBBXSZ6tDcCCYIgEysEPRWMRAcG+ye/\nfZVn9Vnzsj4/2wchC2eQrYpb1QvG4eMXA4M5tFHKi+/8cOPiUzJRgwS222J8YuDj\nyEBval874OzXk8H8Mj0JXJ/jH66WuxcBbh5K7Rp5oJn7yju9yqX6qubY8gVeMZ1i\nu4oXCopefDqa35JplQNUXbWwSebi0qJ4EK0V8F9Q+QIDAQABo0IwQDAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBT4ysqCxaPe7y+g1KUIAenqu8PAgzAOBgNVHQ8B\nAf8EBAMCAYYwDQYJKoZIhvcNAQEMBQADggIBALU8WN35KAjPZEX65tobtCDQFkIO\nuJjv0alD7qLB0i9eY80C+kD87HKqdMDJv50a5fZdqOta8BrHutgFtDm+xo5F/1M3\nu5/Vva5lV4xy5DqPajcF4Mw52czYBmeiLRTnyPJsU93EQIC2Bp4Egvb6LI4cMOgm\n4pY2hL8DojOC5PXt4B1/7c1DNcJX3CMzHDm4SMwiv2MAxSuC/cbHXcWMk+qXdrVx\n+ayLUSh8acaAOy3KLs1MVExJ6j9iFIGsDVsO4vr4ZNsYQiyHjp+L8ops6YVBO5AT\nk/pI+axHIVsO5qiD4cFWvkGqmZ0gsVtgGUchZaacboyFsVmo6QPrl28l6LwxkIEv\nGGJYvIBW8sfqtGRspjfX5TlNy5IgW/VOwGBdHHsvg/xpRo31PR3HOFw7uPBi7cAr\nFiZRLJut7af98EB2UvovZnOh7uIEGPeecQWeOTQfJeWet2FqTzFYd0NUMgqPuJx1\nvLKferP+ajAZLJvVnW1J7Vccx/pm0rMiUJEf0LRb/6XFxx7T2RGjJTi0EzXODTYI\ngnLfBBjnolQqw+emf4pJ4pAtly0Gq1KoxTG2QN+wTd4lsCMjnelklFDjejwnl7Uy\nvtxzRBAu/hi/AqDkDFf94m6j+edIrjbi9/JDFtQ9EDlyeqPgw0qwi2fwtJyMD45V\nfejbXelUSJSzDIdY\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRAN7Y9G9i4I+ZaslPobE7VL4wDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1ub3J0aGVhc3QtMiBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTIwMTYzMzIzWhgPMjEyMTA1MjAxNzMzMjNa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgYXAtbm9ydGhlYXN0LTIgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\n4BEPCiIfiK66Q/qa8k+eqf1Q3qsa6Xuu/fPkpuStXVBShhtXd3eqrM0iT4Xxs420\nVa0vSB3oZ7l86P9zYfa60n6PzRxdYFckYX330aI7L/oFIdaodB/C9szvROI0oLG+\n6RwmIF2zcprH0cTby8MiM7G3v9ykpq27g4WhDC1if2j8giOQL3oHpUaByekZNIHF\ndIllsI3RkXmR3xmmxoOxJM1B9MZi7e1CvuVtTGOnSGpNCQiqofehTGwxCN2wFSK8\nxysaWlw48G0VzZs7cbxoXMH9QbMpb4tpk0d+T8JfAPu6uWO9UwCLWWydf0CkmA/+\nD50/xd1t33X9P4FEaPSg5lYbHXzSLWn7oLbrN2UqMLaQrkoEBg/VGvzmfN0mbflw\n+T87bJ/VEOVNlG+gepyCTf89qIQVWOjuYMox4sK0PjzZGsYEuYiq1+OUT3vk/e5K\nag1fCcq2Isy4/iwB2xcXrsQ6ljwdk1fc+EmOnjGKrhuOHJY3S+RFv4ToQBsVyYhC\nXGaC3EkqIX0xaCpDimxYhFjWhpDXAjG/zJ+hRLDAMCMhl/LPGRk/D1kzSbPmdjpl\nlEMK5695PeBvEBTQdBQdOiYgOU3vWU6tzwwHfiM2/wgvess/q0FDAHfJhppbgbb9\n3vgsIUcsvoC5o29JvMsUxsDRvsAfEmMSDGkJoA/X6GECAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUgEWm1mZCbGD6ytbwk2UU1aLaOUUwDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQBb4+ABTGBGwxK1U/q4g8JDqTQM\n1Wh8Oz8yAk4XtPJMAmCctxbd81cRnSnePWw/hxViLVtkZ/GsemvXfqAQyOn1coN7\nQeYSw+ZOlu0j2jEJVynmgsR7nIRqE7QkCyZAU+d2FTJUfmee+IiBiGyFGgxz9n7A\nJhBZ/eahBbiuoOik/APW2JWLh0xp0W0GznfJ8lAlaQTyDa8iDXmVtbJg9P9qzkvl\nFgPXQttzEOyooF8Pb2LCZO4kUz+1sbU7tHdr2YE+SXxt6D3SBv+Yf0FlvyWLiqVk\nGDEOlPPTDSjAWgKnqST8UJ0RDcZK/v1ixs7ayqQJU0GUQm1I7LGTErWXHMnCuHKe\nUKYuiSZwmTcJ06NgdhcCnGZgPq13ryMDqxPeltQc3n5eO7f1cL9ERYLDLOzm6A9P\noQ3MfcVOsbHgGHZWaPSeNrQRN9xefqBXH0ZPasgcH9WJdsLlEjVUXoultaHOKx3b\nUCCb+d3EfqF6pRT488ippOL6bk7zNubwhRa/+y4wjZtwe3kAX78ACJVcjPobH9jZ\nErySads5zdQeaoee5wRKdp3TOfvuCe4bwLRdhOLCHWzEcXzY3g/6+ppLvNom8o+h\nBh5X26G6KSfr9tqhQ3O9IcbARjnuPbvtJnoPY0gz3EHHGPhy0RNW8i2gl3nUp0ah\nPtjwbKW0hYAhIttT0Q==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtzCCAj2gAwIBAgIQQRBQTs6Y3H1DDbpHGta3lzAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC0zIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDYxMTAwMTI0M1oYDzIxMjEwNjExMDExMjQzWjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGFwLXNvdXRoZWFzdC0zIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEs0942Xj4m/gKA+WA6F5h\nAHYuek9eGpzTRoLJddM4rEV1T3eSueytMVKOSlS3Ub9IhyQrH2D8EHsLYk9ktnGR\npATk0kCYTqFbB7onNo070lmMJmGT/Q7NgwC8cySChFxbo0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBQ20iKBKiNkcbIZRu0y1uoF1yJTEzAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwYv0wTSrpQTaPaarfLN8Xcqrqu3hzl07n\nFrESIoRw6Cx77ZscFi2/MV6AFyjCV/TlAjEAhpwJ3tpzPXpThRML8DMJYZ3YgMh3\nCMuLqhPpla3cL0PhybrD27hJWl29C4el6aMO\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrDCCAjOgAwIBAgIQGcztRyV40pyMKbNeSN+vXTAKBggqhkjOPQQDAzCBljEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMS8wLQYDVQQDDCZBbWF6\nb24gUkRTIHVzLWVhc3QtMiBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTAgFw0yMTA1MjEyMzE1NTZaGA8yMTIxMDUyMjAwMTU1NlowgZYxCzAJBgNV\nBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYD\nVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1hem9uIFJE\nUyB1cy1lYXN0LTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1NlYXR0bGUw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQfDcv+GGRESD9wT+I5YIPRsD3L+/jsiIis\nTr7t9RSbFl+gYpO7ZbDXvNbV5UGOC5lMJo/SnqFRTC6vL06NF7qOHfig3XO8QnQz\n6T5uhhrhnX2RSY3/10d2kTyHq3ZZg3+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFLDyD3PRyNXpvKHPYYxjHXWOgfPnMA4GA1UdDwEB/wQEAwIBhjAKBggq\nhkjOPQQDAwNnADBkAjB20HQp6YL7CqYD82KaLGzgw305aUKw2aMrdkBR29J183jY\n6Ocj9+Wcif9xnRMS+7oCMAvrt03rbh4SU9BohpRUcQ2Pjkh7RoY0jDR4Xq4qzjNr\n5UFr3BXpFvACxXF51BksGQ==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjWgAwIBAgIQeKbS5zvtqDvRtwr5H48cAjAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTIwMTcxOTU1WhgPMjEyMTA1MjAxODE5NTVaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgbWUtc291dGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABEKjgUaAPmUlRMEQdBC7BScAGosJ1zRV\nLDd38qTBjzgmwBfQJ5ZfGIvyEK5unB09MB4e/3qqK5I/L6Qn5Px/n5g4dq0c7MQZ\nu7G9GBYm90U3WRJBf7lQrPStXaRnS4A/O6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUNKcAbGEIn03/vkwd8g6jNyiRdD4wDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2cAMGQCMHIeTrjenCSYuGC6txuBt/0ZwnM/ciO9kHGWVCoK8QLs\njGghb5/YSFGZbmQ6qpGlSAIwVOQgdFfTpEfe5i+Vs9frLJ4QKAfc27cTNYzRIM0I\nE+AJgK4C4+DiyyMzOpiCfmvq\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGCDCCA/CgAwIBAgIQSFkEUzu9FYgC5dW+5lnTgjANBgkqhkiG9w0BAQwFADCB\nnDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTUwMwYDVQQDDCxB\nbWF6b24gUkRTIGFwLXNvdXRoZWFzdC0zIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4G\nA1UEBwwHU2VhdHRsZTAgFw0yMTA2MTEwMDA4MzZaGA8yMTIxMDYxMTAxMDgzNlow\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBhcC1zb3V0aGVhc3QtMyBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDx\nmy5Qmd8zdwaI/KOKV9Xar9oNbhJP5ED0JCiigkuvCkg5qM36klszE8JhsUj40xpp\nvQw9wkYW4y+C8twBpzKGBvakqMnoaVUV7lOCKx0RofrnNwkZCboTBB4X/GCZ3fIl\nYTybS7Ehi1UuiaZspIT5A2jidoA8HiBPk+mTg1UUkoWS9h+MEAPa8L4DY6fGf4pO\nJ1Gk2cdePuNzzIrpm2yPto+I8MRROwZ3ha7ooyymOXKtz2c7jEHHJ314boCXAv9G\ncdo27WiebewZkHHH7Zx9iTIVuuk2abyVSzvLVeGv7Nuy4lmSqa5clWYqWsGXxvZ2\n0fZC5Gd+BDUMW1eSpW7QDTk3top6x/coNoWuLSfXiC5ZrJkIKimSp9iguULgpK7G\nabMMN4PR+O+vhcB8E879hcwmS2yd3IwcPTl3QXxufqeSV58/h2ibkqb/W4Bvggf6\n5JMHQPlPHOqMCVFIHP1IffIo+Of7clb30g9FD2j3F4qgV3OLwEDNg/zuO1DiAvH1\nL+OnmGHkfbtYz+AVApkAZrxMWwoYrwpauyBusvSzwRE24vLTd2i80ZDH422QBLXG\nrN7Zas8rwIiBKacJLYtBYETw8mfsNt8gb72aIQX6cZOsphqp6hUtKaiMTVgGazl7\ntBXqbB+sIv3S9X6bM4cZJKkMJOXbnyCCLZFYv8TurwIDAQABo0IwQDAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBTOVtaS1b/lz6yJDvNk65vEastbQTAOBgNVHQ8B\nAf8EBAMCAYYwDQYJKoZIhvcNAQEMBQADggIBABEONg+TmMZM/PrYGNAfB4S41zp1\n3CVjslZswh/pC4kgXSf8cPJiUOzMwUevuFQj7tCqxQtJEygJM2IFg4ViInIah2kh\nxlRakEGGw2dEVlxZAmmLWxlL1s1lN1565t5kgVwM0GVfwYM2xEvUaby6KDVJIkD3\naM6sFDBshvVA70qOggM6kU6mwTbivOROzfoIQDnVaT+LQjHqY/T+ok6IN0YXXCWl\nFavai8RDjzLDFwXSRvgIK+1c49vlFFY4W9Efp7Z9tPSZU1TvWUcKdAtV8P2fPHAS\nvAZ+g9JuNfeawhEibjXkwg6Z/yFUueQCQOs9TRXYogzp5CMMkfdNJF8byKYqHscs\nUosIcETnHwqwban99u35sWcoDZPr6aBIrz7LGKTJrL8Nis8qHqnqQBXu/fsQEN8u\nzJ2LBi8sievnzd0qI0kaWmg8GzZmYH1JCt1GXSqOFkI8FMy2bahP7TUQR1LBUKQ3\nhrOSqldkhN+cSAOnvbQcFzLr+iEYEk34+NhcMIFVE+51KJ1n6+zISOinr6mI3ckX\n6p2tmiCD4Shk2Xx/VTY/KGvQWKFcQApWezBSvDNlGe0yV71LtLf3dr1pr4ofo7cE\nrYucCJ40bfxEU/fmzYdBF32xP7AOD9U0FbOR3Mcthc6Z6w20WFC+zru8FGY08gPf\nWT1QcNdw7ntUJP/w\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrzCCAjWgAwIBAgIQARky6+5PNFRkFVOp3Ob1CTAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LXNvdXRoLTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjIwNTIzMTg0MTI4WhgPMjEyMjA1MjMxOTQxMjdaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgZXUtc291dGgtMiBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABNVGL5oF7cfIBxKyWd2PVK/S5yQfaJY3\nQFHWvEdt6951n9JhiiPrHzfVHsxZp1CBjILRMzjgRbYWmc8qRoLkgGE7htGdwudJ\nFa/WuKzO574Prv4iZXUnVGTboC7JdvKbh6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUgDeIIEKynwUbNXApdIPnmRWieZwwDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2gAMGUCMEOOJfucrST+FxuqJkMZyCM3gWGZaB+/w6+XUAJC6hFM\nuSTY0F44/bERkA4XhH+YGAIxAIpJQBakCA1/mXjsTnQ+0El9ty+LODp8ibkn031c\n8DKDS7pR9UK7ZYdR6zFg3ZCjQw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjOgAwIBAgIQJvkWUcYLbnxtuwnyjMmntDAKBggqhkjOPQQDAzCBljEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMS8wLQYDVQQDDCZBbWF6\nb24gUkRTIGV1LXdlc3QtMyBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTAgFw0yMTA1MjUyMjI2MTJaGA8yMTIxMDUyNTIzMjYxMlowgZYxCzAJBgNV\nBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYD\nVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1hem9uIFJE\nUyBldS13ZXN0LTMgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1NlYXR0bGUw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAARENn8uHCyjn1dFax4OeXxvbV861qsXFD9G\nDshumTmFzWWHN/69WN/AOsxy9XN5S7Cgad4gQgeYYYgZ5taw+tFo/jQvCLY//uR5\nuihcLuLJ78opvRPvD9kbWZ6oXfBtFkWjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD\nVR0OBBYEFKiK3LpoF+gDnqPldGSwChBPCYciMA4GA1UdDwEB/wQEAwIBhjAKBggq\nhkjOPQQDAwNpADBmAjEA+7qfvRlnvF1Aosyp9HzxxCbN7VKu+QXXPhLEBWa5oeWW\nUOcifunf/IVLC4/FGCsLAjEAte1AYp+iJyOHDB8UYkhBE/1sxnFaTiEPbvQBU0wZ\nSuwWVLhu2wWDuSW+K7tTuL8p\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIRAKeDpqX5WFCGNo94M4v69sUwDQYJKoZIhvcNAQELBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBldS13ZXN0LTMgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIyMTgzM1oYDzIwNjEwNTI1MjMxODMzWjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LXdlc3QtMyBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcKOTEMTfzvs4H\nWtJR8gI7GXN6xesulWtZPv21oT+fLGwJ+9Bv8ADCGDDrDxfeH/HxJmzG9hgVAzVn\n4g97Bn7q07tGZM5pVi96/aNp11velZT7spOJKfJDZTlGns6DPdHmx48whpdO+dOb\n6+eR0VwCIv+Vl1fWXgoACXYCoKjhxJs+R+fwY//0JJ1YG8yjZ+ghLCJmvlkOJmE1\nTCPUyIENaEONd6T+FHGLVYRRxC2cPO65Jc4yQjsXvvQypoGgx7FwD5voNJnFMdyY\n754JGPOOe/SZdepN7Tz7UEq8kn7NQSbhmCsgA/Hkjkchz96qN/YJ+H/okiQUTNB0\neG9ogiVFAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFjayw9Y\nMjbxfF14XAhMM2VPl0PfMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC\nAQEAAtmx6d9+9CWlMoU0JCirtp4dSS41bBfb9Oor6GQ8WIr2LdfZLL6uES/ubJPE\n1Sh5Vu/Zon5/MbqLMVrfniv3UpQIof37jKXsjZJFE1JVD/qQfRzG8AlBkYgHNEiS\nVtD4lFxERmaCkY1tjKB4Dbd5hfhdrDy29618ZjbSP7NwAfnwb96jobCmMKgxVGiH\nUqsLSiEBZ33b2hI7PJ6iTJnYBWGuiDnsWzKRmheA4nxwbmcQSfjbrNwa93w3caL2\nv/4u54Kcasvcu3yFsUwJygt8z43jsGAemNZsS7GWESxVVlW93MJRn6M+MMakkl9L\ntWaXdHZ+KUV7LhfYLb0ajvb40w==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBDCCAuygAwIBAgIQJ5oxPEjefCsaESSwrxk68DANBgkqhkiG9w0BAQsFADCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGV1LWNlbnRyYWwtMiBSb290IENBIFJTQTIwNDggRzExEDAOBgNV\nBAcMB1NlYXR0bGUwIBcNMjIwNjA2MjExNzA1WhgPMjA2MjA2MDYyMjE3MDVaMIGa\nMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5j\nLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMzAxBgNVBAMMKkFt\nYXpvbiBSRFMgZXUtY2VudHJhbC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALTQt5eX\ng+VP3BjO9VBkWJhE0GfLrU/QIk32I6WvrnejayTrlup9H1z4QWlXF7GNJrqScRMY\nKhJHlcP05aPsx1lYco6pdFOf42ybXyWHHJdShj4A5glU81GTT+VrXGzHSarLmtua\neozkQgPpDsSlPt0RefyTyel7r3Cq+5K/4vyjCTcIqbfgaGwTU36ffjM1LaPCuE4O\nnINMeD6YuImt2hU/mFl20FZ+IZQUIFZZU7pxGLqTRz/PWcH8tDDxnkYg7tNuXOeN\nJbTpXrw7St50/E9ZQ0llGS+MxJD8jGRAa/oL4G/cwnV8P2OEPVVkgN9xDDQeieo0\n3xkzolkDkmeKOnUCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU\nbwu8635iQGQMRanekesORM8Hkm4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB\nCwUAA4IBAQAgN6LE9mUgjsj6xGCX1afYE69fnmCjjb0rC6eEe1mb/QZNcyw4XBIW\n6+zTXo4mjZ4ffoxb//R0/+vdTE7IvaLgfAZgFsLKJCtYDDstXZj8ujQnGR9Pig3R\nW+LpNacvOOSJSawNQq0Xrlcu55AU4buyD5VjcICnfF1dqBMnGTnh27m/scd/ZMx/\nkapHZ/fMoK2mAgSX/NvUKF3UkhT85vSSM2BTtET33DzCPDQTZQYxFBa4rFRmFi4c\nBLlmIReiCGyh3eJhuUUuYAbK6wLaRyPsyEcIOLMQmZe1+gAFm1+1/q5Ke9ugBmjf\nPbTWjsi/lfZ5CdVAhc5lmZj/l5aKqwaS\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAKKPTYKln9L4NTx9dpZGUjowCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyBldS13ZXN0LTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTIxMjI1NTIxWhgPMjEyMTA1MjEyMzU1MjFaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgZXUtd2VzdC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE/owTReDvaRqdmbtTzXbyRmEpKCETNj6O\nhZMKH0F8oU9Tmn8RU7kQQj6xUKEyjLPrFBN7c+26TvrVO1KmJAvbc8bVliiJZMbc\nC0yV5PtJTalvlMZA1NnciZuhxaxrzlK1o0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBT4i5HaoHtrs7Mi8auLhMbKM1XevDAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIxAK9A+8/lFdX4XJKgfP+ZLy5ySXC2E0Spoy12Gv2GdUEZ\np1G7c1KbWVlyb1d6subzkQIwKyH0Naf/3usWfftkmq8SzagicKz5cGcEUaULq4tO\nGzA/AMpr63IDBAqkZbMDTCmH\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrzCCAjWgAwIBAgIQTgIvwTDuNWQo0Oe1sOPQEzAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LW5vcnRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTI0MjEwNjM4WhgPMjEyMTA1MjQyMjA2MzhaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgZXUtbm9ydGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJuzXLU8q6WwSKXBvx8BbdIi3mPhb7Xo\nrNJBfuMW1XRj5BcKH1ZoGaDGw+BIIwyBJg8qNmCK8kqIb4cH8/Hbo3Y+xBJyoXq/\ncuk8aPrxiNoRsKWwiDHCsVxaK9L7GhHHAqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUYgcsdU4fm5xtuqLNppkfTHM2QMYwDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2gAMGUCMQDz/Rm89+QJOWJecYAmYcBWCcETASyoK1kbr4vw7Hsg\n7Ew3LpLeq4IRmTyuiTMl0gMCMAa0QSjfAnxBKGhAnYxcNJSntUyyMpaXzur43ec0\n3D8npJghwC4DuICtKEkQiI5cSg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAORIGqQXLTcbbYT2upIsSnQwDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBldS1zb3V0aC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMjA1MjMxODM0MjJaGA8yMTIyMDUyMzE5MzQyMlowgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBldS1zb3V0aC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPKukwsW2s/h\n1k+Hf65pOP0knVBnOnMQyT1mopp2XHGdXznj9xS49S30jYoUnWccyXgD983A1bzu\nw4fuJRHg4MFdz/NWTgXvy+zy0Roe83OPIJjUmXnnzwUHQcBa9vl6XUO65iQ3pbSi\nfQfNDFXD8cvuXbkezeADoy+iFAlzhXTzV9MD44GTuo9Z3qAXNGHQCrgRSCL7uRYt\nt1nfwboCbsVRnElopn2cTigyVXE62HzBUmAw1GTbAZeFAqCn5giBWYAfHwTUldRL\n6eEa6atfsS2oPNus4ZENa1iQxXq7ft+pMdNt0qKXTCZiiCZjmLkY0V9kWwHTRRF8\nr+75oSL//3di43QnuSCgjwMRIeWNtMud5jf3eQzSBci+9njb6DrrSUbx7blP0srg\n94/C/fYOp/0/EHH34w99Th14VVuGWgDgKahT9/COychLOubXUT6vD1As47S9KxTv\nyYleVKwJnF9cVjepODN72fNlEf74BwzgSIhUmhksmZSeJBabrjSUj3pdyo/iRZN/\nCiYz9YPQ29eXHPQjBZVIUqWbOVfdwsx0/Xu5T1e7yyXByQ3/oDulahtcoKPAFQ3J\nee6NJK655MdS7pM9hJnU2Rzu3qZ/GkM6YK7xTlMXVouPUZov/VbiaCKbqYDs8Dg+\nUKdeNXAT6+BMleGQzly1X7vjhgeA8ugVAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFJdaPwpCf78UolFTEn6GO85/QwUIMA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEAWkxHIT3mers5YnZRSVjmpxCLivGj1jMB9VYC\niKqTAeIvD0940L0YaZgivQll5pue8UUcQ6M2uCdVVAsNJdmQ5XHIYiGOknYPtxzO\naO+bnZp7VIZw/vJ49hvH6RreA2bbxYMZO/ossYdcWsWbOKHFrRmAw0AhtK/my51g\nobV7eQg+WmlE5Iqc75ycUsoZdc3NimkjBi7LQoNP1HMvlLHlF71UZhQDdq+/WdV7\n0zmg+epkki1LjgMmuPyb+xWuYkFKT1/faX+Xs62hIm5BY+aI4if4RuQ+J//0pOSs\nUajrjTo+jLGB8A96jAe8HaFQenbwMjlaHRDAF0wvbkYrMr5a6EbneAB37V05QD0Y\nRh4L4RrSs9DX2hbSmS6iLDuPEjanHKzglF5ePEvnItbRvGGkynqDVlwF+Bqfnw8l\n0i8Hr1f1/LP1c075UjkvsHlUnGgPbLqA0rDdcxF8Fdlv1BunUjX0pVlz10Ha5M6P\nAdyWUOneOfaA5G7jjv7i9qg3r99JNs1/Lmyg/tV++gnWTAsSPFSSEte81kmPhlK3\n2UtAO47nOdTtk+q4VIRAwY1MaOR7wTFZPfer1mWs4RhKNu/odp8urEY87iIzbMWT\nQYO/4I6BGj9rEWNGncvR5XTowwIthMCj2KWKM3Z/JxvjVFylSf+s+FFfO1bNIm6h\nu3UBpZI=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtDCCAjmgAwIBAgIQenQbcP/Zbj9JxvZ+jXbRnTAKBggqhkjOPQQDAzCBmTEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTIwMAYDVQQDDClBbWF6\nb24gUkRTIGV1LWNlbnRyYWwtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTAgFw0yMTA1MjEyMjMzMjRaGA8yMTIxMDUyMTIzMzMyNFowgZkxCzAJ\nBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMw\nEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEyMDAGA1UEAwwpQW1hem9u\nIFJEUyBldS1jZW50cmFsLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATlBHiEM9LoEb1Hdnd5j2VpCDOU\n5nGuFoBD8ROUCkFLFh5mHrHfPXwBc63heW9WrP3qnDEm+UZEUvW7ROvtWCTPZdLz\nZ4XaqgAlSqeE2VfUyZOZzBSgUUJk7OlznXfkCMOjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFDT/ThjQZl42Nv/4Z/7JYaPNMly2MA4GA1UdDwEB/wQEAwIB\nhjAKBggqhkjOPQQDAwNpADBmAjEAnZWmSgpEbmq+oiCa13l5aGmxSlfp9h12Orvw\nDq/W5cENJz891QD0ufOsic5oGq1JAjEAp5kSJj0MxJBTHQze1Aa9gG4sjHBxXn98\n4MP1VGsQuhfndNHQb4V0Au7OWnOeiobq\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIRAMgnyikWz46xY6yRgiYwZ3swDQYJKoZIhvcNAQELBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBldS13ZXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMDE2NDkxMloYDzIwNjEwNTIwMTc0OTEyWjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LXdlc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi8JYOc9cYSgZH\ngYPxLk6Xcc7HqzamvsnjYU98Dcb98y6iDqS46Ra2Ne02MITtU5MDL+qjxb8WGDZV\nRUA9ZS69tkTO3gldW8QdiSh3J6hVNJQW81F0M7ZWgV0gB3n76WCmfT4IWos0AXHM\n5v7M/M4tqVmCPViQnZb2kdVlM3/Xc9GInfSMCgNfwHPTXl+PXX+xCdNBePaP/A5C\n5S0oK3HiXaKGQAy3K7VnaQaYdiv32XUatlM4K2WS4AMKt+2cw3hTCjlmqKRHvYFQ\nveWCXAuc+U5PQDJ9SuxB1buFJZhT4VP3JagOuZbh5NWpIbOTxlAJOb5pGEDuJTKi\n1gQQQVEFAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNXm+N87\nOFxK9Af/bjSxDCiulGUzMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC\nAQEAkqIbkgZ45spvrgRQ6n9VKzDLvNg+WciLtmVrqyohwwJbj4pYvWwnKQCkVc7c\nhUOSBmlSBa5REAPbH5o8bdt00FPRrD6BdXLXhaECKgjsHe1WW08nsequRKD8xVmc\n8bEX6sw/utBeBV3mB+3Zv7ejYAbDFM4vnRsWtO+XqgReOgrl+cwdA6SNQT9oW3e5\nrSQ+VaXgJtl9NhkiIysq9BeYigxqS/A13pHQp0COMwS8nz+kBPHhJTsajHCDc8F4\nHfLi6cgs9G0gaRhT8FCH66OdGSqn196sE7Y3bPFFFs/3U+vxvmQgoZC6jegQXAg5\nPrxd+VNXtNI/azitTysQPumH7A==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEBTCCAu2gAwIBAgIRAO8bekN7rUReuNPG8pSTKtEwDQYJKoZIhvcNAQELBQAw\ngZoxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEzMDEGA1UEAwwq\nQW1hem9uIFJEUyBldS1jZW50cmFsLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYD\nVQQHDAdTZWF0dGxlMCAXDTIxMDUyMTIyMjM0N1oYDzIwNjEwNTIxMjMyMzQ3WjCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGV1LWNlbnRyYWwtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNV\nBAcMB1NlYXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCTTYds\nTray+Q9VA5j5jTh5TunHKFQzn68ZbOzdqaoi/Rq4ohfC0xdLrxCpfqn2TGDHN6Zi\n2qGK1tWJZEd1H0trhzd9d1CtGK+3cjabUmz/TjSW/qBar7e9MA67/iJ74Gc+Ww43\nA0xPNIWcL4aLrHaLm7sHgAO2UCKsrBUpxErOAACERScVYwPAfu79xeFcX7DmcX+e\nlIqY16pQAvK2RIzrekSYfLFxwFq2hnlgKHaVgZ3keKP+nmXcXmRSHQYUUr72oYNZ\nHcNYl2+gxCc9ccPEHM7xncVEKmb5cWEWvVoaysgQ+osi5f5aQdzgC2X2g2daKbyA\nXL/z5FM9GHpS5BJjAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFBDAiJ7Py9/A9etNa/ebOnx5l5MGMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0B\nAQsFAAOCAQEALMh/+81fFPdJV/RrJUeoUvFCGMp8iaANu97NpeJyKitNOv7RoeVP\nWjivS0KcCqZaDBs+p6IZ0sLI5ZH098LDzzytcfZg0PsGqUAb8a0MiU/LfgDCI9Ee\njsOiwaFB8k0tfUJK32NPcIoQYApTMT2e26lPzYORSkfuntme2PTHUnuC7ikiQrZk\nP+SZjWgRuMcp09JfRXyAYWIuix4Gy0eZ4rpRuaTK6mjAb1/LYoNK/iZ/gTeIqrNt\nl70OWRsWW8jEmSyNTIubGK/gGGyfuZGSyqoRX6OKHESkP6SSulbIZHyJ5VZkgtXo\n2XvyRyJ7w5pFyoofrL3Wv0UF8yt/GDszmg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/zCCA+egAwIBAgIRAMDk/F+rrhdn42SfE+ghPC8wDQYJKoZIhvcNAQEMBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBldS13ZXN0LTIgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMTIyNTEyMloYDzIxMjEwNTIxMjM1MTIyWjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LXdlc3QtMiBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2twMALVg9vRVu\nVNqsr6N8thmp3Dy8jEGTsm3GCQ+C5P2YcGlD/T/5icfWW84uF7Sx3ezcGlvsqFMf\nUkj9sQyqtz7qfFFugyy7pa/eH9f48kWFHLbQYm9GEgbYBIrWMp1cy3vyxuMCwQN4\nDCncqU+yNpy0CprQJEha3PzY+3yJOjDQtc3zr99lyECCFJTDUucxHzyQvX89eL74\nuh8la0lKH3v9wPpnEoftbrwmm5jHNFdzj7uXUHUJ41N7af7z7QUfghIRhlBDiKtx\n5lYZemPCXajTc3ryDKUZC/b+B6ViXZmAeMdmQoPE0jwyEp/uaUcdp+FlUQwCfsBk\nayPFEApTWgPiku2isjdeTVmEgL8bJTDUZ6FYFR7ZHcYAsDzcwHgIu3GGEMVRS3Uf\nILmioiyly9vcK4Sa01ondARmsi/I0s7pWpKflaekyv5boJKD/xqwz9lGejmJHelf\n8Od2TyqJScMpB7Q8c2ROxBwqwB72jMCEvYigB+Wnbb8RipliqNflIGx938FRCzKL\nUQUBmNAznR/yRRL0wHf9UAE/8v9a09uZABeiznzOFAl/frHpgdAbC00LkFlnwwgX\ng8YfEFlkp4fLx5B7LtoO6uVNFVimLxtwirpyKoj3G4M/kvSTux8bTw0heBCmWmKR\n57MS6k7ODzbv+Kpeht2hqVZCNFMxoQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBRuMnDhJjoj7DcKALj+HbxEqj3r6jAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQEMBQADggIBALSnXfx72C3ldhBP5kY4Mo2DDaGQ8FGpTOOiD95d\n0rf7I9LrsBGVqu/Nir+kqqP80PB70+Jy9fHFFigXwcPBX3MpKGxK8Cel7kVf8t1B\n4YD6A6bqlzP+OUL0uGWfZpdpDxwMDI2Flt4NEldHgXWPjvN1VblEKs0+kPnKowyg\njhRMgBbD/y+8yg0fIcjXUDTAw/+INcp21gWaMukKQr/8HswqC1yoqW9in2ijQkpK\n2RB9vcQ0/gXR0oJUbZQx0jn0OH8Agt7yfMAnJAdnHO4M3gjvlJLzIC5/4aGrRXZl\nJoZKfJ2fZRnrFMi0nhAYDeInoS+Rwx+QzaBk6fX5VPyCj8foZ0nmqvuYoydzD8W5\nmMlycgxFqS+DUmO+liWllQC4/MnVBlHGB1Cu3wTj5kgOvNs/k+FW3GXGzD3+rpv0\nQTLuwSbMr+MbEThxrSZRSXTCQzKfehyC+WZejgLb+8ylLJUA10e62o7H9PvCrwj+\nZDVmN7qj6amzvndCP98sZfX7CFZPLfcBd4wVIjHsFjSNEwWHOiFyLPPG7cdolGKA\nlOFvonvo4A1uRc13/zFeP0Xi5n5OZ2go8aOOeGYdI2vB2sgH9R2IASH/jHmr0gvY\n0dfBCcfXNgrS0toq0LX/y+5KkKOxh52vEYsJLdhqrveuZhQnsFEm/mFwjRXkyO7c\n2jpC\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGADCCA+igAwIBAgIQYe0HgSuFFP9ivYM2vONTrTANBgkqhkiG9w0BAQwFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGV1LXNvdXRoLTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE4MzMyMVoYDzIxMjEwNTE5MTkzMzIxWjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGV1LXNvdXRoLTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuO7QPKfPMTo2\nPOQWvzDLwi5f++X98hGjORI1zkN9kotCYH5pAzSBwBPoMNaIfedgmsIxGHj2fq5G\n4oXagNhNuGP79Zl6uKW5H7S74W7aWM8C0s8zuxMOI4GZy5h2IfQk3m/3AzZEX5w8\nUtNPkzo2feDVOkerHT+j+vjXgAxZ4wHnuMDcRT+K4r9EXlAH6X9b/RO0JlfEwmNz\nxlqqGxocq9qRC66N6W0HF2fNEAKP84n8H80xcZBOBthQORRi8HSmKcPdmrvwCuPz\nM+L+j18q6RAVaA0ABbD0jMWcTf0UvjUfBStn5mvu/wGlLjmmRkZsppUTRukfwqXK\nyltUsTq0tOIgCIpne5zA4v+MebbR5JBnsvd4gdh5BI01QH470yB7BkUefZ9bobOm\nOseAAVXcYFJKe4DAA6uLDrqOfFSxV+CzVvEp3IhLRaik4G5MwI/h2c/jEYDqkg2J\nHMflxc2gcSMdk7E5ByLz5f6QrFfSDFk02ZJTs4ssbbUEYohht9znPMQEaWVqATWE\n3n0VspqZyoBNkH/agE5GiGZ/k/QyeqzMNj+c9kr43Upu8DpLrz8v2uAp5xNj3YVg\nihaeD6GW8+PQoEjZ3mrCmH7uGLmHxh7Am59LfEyNrDn+8Rq95WvkmbyHSVxZnBmo\nh/6O3Jk+0/QhIXZ2hryMflPcYWeRGH0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQU2eFK7+R3x/me8roIBNxBrplkM6EwDgYDVR0PAQH/BAQDAgGG\nMA0GCSqGSIb3DQEBDAUAA4ICAQB5gWFe5s7ObQFj1fTO9L6gYgtFhnwdmxU0q8Ke\nHWCrdFmyXdC39qdAFOwM5/7fa9zKmiMrZvy9HNvCXEp4Z7z9mHhBmuqPZQx0qPgU\nuLdP8wGRuWryzp3g2oqkX9t31Z0JnkbIdp7kfRT6ME4I4VQsaY5Y3mh+hIHOUvcy\np+98i3UuEIcwJnVAV9wTTzrWusZl9iaQ1nSYbmkX9bBssJ2GmtW+T+VS/1hJ/Q4f\nAlE3dOQkLFoPPb3YRWBHr2n1LPIqMVwDNAuWavRA2dSfaLl+kzbn/dua7HTQU5D4\nb2Fu2vLhGirwRJe+V7zdef+tI7sngXqjgObyOeG5O2BY3s+um6D4fS0Th3QchMO7\n0+GwcIgSgcjIjlrt6/xJwJLE8cRkUUieYKq1C4McpZWTF30WnzOPUzRzLHkcNzNA\n0A7sKMK6QoYWo5Rmo8zewUxUqzc9oQSrYADP7PEwGncLtFe+dlRFx+PA1a+lcIgo\n1ZGfXigYtQ3VKkcknyYlJ+hN4eCMBHtD81xDy9iP2MLE41JhLnoB2rVEtewO5diF\n7o95Mwl84VMkLhhHPeGKSKzEbBtYYBifHNct+Bst8dru8UumTltgfX6urH3DN+/8\nJF+5h3U8oR2LL5y76cyeb+GWDXXy9zoQe2QvTyTy88LwZq1JzujYi2k8QiLLhFIf\nFEv9Bg==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICsDCCAjagAwIBAgIRAMgApnfGYPpK/fD0dbN2U4YwCgYIKoZIzj0EAwMwgZcx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwnQW1h\nem9uIFJEUyBldS1zb3V0aC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMCAXDTIxMDUxOTE4MzgxMVoYDzIxMjEwNTE5MTkzODExWjCBlzELMAkG\nA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzAR\nBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6b24g\nUkRTIGV1LXNvdXRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1NlYXR0\nbGUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQfEWl6d4qSuIoECdZPp+39LaKsfsX7\nTHs3/RrtT0+h/jl3bjZ7Qc68k16x+HGcHbaayHfqD0LPdzH/kKtNSfQKqemdxDQh\nZ4pwkixJu8T1VpXZ5zzCvBXCl75UqgEFS92jQjBAMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFFPrSNtWS5JU+Tvi6ABV231XbjbEMA4GA1UdDwEB/wQEAwIBhjAK\nBggqhkjOPQQDAwNoADBlAjEA+a7hF1IrNkBd2N/l7IQYAQw8chnRZDzh4wiGsZsC\n6A83maaKFWUKIb3qZYXFSi02AjAbp3wxH3myAmF8WekDHhKcC2zDvyOiKLkg9Y6v\nZVmyMR043dscQbcsVoacOYv198c=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICtDCCAjqgAwIBAgIRAPhVkIsQ51JFhD2kjFK5uAkwCgYIKoZIzj0EAwMwgZkx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEyMDAGA1UEAwwpQW1h\nem9uIFJEUyBldS1jZW50cmFsLTIgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjIwNjA2MjEyOTE3WhgPMjEyMjA2MDYyMjI5MTdaMIGZMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMjAwBgNVBAMMKUFtYXpv\nbiBSRFMgZXUtY2VudHJhbC0yIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEA5xnIEBtG5b2nmbj49UEwQza\nyX0844fXjccYzZ8xCDUe9dS2XOUi0aZlGblgSe/3lwjg8fMcKXLObGGQfgIx1+5h\nAIBjORis/dlyN5q/yH4U5sjS8tcR0GDGVHrsRUZCo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MB0GA1UdDgQWBBRK+lSGutXf4DkTjR3WNfv4+KeNFTAOBgNVHQ8BAf8EBAMC\nAYYwCgYIKoZIzj0EAwMDaAAwZQIxAJ4NxQ1Gerqr70ZrnUqc62Vl8NNqTzInamCG\nKce3FTsMWbS9qkgrjZkO9QqOcGIw/gIwSLrwUT+PKr9+H9eHyGvpq9/3AIYSnFkb\nCf3dyWPiLKoAtLFwjzB/CkJlsAS1c8dS\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/jCCA+agAwIBAgIQGZH12Q7x41qIh9vDu9ikTjANBgkqhkiG9w0BAQwFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIGV1LXdlc3QtMyBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTI1MjIyMjMzWhgPMjEyMTA1MjUyMzIyMzNaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgZXUtd2VzdC0zIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMqE47sHXWzdpuqj\nJHb+6jM9tDbQLDFnYjDWpq4VpLPZhb7xPNh9gnYYTPKG4avG421EblAHqzy9D2pN\n1z90yKbIfUb/Sy2MhQbmZomsObhONEra06fJ0Dydyjswf1iYRp2kwpx5AgkVoNo7\n3dlws73zFjD7ImKvUx2C7B75bhnw2pJWkFnGcswl8fZt9B5Yt95sFOKEz2MSJE91\nkZlHtya19OUxZ/cSGci4MlOySzqzbGwUqGxEIDlY8I39VMwXaYQ8uXUN4G780VcL\nu46FeyRGxZGz2n3hMc805WAA1V5uir87vuirTvoSVREET97HVRGVVNJJ/FM6GXr1\nVKtptybbo81nefYJg9KBysxAa2Ao2x2ry/2ZxwhS6VZ6v1+90bpZA1BIYFEDXXn/\ndW07HSCFnYSlgPtSc+Muh15mdr94LspYeDqNIierK9i4tB6ep7llJAnq0BU91fM2\nJPeqyoTtc3m06QhLf68ccSxO4l8Hmq9kLSHO7UXgtdjfRVaffngopTNk8qK7bIb7\nLrgkqhiQw/PRCZjUdyXL153/fUcsj9nFNe25gM4vcFYwH6c5trd2tUl31NTi1MfG\nMgp3d2dqxQBIYANkEjtBDMy3SqQLIo9EymqmVP8xx2A/gCBgaxvMAsI6FSWRoC7+\nhqJ8XH4mFnXSHKtYMe6WPY+/XZgtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFIkXqTnllT/VJnI2NqipA4XV8rh1MA4GA1UdDwEB/wQEAwIBhjAN\nBgkqhkiG9w0BAQwFAAOCAgEAKjSle8eenGeHgT8pltWCw/HzWyQruVKhfYIBfKJd\nMhV4EnH5BK7LxBIvpXGsFUrb0ThzSw0fn0zoA9jBs3i/Sj6KyeZ9qUF6b8ycDXd+\nwHonmJiQ7nk7UuMefaYAfs06vosgl1rI7eBHC0itexIQmKh0aX+821l4GEgEoSMf\nloMFTLXv2w36fPHHCsZ67ODldgcZbKNnpCTX0YrCwEYO3Pz/L398btiRcWGrewrK\njdxAAyietra8DRno1Zl87685tfqc6HsL9v8rVw58clAo9XAQvT+fmSOFw/PogRZ7\nOMHUat3gu/uQ1M5S64nkLLFsKu7jzudBuoNmcJysPlzIbqJ7vYc82OUGe9ucF3wi\n3tbKQ983hdJiTExVRBLX/fYjPsGbG3JtPTv89eg2tjWHlPhCDMMxyRKl6isu2RTq\n6VT489Z2zQrC33MYF8ZqO1NKjtyMAMIZwxVu4cGLkVsqFmEV2ScDHa5RadDyD3Ok\nm+mqybhvEVm5tPgY6p0ILPMN3yvJsMSPSvuBXhO/X5ppNnpw9gnxpwbjQKNhkFaG\nM5pkADZ14uRguOLM4VthSwUSEAr5VQYCFZhEwK+UOyJAGiB/nJz6IxL5XBNUXmRM\nHl8Xvz4riq48LMQbjcVQj0XvH941yPh+P8xOi00SGaQRaWp55Vyr4YKGbV0mEDz1\nr1o=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIF/zCCA+egAwIBAgIRAKwYju1QWxUZpn6D1gOtwgQwDQYJKoZIhvcNAQEMBQAw\ngZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn\nQW1hem9uIFJEUyBldS13ZXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyMDE2NTM1NFoYDzIxMjEwNTIwMTc1MzU0WjCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGV1LXdlc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCKdBP1U4lqWWkc\nCb25/BKRTsvNVnISiKocva8GAzJyKfcGRa85gmgu41U+Hz6+39K+XkRfM0YS4BvQ\nF1XxWT0bNyypuvwCvmYShSTjN1TY0ltncDddahTajE/4MdSOZb/c98u0yt03cH+G\nhVwRyT50h0v/UEol50VfwcVAEZEgcQQYhf1IFUFlIvKpmDOqLuFakOnc7c9akK+i\nivST+JO1tgowbnNkn2iLlSSgUWgb1gjaOsNfysagv1RXdlyPw3EyfwkFifAQvF2P\nQ0ayYZfYS640cccv7efM1MSVyFHR9PrrDsF/zr2S2sGPbeHr7R/HwLl+S5J/l9N9\ny0rk6IHAWV4dEkOvgpnuJKURwA48iu1Hhi9e4moNS6eqoK2KmY3VFpuiyWcA73nH\nGSmyaH+YuMrF7Fnuu7GEHZL/o6+F5cL3mj2SJJhL7sz0ryf5Cs5R4yN9BIEj/f49\nwh84pM6nexoI0Q4wiSFCxWiBpjSmOK6h7z6+2utaB5p20XDZHhxAlmlx4vMuWtjh\nXckgRFxc+ZpVMU3cAHUpVEoO49e/+qKEpPzp8Xg4cToKw2+AfTk3cmyyXQfGwXMQ\nZUHNZ3w9ILMWihGCM2aGUsLcGDRennvNmnmin/SENsOQ8Ku0/a3teEzwV9cmmdYz\n5iYs1YtgPvKFobY6+T2RXXh+A5kprwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/\nMB0GA1UdDgQWBBSyUrsQVnKmA8z6/2Ech0rCvqpNmTAOBgNVHQ8BAf8EBAMCAYYw\nDQYJKoZIhvcNAQEMBQADggIBAFlj3IFmgiFz5lvTzFTRizhVofhTJsGr14Yfkuc7\nUrXPuXOwJomd4uot2d/VIeGJpfnuS84qGdmQyGewGTJ9inatHsGZgHl9NHNWRwKZ\nlTKTbBiq7aqgtUSFa06v202wpzU+1kadxJJePrbABxiXVfOmIW/a1a4hPNcT3syH\nFIEg1+CGsp71UNjBuwg3JTKWna0sLSKcxLOSOvX1fzxK5djzVpEsvQMB4PSAzXca\nvENgg2ErTwgTA+4s6rRtiBF9pAusN1QVuBahYP3ftrY6f3ycS4K65GnqscyfvKt5\nYgjtEKO3ZeeX8NpubMbzC+0Z6tVKfPFk/9TXuJtwvVeqow0YMrLLyRiYvK7EzJ97\nrrkxoKnHYQSZ+rH2tZ5SE392/rfk1PJL0cdHnkpDkUDO+8cKsFjjYKAQSNC52sKX\n74AVh6wMwxYwVZZJf2/2XxkjMWWhKNejsZhUkTISSmiLs+qPe3L67IM7GyKm9/m6\nR3r8x6NGjhTsKH64iYJg7AeKeax4b2e4hBb6GXFftyOs7unpEOIVkJJgM6gh3mwn\nR7v4gwFbLKADKt1vHuerSZMiTuNTGhSfCeDM53XI/mjZl2HeuCKP1mCDLlaO+gZR\nQ/G+E0sBKgEX4xTkAc3kgkuQGfExdGtnN2U2ehF80lBHB8+2y2E+xWWXih/ZyIcW\nwOx+\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGBDCCA+ygAwIBAgIQM4C8g5iFRucSWdC8EdqHeDANBgkqhkiG9w0BAQwFADCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGV1LWNlbnRyYWwtMSBSb290IENBIFJTQTQwOTYgRzExEDAOBgNV\nBAcMB1NlYXR0bGUwIBcNMjEwNTIxMjIyODI2WhgPMjEyMTA1MjEyMzI4MjZaMIGa\nMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5j\nLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMzAxBgNVBAMMKkFt\nYXpvbiBSRFMgZXUtY2VudHJhbC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeTsD/u\n6saPiY4Sg0GlJlMXMBltnrcGAEkwq34OKQ0bCXqcoNJ2rcAMmuFC5x9Ho1Y3YzB7\nNO2GpIh6bZaO76GzSv4cnimcv9n/sQSYXsGbPD+bAtnN/RvNW1avt4C0q0/ghgF1\nVFS8JihIrgPYIArAmDtGNEdl5PUrdi9y6QGggbRfidMDdxlRdZBe1C18ZdgERSEv\nUgSTPRlVczONG5qcQkUGCH83MMqL5MKQiby/Br5ZyPq6rxQMwRnQ7tROuElzyYzL\n7d6kke+PNzG1mYy4cbYdjebwANCtZ2qYRSUHAQsOgybRcSoarv2xqcjO9cEsDiRU\nl97ToadGYa4VVERuTaNZxQwrld4mvzpyKuirqZltOqg0eoy8VUsaRPL3dc5aChR0\ndSrBgRYmSAClcR2/2ZCWpXemikwgt031Dsc0A/+TmVurrsqszwbr0e5xqMow9LzO\nMI/JtLd0VFtoOkL/7GG2tN8a+7gnLFxpv+AQ0DH5n4k/BY/IyS+H1erqSJhOTQ11\nvDOFTM5YplB9hWV9fp5PRs54ILlHTlZLpWGs3I2BrJwzRtg/rOlvsosqcge9ryai\nAKm2j+JBg5wJ19R8oxRy8cfrNTftZePpISaLTyV2B16w/GsSjqixjTQe9LRN2DHk\ncC+HPqYyzW2a3pUVyTGHhW6a7YsPBs9yzt6hAgMBAAGjQjBAMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFIqA8QkOs2cSirOpCuKuOh9VDfJfMA4GA1UdDwEB/wQE\nAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEAOUI90mEIsa+vNJku0iUwdBMnHiO4gm7E\n5JloP7JG0xUr7d0hypDorMM3zVDAL+aZRHsq8n934Cywj7qEp1304UF6538ByGdz\ntkfacJsUSYfdlNJE9KbA4T+U+7SNhj9jvePpVjdQbhgzxITE9f8CxY/eM40yluJJ\nPhbaWvOiRagzo74wttlcDerzLT6Y/JrVpWhnB7IY8HvzK+BwAdaCsBUPC3HF+kth\nCIqLq7J3YArTToejWZAp5OOI6DLPM1MEudyoejL02w0jq0CChmZ5i55ElEMnapRX\n7GQTARHmjgAOqa95FjbHEZzRPqZ72AtZAWKFcYFNk+grXSeWiDgPFOsq6mDg8DDB\n0kfbYwKLFFCC9YFmYzR2YrWw2NxAScccUc2chOWAoSNHiqBbHR8ofrlJSWrtmKqd\nYRCXzn8wqXnTS3NNHNccqJ6dN+iMr9NGnytw8zwwSchiev53Fpc1mGrJ7BKTWH0t\nZrA6m32wzpMymtKozlOPYoE5mtZEzrzHEXfa44Rns7XIHxVQSXVWyBHLtIsZOrvW\nU5F41rQaFEpEeUQ7sQvqUoISfTUVRNDn6GK6YaccEhCji14APLFIvhRQUDyYMIiM\n4vll0F/xgVRHTgDVQ8b8sxdhSYlqB4Wc2Ym41YRz+X2yPqk3typEZBpc4P5Tt1/N\n89cEIGdbjsA=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQYjbPSg4+RNRD3zNxO1fuKDANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGV1LW5vcnRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNDIwNTkyMVoYDzIwNjEwNTI0MjE1OTIxWjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGV1LW5vcnRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA179eQHxcV0YL\nXMkqEmhSBazHhnRVd8yICbMq82PitE3BZcnv1Z5Zs/oOgNmMkOKae4tCXO/41JCX\nwAgbs/eWWi+nnCfpQ/FqbLPg0h3dqzAgeszQyNl9IzTzX4Nd7JFRBVJXPIIKzlRf\n+GmFsAhi3rYgDgO27pz3ciahVSN+CuACIRYnA0K0s9lhYdddmrW/SYeWyoB7jPa2\nLmWpAs7bDOgS4LlP2H3eFepBPgNufRytSQUVA8f58lsE5w25vNiUSnrdlvDrIU5n\nQwzc7NIZCx4qJpRbSKWrUtbyJriWfAkGU7i0IoainHLn0eHp9bWkwb9D+C/tMk1X\nERZw2PDGkwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSFmR7s\ndAblusFN+xhf1ae0KUqhWTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAHsXOpjPMyH9lDhPM61zYdja1ebcMVgfUvsDvt+w0xKMKPhBzYDMs/cFOi1N\nQ8LV79VNNfI2NuvFmGygcvTIR+4h0pqqZ+wjWl3Kk5jVxCrbHg3RBX02QLumKd/i\nkwGcEtTUvTssn3SM8bgM0/1BDXgImZPC567ciLvWDo0s/Fe9dJJC3E0G7d/4s09n\nOMdextcxFuWBZrBm/KK3QF0ByA8MG3//VXaGO9OIeeOJCpWn1G1PjT1UklYhkg61\nEbsTiZVA2DLd1BGzfU4o4M5mo68l0msse/ndR1nEY6IywwpgIFue7+rEleDh6b9d\nPYkG1rHVw2I0XDG4o17aOn5E94I=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQC6W4HFghUkkgyQw14a6JljANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGV1LXNvdXRoLTIgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIyMDUyMzE4MTYzMloYDzIwNjIwNTIzMTkxNjMyWjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGV1LXNvdXRoLTIgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiM/t4FV2R9Nx\nUQG203UY83jInTa/6TMq0SPyg617FqYZxvz2kkx09x3dmxepUg9ttGMlPgjsRZM5\nLCFEi1FWk+hxHzt7vAdhHES5tdjwds3aIkgNEillmRDVrUsbrDwufLaa+MMDO2E1\nwQ/JYFXw16WBCCi2g1EtyQ2Xp+tZDX5IWOTnvhZpW8vVDptZ2AcJ5rMhfOYO3OsK\n5EF0GGA5ldzuezP+BkrBYGJ4wVKGxeaq9+5AT8iVZrypjwRkD7Y5CurywK3+aBwm\ns9Q5Nd8t45JCOUzYp92rFKsCriD86n/JnEvgDfdP6Hvtm0/DkwXK40Wz2q0Zrd0k\nmjP054NRPwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRR7yqd\nSfKcX2Q8GzhcVucReIpewTAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAEszBRDwXcZyNm07VcFwI1Im94oKwKccuKYeJEsizTBsVon8VpEiMwDs+yGu\n3p8kBhvkLwWybkD/vv6McH7T5b9jDX2DoOudqYnnaYeypsPH/00Vh3LvKagqzQza\norWLx+0tLo8xW4BtU+Wrn3JId8LvAhxyYXTn9bm+EwPcStp8xGLwu53OPD1RXYuy\nuu+3ps/2piP7GVfou7H6PRaqbFHNfiGg6Y+WA0HGHiJzn8uLmrRJ5YRdIOOG9/xi\nqTmAZloUNM7VNuurcMM2hWF494tQpsQ6ysg2qPjbBqzlGoOt3GfBTOZmqmwmqtam\nK7juWM/mdMQAJ3SMlE5wI8nVdx4=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIICrjCCAjSgAwIBAgIRAL9SdzVPcpq7GOpvdGoM80IwCgYIKoZIzj0EAwMwgZYx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEvMC0GA1UEAwwmQW1h\nem9uIFJEUyBldS13ZXN0LTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTIwMTY1ODA3WhgPMjEyMTA1MjAxNzU4MDdaMIGWMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExLzAtBgNVBAMMJkFtYXpvbiBS\nRFMgZXUtd2VzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQHDAdTZWF0dGxl\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEJWDgXebvwjR+Ce+hxKOLbnsfN5W5dOlP\nZn8kwWnD+SLkU81Eac/BDJsXGrMk6jFD1vg16PEkoSevsuYWlC8xR6FmT6F6pmeh\nfsMGOyJpfK4fyoEPhKeQoT23lFIc5Orjo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0G\nA1UdDgQWBBSVNAN1CHAz0eZ77qz2adeqjm31TzAOBgNVHQ8BAf8EBAMCAYYwCgYI\nKoZIzj0EAwMDaAAwZQIxAMlQeHbcjor49jqmcJ9gRLWdEWpXG8thIf6zfYQ/OEAg\nd7GDh4fR/OUk0VfjsBUN/gIwZB0bGdXvK38s6AAE/9IT051cz/wMe9GIrX1MnL1T\n1F5OqnXJdiwfZRRTHsRQ/L00\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGBDCCA+ygAwIBAgIQalr16vDfX4Rsr+gfQ4iVFDANBgkqhkiG9w0BAQwFADCB\nmjELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTMwMQYDVQQDDCpB\nbWF6b24gUkRTIGV1LWNlbnRyYWwtMiBSb290IENBIFJTQTQwOTYgRzExEDAOBgNV\nBAcMB1NlYXR0bGUwIBcNMjIwNjA2MjEyNTIzWhgPMjEyMjA2MDYyMjI1MjNaMIGa\nMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5j\nLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMzAxBgNVBAMMKkFt\nYXpvbiBSRFMgZXUtY2VudHJhbC0yIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANbHbFg7\n2VhZor1YNtez0VlNFaobS3PwOMcEn45BE3y7HONnElIIWXGQa0811M8V2FnyqnE8\nZ5aO1EuvijvWf/3D8DPZkdmAkIfh5hlZYY6Aatr65kEOckwIAm7ZZzrwFogYuaFC\nz/q0CW+8gxNK+98H/zeFx+IxiVoPPPX6UlrLvn+R6XYNERyHMLNgoZbbS5gGHk43\nKhENVv3AWCCcCc85O4rVd+DGb2vMVt6IzXdTQt6Kih28+RGph+WDwYmf+3txTYr8\nxMcCBt1+whyCPlMbC+Yn/ivtCO4LRf0MPZDRQrqTTrFf0h/V0BGEUmMGwuKgmzf5\nKl9ILdWv6S956ioZin2WgAxhcn7+z//sN++zkqLreSf90Vgv+A7xPRqIpTdJ/nWG\nJaAOUofBfsDsk4X4SUFE7xJa1FZAiu2lqB/E+y7jnWOvFRalzxVJ2Y+D/ZfUfrnK\n4pfKtyD1C6ni1celrZrAwLrJ3PoXPSg4aJKh8+CHex477SRsGj8KP19FG8r0P5AG\n8lS1V+enFCNvT5KqEBpDZ/Y5SQAhAYFUX+zH4/n4ql0l/emS+x23kSRrF+yMkB9q\nlhC/fMk6Pi3tICBjrDQ8XAxv56hfud9w6+/ljYB2uQ1iUYtlE3JdIiuE+3ws26O8\ni7PLMD9zQmo+sVi12pLHfBHQ6RRHtdVRXbXRAgMBAAGjQjBAMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFBFot08ipEL9ZUXCG4lagmF53C0/MA4GA1UdDwEB/wQE\nAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEAi2mcZi6cpaeqJ10xzMY0F3L2eOKYnlEQ\nh6QyhmNKCUF05q5u+cok5KtznzqMwy7TFOZtbVHl8uUX+xvgq/MQCxqFAnuStBXm\ngr2dg1h509ZwvTdk7TDxGdftvPCfnPNJBFbMSq4CZtNcOFBg9Rj8c3Yj+Qvwd56V\nzWs65BUkDNJrXmxdvhJZjUkMa9vi/oFN+M84xXeZTaC5YDYNZZeW9706QqDbAVES\n5ulvKLavB8waLI/lhRBK5/k0YykCMl0A8Togt8D1QsQ0eWWbIM8/HYJMPVFhJ8Wj\nvT1p/YVeDA3Bo1iKDOttgC5vILf5Rw1ZEeDxjf/r8A7VS13D3OLjBmc31zxRTs3n\nXvHKP9MieQHn9GE44tEYPjK3/yC6BDFzCBlvccYHmqGb+jvDEXEBXKzimdC9mcDl\nf4BBQWGJBH5jkbU9p6iti19L/zHhz7qU6UJWbxY40w92L9jS9Utljh4A0LCTjlnR\nNQUgjnGC6K+jkw8hj0LTC5Ip87oqoT9w7Av5EJ3VJ4hcnmNMXJJ1DkWYdnytcGpO\nDMVITQzzDZRwhbitCVPHagTN2wdi9TEuYE33J0VmFeTc6FSI50wP2aOAZ0Q1/8Aj\nbxeM5jS25eaHc2CQAuhrc/7GLnxOcPwdWQb2XWT8eHudhMnoRikVv/KSK3mf6om4\n1YfpdH2jp30=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID/jCCAuagAwIBAgIQTDc+UgTRtYO7ZGTQ8UWKDDANBgkqhkiG9w0BAQsFADCB\nlzELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdB\nbWF6b24gUkRTIGV1LXdlc3QtMiBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcM\nB1NlYXR0bGUwIBcNMjEwNTIxMjI0NjI0WhgPMjA2MTA1MjEyMzQ2MjRaMIGXMQsw\nCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjET\nMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpv\nbiBSRFMgZXUtd2VzdC0yIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwHU2Vh\ndHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM1oGtthQ1YiVIC2\ni4u4swMAGxAjc/BZp0yq0eP5ZQFaxnxs7zFAPabEWsrjeDzrRhdVO0h7zskrertP\ngblGhfD20JfjvCHdP1RUhy/nzG+T+hn6Takan/GIgs8grlBMRHMgBYHW7tklhjaH\n3F7LujhceAHhhgp6IOrpb6YTaTTaJbF3GTmkqxSJ3l1LtEoWz8Al/nL/Ftzxrtez\nVs6ebpvd7sw37sxmXBWX2OlvUrPCTmladw9OrllGXtCFw4YyLe3zozBlZ3cHzQ0q\nlINhpRcajTMfZrsiGCkQtoJT+AqVJPS2sHjqsEH8yiySW9Jbq4zyMbM1yqQ2vnnx\nMJgoYMcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUaQG88UnV\nJPTI+Pcti1P+q3H7pGYwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IB\nAQBAkgr75V0sEJimC6QRiTVWEuj2Khy7unjSfudbM6zumhXEU2/sUaVLiYy6cA/x\n3v0laDle6T07x9g64j5YastE/4jbzrGgIINFlY0JnaYmR3KZEjgi1s1fkRRf3llL\nPJm9u4Q1mbwAMQK/ZjLuuRcL3uRIHJek18nRqT5h43GB26qXyvJqeYYpYfIjL9+/\nYiZAbSRRZG+Li23cmPWrbA1CJY121SB+WybCbysbOXzhD3Sl2KSZRwSw4p2HrFtV\n1Prk0dOBtZxCG9luf87ultuDZpfS0w6oNBAMXocgswk24ylcADkkFxBWW+7BETn1\nEpK+t1Lm37mU4sxtuha00XAi\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIQcY44/8NUvBwr6LlHfRy7KjANBgkqhkiG9w0BAQsFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGV1LXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUxOTE4MjcxOFoYDzIwNjEwNTE5MTkyNzE4WjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGV1LXNvdXRoLTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0UaBeC+Usalu\nEtXnV7+PnH+gi7/71tI/jkKVGKuhD2JDVvqLVoqbMHRh3+wGMvqKCjbHPcC2XMWv\n566fpAj4UZ9CLB5fVzss+QVNTl+FH2XhEzigopp+872ajsNzcZxrMkifxGb4i0U+\nt0Zi+UrbL5tsfP2JonKR1crOrbS6/DlzHBjIiJazGOQcMsJjNuTOItLbMohLpraA\n/nApa3kOvI7Ufool1/34MG0+wL3UUA4YkZ6oBJVxjZvvs6tI7Lzz/SnhK2widGdc\nsnbLqBpHNIZQSorVoiwcFaRBGYX/uzYkiw44Yfa4cK2V/B5zgu1Fbr0gbI2am4eh\nyVYyg4jPawIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS9gM1m\nIIjyh9O5H/7Vj0R/akI7UzAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD\nggEBAF0Sm9HC2AUyedBVnwgkVXMibnYChOzz7T+0Y+fOLXYAEXex2s8oqGeZdGYX\nJHkjBn7JXu7LM+TpTbPbFFDoc1sgMguD/ls+8XsqAl1CssW+amryIL+jfcfbgQ+P\nICwEUD9hGdjBgJ5WcuS+qqxHsEIlFNci3HxcxfBa9VsWs5TjI7Vsl4meL5lf7ZyL\nwDV7dHRuU+cImqG1MIvPRIlvPnT7EghrCYi2VCPhP2pM/UvShuwVnkz4MJ29ebIk\nWR9kpblFxFdE92D5UUvMCjC2kmtgzNiErvTcwIvOO9YCbBHzRB1fFiWrXUHhJWq9\nIkaxR5icb/IpAV0A1lYZEWMVsfQ=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIGATCCA+mgAwIBAgIRAMa0TPL+QgbWfUPpYXQkf8wwDQYJKoZIhvcNAQEMBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBldS1ub3J0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MjQyMTAzMjBaGA8yMTIxMDUyNDIyMDMyMFowgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBldS1ub3J0aC0xIFJvb3QgQ0EgUlNBNDA5NiBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANhS9LJVJyWp\n6Rudy9t47y6kzvgnFYDrvJVtgEK0vFn5ifdlHE7xqMz4LZqWBFTnS+3oidwVRqo7\ntqsuuElsouStO8m315/YUzKZEPmkw8h5ufWt/lg3NTCoUZNkB4p4skr7TspyMUwE\nVdlKQuWTCOLtofwmWT+BnFF3To6xTh3XPlT3ssancw27Gob8kJegD7E0TSMVsecP\nB8je65+3b8CGwcD3QB3kCTGLy87tXuS2+07pncHvjMRMBdDQQQqhXWsRSeUNg0IP\nxdHTWcuwMldYPWK5zus9M4dCNBDlmZjKdcZZVUOKeBBAm7Uo7CbJCk8r/Fvfr6mw\nnXXDtuWhqn/WhJiI/y0QU27M+Hy5CQMxBwFsfAjJkByBpdXmyYxUgTmMpLf43p7H\noWfH1xN0cT0OQEVmAQjMakauow4AQLNkilV+X6uAAu3STQVFRSrpvMen9Xx3EPC3\nG9flHueTa71bU65Xe8ZmEmFhGeFYHY0GrNPAFhq9RThPRY0IPyCZe0Th8uGejkek\njQjm0FHPOqs5jc8CD8eJs4jSEFt9lasFLVDcAhx0FkacLKQjGHvKAnnbRwhN/dF3\nxt4oL8Z4JGPCLau056gKnYaEyviN7PgO+IFIVOVIdKEBu2ASGE8/+QJB5bcHefNj\n04hEkDW0UYJbSfPpVbGAR0gFI/QpycKnAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wHQYDVR0OBBYEFFMXvvjoaGGUcul8GA3FT05DLbZcMA4GA1UdDwEB/wQEAwIB\nhjANBgkqhkiG9w0BAQwFAAOCAgEAQLwFhd2JKn4K/6salLyIA4mP58qbA/9BTB/r\nD9l0bEwDlVPSdY7R3gZCe6v7SWLfA9RjE5tdWDrQMi5IU6W2OVrVsZS/yGJfwnwe\na/9iUAYprA5QYKDg37h12XhVsDKlYCekHdC+qa5WwB1SL3YUprDLPWeaIQdg+Uh2\n+LxvpZGoxoEbca0fc7flwq9ke/3sXt/3V4wJDyY6AL2YNdjFzC+FtYjHHx8rYxHs\naesP7yunuN17KcfOZBBnSFRrx96k+Xm95VReTEEpwiBqAECqEpMbd+R0mFAayMb1\ncE77GaK5yeC2f67NLYGpkpIoPbO9p9rzoXLE5GpSizMjimnz6QCbXPFAFBDfSzim\nu6azp40kEUO6kWd7rBhqRwLc43D3TtNWQYxMve5mTRG4Od+eMKwYZmQz89BQCeqm\naZiJP9y9uwJw4p/A5V3lYHTDQqzmbOyhGUk6OdpdE8HXs/1ep1xTT20QDYOx3Ekt\nr4mmNYfH/8v9nHNRlYJOqFhmoh1i85IUl5IHhg6OT5ZTTwsGTSxvgQQXrmmHVrgZ\nrZIqyBKllCgVeB9sMEsntn4bGLig7CS/N1y2mYdW/745yCLZv2gj0NXhPqgEIdVV\nf9DhFD4ohE1C63XP0kOQee+LYg/MY5vH8swpCSWxQgX5icv5jVDz8YTdCKgUc5u8\nrM2p0kk=\n-----END CERTIFICATE-----\n" + ]; + } +}); + +// node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/profiles/ca/proxies.js +var require_proxies = __commonJS({ + "node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/profiles/ca/proxies.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.proxies = void 0; + exports2.proxies = [ + "-----BEGIN CERTIFICATE-----\nMIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\nca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\nIFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\nVOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\njgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\nA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\nU5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\nN+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\no/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\nrqXRfboQnoZsG4q5WTP468SQvvG5\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK\ngXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ\nW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg\n1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K\n8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r\n2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me\nz/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR\n8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj\nmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz\n7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6\n+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI\n0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB\nAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm\nUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2\nLIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY\n+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS\nk5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl\n7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm\nbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl\nurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+\nfUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63\nn749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE\n76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H\n9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT\n4PsJYGw=\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\nMQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\nUm9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\nA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\nQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\nui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\nQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\nttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\nBqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\nYyRIHN8wfdVoOw==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5\nMQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\nUm9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\nA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\nQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi\n9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk\nM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB\n/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB\nMAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw\nCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW\n1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n-----END CERTIFICATE-----\n", + "-----BEGIN CERTIFICATE-----\nMIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx\nEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT\nHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs\nZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5\nMDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD\nVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy\nZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy\ndmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p\nOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2\n8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K\nTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe\nhRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk\n6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw\nDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q\nAdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI\nbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB\nve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z\nqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd\niEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn\n0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN\nsSi6\n-----END CERTIFICATE-----\n" + ]; + } +}); + +// node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/.pnpm/aws-ssl-profiles@1.1.2/node_modules/aws-ssl-profiles/lib/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var defaults_js_1 = require_defaults(); + var proxies_js_1 = require_proxies(); + var proxyBundle = { + ca: proxies_js_1.proxies + }; + var profiles = { + ca: [...defaults_js_1.defaults, ...proxies_js_1.proxies] + }; + module2.exports = profiles; + module2.exports.proxyBundle = proxyBundle; + module2.exports.default = profiles; + } +}); + +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/ssl_profiles.js +var require_ssl_profiles = __commonJS({ + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/constants/ssl_profiles.js"(exports2) { + "use strict"; + var awsCaBundle = require_lib3(); exports2["Amazon RDS"] = { - ca: [ - "-----BEGIN CERTIFICATE-----\nMIID9DCCAtygAwIBAgIBQjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUwOTExMzFaFw0y\nMDAzMDUwOTExMzFaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEbMBkGA1UEAwwSQW1hem9uIFJE\nUyBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuD8nrZ8V\nu+VA8yVlUipCZIKPTDcOILYpUe8Tct0YeQQr0uyl018StdBsa3CjBgvwpDRq1HgF\nJi2N3+39+shCNspQeE6aYU+BHXhKhIIStt3r7gl/4NqYiDDMWKHxHq0nsGDFfArf\nAOcjZdJagOMqb3fF46flc8k2E7THTm9Sz4L7RY1WdABMuurpICLFE3oHcGdapOb9\nT53pQR+xpHW9atkcf3pf7gbO0rlKVSIoUenBlZipUlp1VZl/OD/E+TtRhDDNdI2J\nP/DSMM3aEsq6ZQkfbz/Ilml+Lx3tJYXUDmp+ZjzMPLk/+3beT8EhrwtcG3VPpvwp\nBIOqsqVVTvw/CwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw\nAwEB/zAdBgNVHQ4EFgQUTgLurD72FchM7Sz1BcGPnIQISYMwHwYDVR0jBBgwFoAU\nTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQEFBQADggEBAHZcgIio8pAm\nMjHD5cl6wKjXxScXKtXygWH2BoDMYBJF9yfyKO2jEFxYKbHePpnXB1R04zJSWAw5\n2EUuDI1pSBh9BA82/5PkuNlNeSTB3dXDD2PEPdzVWbSKvUB8ZdooV+2vngL0Zm4r\n47QPyd18yPHrRIbtBtHR/6CwKevLZ394zgExqhnekYKIqqEX41xsUV0Gm6x4vpjf\n2u6O/+YE2U+qyyxHE5Wd5oqde0oo9UUpFETJPVb6Q2cEeQib8PBAyi0i6KnF+kIV\nA9dY7IHSubtCK/i8wxMVqfd5GtbA8mmpeJFwnDvm9rBEsHybl08qlax9syEwsUYr\n/40NawZfTUU=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIBRDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMDZaFw0y\nMDAzMDUyMjAzMDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\nUyBhcC1ub3J0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAMmM2B4PfTXCZjbZMWiDPyxvk/eeNwIRJAhfzesiGUiLozX6CRy3rwC1ZOPV\nAcQf0LB+O8wY88C/cV+d4Q2nBDmnk+Vx7o2MyMh343r5rR3Na+4izd89tkQVt0WW\nvO21KRH5i8EuBjinboOwAwu6IJ+HyiQiM0VjgjrmEr/YzFPL8MgHD/YUHehqjACn\nC0+B7/gu7W4qJzBL2DOf7ub2qszGtwPE+qQzkCRDwE1A4AJmVE++/FLH2Zx78Egg\nfV1sUxPtYgjGH76VyyO6GNKM6rAUMD/q5mnPASQVIXgKbupr618bnH+SWHFjBqZq\nHvDGPMtiiWII41EmGUypyt5AbysCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\nA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIiKM0Q6n1K4EmLxs3ZXxINbwEwR\nMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\nA4IBAQBezGbE9Rw/k2e25iGjj5n8r+M3dlye8ORfCE/dijHtxqAKasXHgKX8I9Tw\nJkBiGWiuzqn7gO5MJ0nMMro1+gq29qjZnYX1pDHPgsRjUX8R+juRhgJ3JSHijRbf\n4qNJrnwga7pj94MhcLq9u0f6dxH6dXbyMv21T4TZMTmcFduf1KgaiVx1PEyJjC6r\nM+Ru+A0eM+jJ7uCjUoZKcpX8xkj4nmSnz9NMPog3wdOSB9cAW7XIc5mHa656wr7I\nWJxVcYNHTXIjCcng2zMKd1aCcl2KSFfy56sRfT7J5Wp69QSr+jq8KM55gw8uqAwi\nVPrXn2899T1rcTtFYFP16WXjGuc0\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIBRTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMTlaFw0y\nMDAzMDUyMjAzMTlaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\nUyBhcC1zb3V0aGVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBANaXElmSEYt/UtxHFsARFhSUahTf1KNJzR0Dmay6hqOXQuRVbKRwPd19u5vx\nDdF1sLT7D69IK3VDnUiQScaCv2Dpu9foZt+rLx+cpx1qiQd1UHrvqq8xPzQOqCdC\nRFStq6yVYZ69yfpfoI67AjclMOjl2Vph3ftVnqP0IgVKZdzeC7fd+umGgR9xY0Qr\nUbhd/lWdsbNvzK3f1TPWcfIKQnpvSt85PIEDJir6/nuJUKMtmJRwTymJf0i+JZ4x\n7dJa341p2kHKcHMgOPW7nJQklGBA70ytjUV6/qebS3yIugr/28mwReflg3TJzVDl\nEOvi6pqbqNbkMuEwGDCmEQIVqgkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\nA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAu93/4k5xbWOsgdCdn+/KdiRuit\nMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\nA4IBAQBlcjSyscpPjf5+MgzMuAsCxByqUt+WFspwcMCpwdaBeHOPSQrXNqX2Sk6P\nkth6oCivA64trWo8tFMvPYlUA1FYVD5WpN0kCK+P5pD4KHlaDsXhuhClJzp/OP8t\npOyUr5109RHLxqoKB5J5m1XA7rgcFjnMxwBSWFe3/4uMk/+4T53YfCVXuc6QV3i7\nI/2LAJwFf//pTtt6fZenYfCsahnr2nvrNRNyAxcfvGZ/4Opn/mJtR6R/AjvQZHiR\nbkRNKF2GW0ueK5W4FkZVZVhhX9xh1Aj2Ollb+lbOqADaVj+AT3PoJPZ3MPQHKCXm\nxwG0LOLlRr/TfD6li1AfOVTAJXv9\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIBRjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMjRaFw0y\nMDAzMDUyMjAzMjRaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\nUyBhcC1zb3V0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAJqBAJutz69hFOh3BtLHZTbwE8eejGGKayn9hu98YMDPzWzGXWCmW+ZYWELA\ncY3cNWNF8K4FqKXFr2ssorBYim1UtYFX8yhydT2hMD5zgQ2sCGUpuidijuPA6zaq\nZ3tdhVR94f0q8mpwpv2zqR9PcqaGDx2VR1x773FupRPRo7mEW1vC3IptHCQlP/zE\n7jQiLl28bDIH2567xg7e7E9WnZToRnhlYdTaDaJsHTzi5mwILi4cihSok7Shv/ME\nhnukvxeSPUpaVtFaBhfBqq055ePq9I+Ns4KGreTKMhU0O9fkkaBaBmPaFgmeX/XO\nn2AX7gMouo3mtv34iDTZ0h6YCGkCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\nA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFIlQnY0KHYWn1jYumSdJYfwj/Nfw\nMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\nA4IBAQA0wVU6/l41cTzHc4azc4CDYY2Wd90DFWiH9C/mw0SgToYfCJ/5Cfi0NT/Y\nPRnk3GchychCJgoPA/k9d0//IhYEAIiIDjyFVgjbTkKV3sh4RbdldKVOUB9kumz/\nZpShplsGt3z4QQiVnKfrAgqxWDjR0I0pQKkxXa6Sjkicos9LQxVtJ0XA4ieG1E7z\nzJr+6t80wmzxvkInSaWP3xNJK9azVRTrgQZQlvkbpDbExl4mNTG66VD3bAp6t3Wa\nB49//uDdfZmPkqqbX+hsxp160OH0rxJppwO3Bh869PkDnaPEd/Pxw7PawC+li0gi\nNRV8iCEx85aFxcyOhqn0WZOasxee\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIBRzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzFaFw0y\nMDAzMDUyMjAzMzFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\nUyBldS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\nAQDFtP2dhSLuaPOI4ZrrPWsK4OY9ocQBp3yApH1KJYmI9wpQKZG/KCH2E6Oo7JAw\nQORU519r033T+FO2Z7pFPlmz1yrxGXyHpJs8ySx3Yo5S8ncDCdZJCLmtPiq/hahg\n5/0ffexMFUCQaYicFZsrJ/cStdxUV+tSw2JQLD7UxS9J97LQWUPyyG+ZrjYVTVq+\nzudnFmNSe4QoecXMhAFTGJFQXxP7nhSL9Ao5FGgdXy7/JWeWdQIAj8ku6cBDKPa6\nY6kP+ak+In+Lye8z9qsCD/afUozfWjPR2aA4JoIZVF8dNRShIMo8l0XfgfM2q0+n\nApZWZ+BjhIO5XuoUgHS3D2YFAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\nHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRm4GsWIA/M6q+tK8WGHWDGh2gcyTAf\nBgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOC\nAQEAHpMmeVQNqcxgfQdbDIi5UIy+E7zZykmtAygN1XQrvga9nXTis4kOTN6g5/+g\nHCx7jIXeNJzAbvg8XFqBN84Quqgpl/tQkbpco9Jh1HDs558D5NnZQxNqH5qXQ3Mm\nuPgCw0pYcPOa7bhs07i+MdVwPBsX27CFDtsgAIru8HvKxY1oTZrWnyIRo93tt/pk\nWuItVMVHjaQZVfTCow0aDUbte6Vlw82KjUFq+n2NMSCJDiDKsDDHT6BJc4AJHIq3\n/4Z52MSC9KMr0yAaaoWfW/yMEj9LliQauAgwVjArF4q78rxpfKTG9Rfd8U1BZANP\n7FrFMN0ThjfA1IvmOYcgskY5bQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBSDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzMzVaFw0y\nMDAzMDUyMjAzMzVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyBldS13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx\nPdbqQ0HKRj79Pmocxvjc+P6i4Ux24kgFIl+ckiir1vzkmesc3a58gjrMlCksEObt\nYihs5IhzEq1ePT0gbfS9GYFp34Uj/MtPwlrfCBWG4d2TcrsKRHr1/EXUYhWqmdrb\nRhX8XqoRhVkbF/auzFSBhTzcGGvZpQ2KIaxRcQfcXlMVhj/pxxAjh8U4F350Fb0h\nnX1jw4/KvEreBL0Xb2lnlGTkwVxaKGSgXEnOgIyOFdOQc61vdome0+eeZsP4jqeR\nTGYJA9izJsRbe2YJxHuazD+548hsPlM3vFzKKEVURCha466rAaYAHy3rKur3HYQx\nYt+SoKcEz9PXuSGj96ejAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTebg//h2oeXbZjQ4uuoiuLYzuiPDAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\nTikPaGeZasTPw+4RBemlsyPAjtFFQLo7ddaFdORLgdEysVf8aBqndvbA6MT/v4lj\nGtEtUdF59ZcbWOrVm+fBZ2h/jYJ59dYF/xzb09nyRbdMSzB9+mkSsnOMqluq5y8o\nDY/PfP2vGhEg/2ZncRC7nlQU1Dm8F4lFWEiQ2fi7O1cW852Vmbq61RIfcYsH/9Ma\nkpgk10VZ75b8m3UhmpZ/2uRY+JEHImH5WpcTJ7wNiPNJsciZMznGtrgOnPzYco8L\ncDleOASIZifNMQi9PKOJKvi0ITz0B/imr8KBsW0YjZVJ54HMa7W1lwugSM7aMAs+\nE3Sd5lS+SHwWaOCHwhOEVA==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBSTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDBaFw0y\nMDAzMDUyMjAzNDBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyBzYS1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCU\nX4OBnQ5xA6TLJAiFEI6l7bUWjoVJBa/VbMdCCSs2i2dOKmqUaXu2ix2zcPILj3lZ\nGMk3d/2zvTK/cKhcFrewHUBamTeVHdEmynhMQamqNmkM4ptYzFcvEUw1TGxHT4pV\nQ6gSN7+/AJewQvyHexHo8D0+LDN0/Wa9mRm4ixCYH2CyYYJNKaZt9+EZfNu+PPS4\n8iB0TWH0DgQkbWMBfCRgolLLitAZklZ4dvdlEBS7evN1/7ttBxUK6SvkeeSx3zBl\nww3BlXqc3bvTQL0A+RRysaVyFbvtp9domFaDKZCpMmDFAN/ntx215xmQdrSt+K3F\ncXdGQYHx5q410CAclGnbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT6iVWnm/uakS+tEX2mzIfw+8JL0zAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\nFmDD+QuDklXn2EgShwQxV13+txPRuVdOSrutHhoCgMwFWCMtPPtBAKs6KPY7Guvw\nDpJoZSehDiOfsgMirjOWjvfkeWSNvKfjWTVneX7pZD9W5WPnsDBvTbCGezm+v87z\nb+ZM2ZMo98m/wkMcIEAgdSKilR2fuw8rLkAjhYFfs0A7tDgZ9noKwgHvoE4dsrI0\nKZYco6DlP/brASfHTPa2puBLN9McK3v+h0JaSqqm5Ro2Bh56tZkQh8AWy/miuDuK\n3+hNEVdxosxlkM1TPa1DGj0EzzK0yoeerXuH2HX7LlCrrxf6/wdKnjR12PMrLQ4A\npCqkcWw894z6bV9MAvKe6A==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBQzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMTU0MDRaFw0y\nMDAzMDUyMTU0MDRaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyB1cy1lYXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDI\nUIuwh8NusKHk1SqPXcP7OqxY3S/M2ZyQWD3w7Bfihpyyy/fc1w0/suIpX3kbMhAV\n2ESwged2/2zSx4pVnjp/493r4luhSqQYzru78TuPt9bhJIJ51WXunZW2SWkisSaf\nUSYUzVN9ezR/bjXTumSUQaLIouJt3OHLX49s+3NAbUyOI8EdvgBQWD68H1epsC0n\nCI5s+pIktyOZ59c4DCDLQcXErQ+tNbDC++oct1ANd/q8p9URonYwGCGOBy7sbCYq\n9eVHh1Iy2M+SNXddVOGw5EuruvHoCIQyOz5Lz4zSuZA9dRbrfztNOpezCNYu6NKM\nn+hzcvdiyxv77uNm8EaxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQSQG3TmMe6Sa3KufaPBa72v4QFDzAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\nL/mOZfB3187xTmjOHMqN2G2oSKHBKiQLM9uv8+97qT+XR+TVsBT6b3yoPpMAGhHA\nPc7nxAF5gPpuzatx0OTLPcmYucFmfqT/1qA5WlgCnMNtczyNMH97lKFTNV7Njtek\njWEzAEQSyEWrkNpNlC4j6kMYyPzVXQeXUeZTgJ9FNnVZqmvfjip2N22tawMjrCn5\n7KN/zN65EwY2oO9XsaTwwWmBu3NrDdMbzJnbxoWcFWj4RBwanR1XjQOVNhDwmCOl\n/1Et13b8CPyj69PC8BOVU6cfTSx8WUVy0qvYOKHNY9Bqa5BDnIL3IVmUkeTlM1mt\nenRpyBj+Bk9rh/ICdiRKmA==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBSjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNDVaFw0y\nMDAzMDUyMjAzNDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyB1cy13ZXN0LTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDE\nDhw+uw/ycaiIhhyu2pXFRimq0DlB8cNtIe8hdqndH8TV/TFrljNgR8QdzOgZtZ9C\nzzQ2GRpInN/qJF6slEd6wO+6TaDBQkPY+07TXNt52POFUhdVkhJXHpE2BS7Xn6J7\n7RFAOeG1IZmc2DDt+sR1BgXzUqHslQGfFYNS0/MBO4P+ya6W7IhruB1qfa4HiYQS\ndbe4MvGWnv0UzwAqdR7OF8+8/5c58YXZIXCO9riYF2ql6KNSL5cyDPcYK5VK0+Q9\nVI6vuJHSMYcF7wLePw8jtBktqAFE/wbdZiIHhZvNyiNWPPNTGUmQbaJ+TzQEHDs5\n8en+/W7JKnPyBOkxxENbAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBS0nw/tFR9bCjgqWTPJkyy4oOD8bzAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\nCXGAY3feAak6lHdqj6+YWjy6yyUnLK37bRxZDsyDVXrPRQaXRzPTzx79jvDwEb/H\nQ/bdQ7zQRWqJcbivQlwhuPJ4kWPUZgSt3JUUuqkMsDzsvj/bwIjlrEFDOdHGh0mi\neVIngFEjUXjMh+5aHPEF9BlQnB8LfVtKj18e15UDTXFa+xJPFxUR7wDzCfo4WI1m\nsUMG4q1FkGAZgsoyFPZfF8IVvgCuGdR8z30VWKklFxttlK0eGLlPAyIO0CQxPQlo\nsaNJrHf4tLOgZIWk+LpDhNd9Et5EzvJ3aURUsKY4pISPPF5WdvM9OE59bERwUErd\nnuOuQWQeeadMceZnauRzJQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBSzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTAyMDUyMjAzNTBaFw0y\nMDAzMDUyMjAzNTBaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyB1cy13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM\nH58SR48U6jyERC1vYTnub34smf5EQVXyzaTmspWGWGzT31NLNZGSDFaa7yef9kdO\nmzJsgebR5tXq6LdwlIoWkKYQ7ycUaadtVKVYdI40QcI3cHn0qLFlg2iBXmWp/B+i\nZ34VuVlCh31Uj5WmhaBoz8t/GRqh1V/aCsf3Wc6jCezH3QfuCjBpzxdOOHN6Ie2v\nxX09O5qmZTvMoRBAvPkxdaPg/Mi7fxueWTbEVk78kuFbF1jHYw8U1BLILIAhcqlq\nx4u8nl73t3O3l/soNUcIwUDK0/S+Kfqhwn9yQyPlhb4Wy3pfnZLJdkyHldktnQav\n9TB9u7KH5Lk0aAYslMLxAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT8roM4lRnlFHWMPWRz0zkwFZog1jAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQUFAAOCAQEA\nJwrxwgwmPtcdaU7O7WDdYa4hprpOMamI49NDzmE0s10oGrqmLwZygcWU0jT+fJ+Y\npJe1w0CVfKaeLYNsOBVW3X4ZPmffYfWBheZiaiEflq/P6t7/Eg81gaKYnZ/x1Dfa\nsUYkzPvCkXe9wEz5zdUTOCptDt89rBR9CstL9vE7WYUgiVVmBJffWbHQLtfjv6OF\nNMb0QME981kGRzc2WhgP71YS2hHd1kXtsoYP1yTu4vThSKsoN4bkiHsaC1cRkLoy\n0fFA4wpB3WloMEvCDaUvvH1LZlBXTNlwi9KtcwD4tDxkkBt4tQczKLGpQ/nF/W9n\n8YDWk3IIc1sd0bkZqoau2Q==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIBTDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNTExMDYwMDA1NDZaFw0y\nMDAzMDUwMDA1NDZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\nUyBhcC1ub3J0aGVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAKSwd+RVUzTRH0FgnbwoTK8TMm/zMT4+2BvALpAUe6YXbkisg2goycWuuWLg\njOpFBB3GtyvXZnkqi7MkDWUmj1a2kf8l2oLyoaZ+Hm9x/sV+IJzOqPvj1XVUGjP6\nyYYnPJmUYqvZeI7fEkIGdFkP2m4/sgsSGsFvpD9FK1bL1Kx2UDpYX0kHTtr18Zm/\n1oN6irqWALSmXMDydb8hE0FB2A1VFyeKE6PnoDj/Y5cPHwPPdEi6/3gkDkSaOG30\nrWeQfL3pOcKqzbHaWTxMphd0DSL/quZ64Nr+Ly65Q5PRcTrtr55ekOUziuqXwk+o\n9QpACMwcJ7ROqOznZTqTzSFVXFECAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\nA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFM6Nox/QWbhzWVvzoJ/y0kGpNPK+\nMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\nA4IBAQCTkWBqNvyRf3Y/W21DwFx3oT/AIWrHt0BdGZO34tavummXemTH9LZ/mqv9\naljt6ZuDtf5DEQjdsAwXMsyo03ffnP7doWm8iaF1+Mui77ot0TmTsP/deyGwukvJ\ntkxX8bZjDh+EaNauWKr+CYnniNxCQLfFtXYJsfOdVBzK3xNL+Z3ucOQRhr2helWc\nCDQgwfhP1+3pRVKqHvWCPC4R3fT7RZHuRmZ38kndv476GxRntejh+ePffif78bFI\n3rIZCPBGobrrUMycafSbyXteoGca/kA+/IqrAPlk0pWQ4aEL0yTWN2h2dnjoD7oX\nbyIuL/g9AGRh97+ssn7D6bDRPTbW\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/TCCAuWgAwIBAgIBTTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA1MDMyMTI5MjJaFw0y\nMDAzMDUyMTI5MjJaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UEAwwYQW1hem9uIFJE\nUyBhcC1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n06eWGLE0TeqL9kyWOLkS8q0fXO97z+xyBV3DKSB2lg2GkgBz3B98MkmkeB0SZy3G\nCe4uCpCPbFKiFEdiUclOlhZsrBuCeaimxLM3Ig2wuenElO/7TqgaYHYUbT3d+VQW\nGUbLn5GRZJZe1OAClYdOWm7A1CKpuo+cVV1vxbY2nGUQSJPpVn2sT9gnwvjdE60U\nJGYU/RLCTm8zmZBvlWaNIeKDnreIc4rKn6gUnJ2cQn1ryCVleEeyc3xjYDSrjgdn\nFLYGcp9mphqVT0byeQMOk0c7RHpxrCSA0V5V6/CreFV2LteK50qcDQzDSM18vWP/\np09FoN8O7QrtOeZJzH/lmwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\nAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU2i83QHuEl/d0keXF+69HNJph7cMwHwYD\nVR0jBBgwFoAUTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQELBQADggEB\nACqnH2VjApoDqoSQOky52QBwsGaj+xWYHW5Gm7EvCqvQuhWMkeBuD6YJmMvNyA9G\nI2lh6/o+sUk/RIsbYbxPRdhNPTOgDR9zsNRw6qxaHztq/CEC+mxDCLa3O1hHBaDV\nBmB3nCZb93BvO0EQSEk7aytKq/f+sjyxqOcs385gintdHGU9uM7gTZHnU9vByJsm\n/TL07Miq67X0NlhIoo3jAk+xHaeKJdxdKATQp0448P5cY20q4b8aMk1twcNaMvCP\ndG4M5doaoUA8OQ/0ukLLae/LBxLeTw04q1/a2SyFaVUX2Twbb1S3xVWwLA8vsyGr\nigXx7B5GgP+IHb6DTjPJAi0=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBTjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA4MTExOTU4NDVaFw0y\nMDAzMDUxOTU4NDVaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyB1cy1lYXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCp\nWnnUX7wM0zzstccX+4iXKJa9GR0a2PpvB1paEX4QRCgfhEdQWDaSqyrWNgdVCKkt\n1aQkWu5j6VAC2XIG7kKoonm1ZdBVyBLqW5lXNywlaiU9yhJkwo8BR+/OqgE+PLt/\nEO1mlN0PQudja/XkExCXTO29TG2j7F/O7hox6vTyHNHc0H88zS21uPuBE+jivViS\nyzj/BkyoQ85hnkues3f9R6gCGdc+J51JbZnmgzUkvXjAEuKhAm9JksVOxcOKUYe5\nERhn0U9zjzpfbAITIkul97VVa5IxskFFTHIPJbvRKHJkiF6wTJww/tc9wm+fSCJ1\n+DbQTGZgkQ3bJrqRN29/AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSAHQzUYYZbepwKEMvGdHp8wzHnfDAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\nMbaEzSYZ+aZeTBxf8yi0ta8K4RdwEJsEmP6IhFFQHYUtva2Cynl4Q9tZg3RMsybT\n9mlnSQQlbN/wqIIXbkrcgFcHoXG9Odm/bDtUwwwDaiEhXVfeQom3G77QHOWMTCGK\nqadwuh5msrb17JdXZoXr4PYHDKP7j0ONfAyFNER2+uecblHfRSpVq5UeF3L6ZJb8\nfSw/GtAV6an+/0r+Qm+PiI2H5XuZ4GmRJYnGMhqWhBYrY7p3jtVnKcsh39wgfUnW\nAvZEZG/yhFyAZW0Essa39LiL5VSq14Y1DOj0wgnhSY/9WHxaAo1HB1T9OeZknYbD\nfl/EGSZ0TEvZkENrXcPlVA==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/zCCAuegAwIBAgIBTzANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjA5MTUwMDEwMTFaFw0y\nMDAzMDUwMDEwMTFaMIGSMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJE\nUyBjYS1jZW50cmFsLTEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB\nAQCZYI/iQ6DrS3ny3t1EwX1wAD+3LMgh7Fd01EW5LIuaK2kYIIQpsVKhxLCit/V5\nAGc/1qiJS1Qz9ODLTh0Na6bZW6EakRzuHJLe32KJtoFYPC7Z09UqzXrpA/XL+1hM\nP0ZmCWsU7Nn/EmvfBp9zX3dZp6P6ATrvDuYaVFr+SA7aT3FXpBroqBS1fyzUPs+W\nc6zTR6+yc4zkHX0XQxC5RH6xjgpeRkoOajA/sNo7AQF7KlWmKHbdVF44cvvAhRKZ\nXaoVs/C4GjkaAEPTCbopYdhzg+KLx9eB2BQnYLRrIOQZtRfbQI2Nbj7p3VsRuOW1\ntlcks2w1Gb0YC6w6SuIMFkl1AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV\nHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBToYWxE1lawl6Ks6NsvpbHQ3GKEtzAf\nBgNVHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOC\nAQEAG/8tQ0ooi3hoQpa5EJz0/E5VYBsAz3YxA2HoIonn0jJyG16bzB4yZt4vNQMA\nKsNlQ1uwDWYL1nz63axieUUFIxqxl1KmwfhsmLgZ0Hd2mnTPIl2Hw3uj5+wdgGBg\nagnAZ0bajsBYgD2VGQbqjdk2Qn7Fjy3LEWIvGZx4KyZ99OJ2QxB7JOPdauURAtWA\nDKYkP4LLJxtj07DSzG8kuRWb9B47uqUD+eKDIyjfjbnzGtd9HqqzYFau7EX3HVD9\n9Qhnjl7bTZ6YfAEZ3nH2t3Vc0z76XfGh47rd0pNRhMV+xpok75asKf/lNh5mcUrr\nVKwflyMkQpSbDCmcdJ90N2xEXQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBUDANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNjEwMTAxNzQ0NDJaFw0y\nMDAzMDUxNzQ0NDJaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyBldS13ZXN0LTIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDO\ncttLJfubB4XMMIGWNfJISkIdCMGJyOzLiMJaiWB5GYoXKhEl7YGotpy0qklwW3BQ\na0fmVdcCLX+dIuVQ9iFK+ZcK7zwm7HtdDTCHOCKeOh2IcnU4c/VIokFi6Gn8udM6\nN/Zi5M5OGpVwLVALQU7Yctsn3c95el6MdVx6mJiIPVu7tCVZn88Z2koBQ2gq9P4O\nSb249SHFqOb03lYDsaqy1NDsznEOhaRBw7DPJFpvmw1lA3/Y6qrExRI06H2VYR2i\n7qxwDV50N58fs10n7Ye1IOxTVJsgEA7X6EkRRXqYaM39Z76R894548WHfwXWjUsi\nMEX0RS0/t1GmnUQjvevDAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQBxmcuRSxERYCtNnSr5xNfySokHjAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\nUyCUQjsF3nUAABjfEZmpksTuUo07aT3KGYt+EMMFdejnBQ0+2lJJFGtT+CDAk1SD\nRSgfEBon5vvKEtlnTf9a3pv8WXOAkhfxnryr9FH6NiB8obISHNQNPHn0ljT2/T+I\nY6ytfRvKHa0cu3V0NXbJm2B4KEOt4QCDiFxUIX9z6eB4Kditwu05OgQh6KcogOiP\nJesWxBMXXGoDC1rIYTFO7szwDyOHlCcVXJDNsTJhc32oDWYdeIbW7o/5I+aQsrXZ\nC96HykZcgWzz6sElrQxUaT3IoMw/5nmw4uWKKnZnxgI9bY4fpQwMeBZ96iHfFxvH\nmqfEEuC7uUoPofXdBp2ObQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/DCCAuSgAwIBAgIBUTANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzA4MjUyMTM5MjZaFw0y\nMDAzMDUyMTM5MjZaMIGPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJE\nUyBldS13ZXN0LTMgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+\nxmlEC/3a4cJH+UPwXCE02lC7Zq5NHd0dn6peMeLN8agb6jW4VfSY0NydjRj2DJZ8\nK7wV6sub5NUGT1NuFmvSmdbNR2T59KX0p2dVvxmXHHtIpQ9Y8Aq3ZfhmC5q5Bqgw\ntMA1xayDi7HmoPX3R8kk9ktAZQf6lDeksCvok8idjTu9tiSpDiMwds5BjMsWfyjZ\nd13PTGGNHYVdP692BSyXzSP1Vj84nJKnciW8tAqwIiadreJt5oXyrCXi8ekUMs80\ncUTuGm3aA3Q7PB5ljJMPqz0eVddaiIvmTJ9O3Ez3Du/HpImyMzXjkFaf+oNXf/Hx\n/EW5jCRR6vEiXJcDRDS7AgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB\nAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRZ9mRtS5fHk3ZKhG20Oack4cAqMTAfBgNV\nHSMEGDAWgBROAu6sPvYVyEztLPUFwY+chAhJgzANBgkqhkiG9w0BAQsFAAOCAQEA\nF/u/9L6ExQwD73F/bhCw7PWcwwqsK1mypIdrjdIsu0JSgwWwGCXmrIspA3n3Dqxq\nsMhAJD88s9Em7337t+naar2VyLO63MGwjj+vA4mtvQRKq8ScIpiEc7xN6g8HUMsd\ngPG9lBGfNjuAZsrGJflrko4HyuSM7zHExMjXLH+CXcv/m3lWOZwnIvlVMa4x0Tz0\nA4fklaawryngzeEjuW6zOiYCzjZtPlP8Fw0SpzppJ8VpQfrZ751RDo4yudmPqoPK\n5EUe36L8U+oYBXnC5TlYs9bpVv9o5wJQI5qA9oQE2eFWxF1E0AyZ4V5sgGUBStaX\nBjDDWul0wSo7rt1Tq7XpnA==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIBTjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzEyMDEwMDU1NDJaFw0y\nMDAzMDUwMDU1NDJaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJE\nUyBhcC1ub3J0aGVhc3QtMyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBAMZtQNnm/XT19mTa10ftHLzg5UhajoI65JHv4TQNdGXdsv+CQdGYU49BJ9Eu\n3bYgiEtTzR2lQe9zGMvtuJobLhOWuavzp7IixoIQcHkFHN6wJ1CvqrxgvJfBq6Hy\nEuCDCiU+PPDLUNA6XM6Qx3IpHd1wrJkjRB80dhmMSpxmRmx849uFafhN+P1QybsM\nTI0o48VON2+vj+mNuQTyLMMP8D4odSQHjaoG+zyJfJGZeAyqQyoOUOFEyQaHC3TT\n3IDSNCQlpxb9LerbCoKu79WFBBq3CS5cYpg8/fsnV2CniRBFFUumBt5z4dhw9RJU\nqlUXXO1ZyzpGd+c5v6FtrfXtnIUCAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEGMBIG\nA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFETv7ELNplYy/xTeIOInl6nzeiHg\nMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEBBQUA\nA4IBAQCpKxOQcd0tEKb3OtsOY8q/MPwTyustGk2Rt7t9G68idADp8IytB7M0SDRo\nwWZqynEq7orQVKdVOanhEWksNDzGp0+FPAf/KpVvdYCd7ru3+iI+V4ZEp2JFdjuZ\nZz0PIjS6AgsZqE5Ri1J+NmfmjGZCPhsHnGZiBaenX6K5VRwwwmLN6xtoqrrfR5zL\nQfBeeZNJG6KiM3R/DxJ5rAa6Fz+acrhJ60L7HprhB7SFtj1RCijau3+ZwiGmUOMr\nyKlMv+VgmzSw7o4Hbxy1WVrA6zQsTHHSGf+vkQn2PHvnFMUEu/ZLbTDYFNmTLK91\nK6o4nMsEvhBKgo4z7H1EqqxXhvN2\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBDCCAuygAwIBAgIBTTANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xNzEyMDYyMjQyMjdaFw0y\nMDAzMDQyMjQyMjdaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1hem9uIFJE\nUyBwcmV2aWV3LXVzLWVhc3QtMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC\nAQoCggEBAMw0E8k8URanS0c/i1S7wzFf5+XC9H2bm+4pENdElGP5s9rVCybrzJaw\n6zZgVLpOFnS9mJ+sDHIMUexPjj0X4+r7wZ4+hPfy7Rmrgbt23IQwr+PIBxsKAVjj\niaQ3bSm5WQ79an5elfQqEDdZ13ckUcLBJDA8bUDthI8m7gnteGtx0M1D0VS5PDs9\ncf96QlBia9Lx3VcNo3cc0PzP30E4j3h/Ywlb0jXUgB6oVlTxK70BjD3kZa+2xlea\nvKmm4NqGVhPY7BWd4XNdbSYsPDeZ9HxHNWXZxoHcQ7vSU8RKYVPtoBK/zIp3eWOi\ngzZlm5vYPvlkYh2pshttPPVyhZqlEZ8CAwEAAaNmMGQwDgYDVR0PAQH/BAQDAgEG\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI93K+FRhste6w3MiD+IK3Tc\ng/BsMB8GA1UdIwQYMBaAFE4C7qw+9hXITO0s9QXBj5yECEmDMA0GCSqGSIb3DQEB\nBQUAA4IBAQAs4RsC8MJVOvrlRi5sgKC9LJ4BvSrrbR5V8CdIEwlPqrVOSsU5t7Py\nj8CHoPUY/ya1azlBSO62BqdZxipFuAR06NdxNG2Gy0fGl71N2udxokwEPW+IEZ81\nG6JeX8HNFjnna8ehimz1VJDDW7qborhg3dCAgEWkgv5PDR9/zoUu6bbmHPV77zbx\nGq7Sybz5OiagC7Nj9N1WgjNXUEmlfY2DHXnJmIVgUGEVrBgu5tGcIU/bQCRznH1N\nJsBH0SalneCbSzMBhQdnzL+L5KOERibWAZvS6ebmomTBwa03kgo/T0DfEccgobTs\nrV6T9/8Vg9T18vEeqURL+LOGs7+lIKmN\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIID/TCCAuWgAwIBAgIBUjANBgkqhkiG9w0BAQsFADCBijELMAkGA1UEBhMCVVMx\nEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nGzAZBgNVBAMMEkFtYXpvbiBSRFMgUm9vdCBDQTAeFw0xODA5MjgxNzM0NTJaFw0y\nMDAzMDUxNzM0NTJaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3Rv\nbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNl\ncywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UEAwwYQW1hem9uIFJE\nUyBldS1ub3J0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\nwvHfpoixHNy1jvcq/WNhXDHlsFVbEOX7mp01YQeK0wWqlpFvjs2HFJ1sRnnmyhdT\nsv4VQuXnQw2V2iFAO2HveDi8pcJ+eIXY+wloSVBytgYLTMcNpn5LmqIeyGO+Lr6p\nKUr78I4uE0mnabxyILA96CYrYtgwpLCtpEXSdSJPwOSK9nX9++molxLcJ5v4fiPS\nj46PETsbFoFdXXwYCdiJKpzO4zUAkKzzvzbF7cXg9R4noJuytjEKbluxugDHdnwl\nSctGZ3moju2I0OpPbJKUI3wHsUMtY5v15X74MOED5lbtaW5+/6JIERggve0b23Ni\n4nlYSt0Bb3z3Zwc83twCUwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\nAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU4stOy1OAFRyvZCSKNfCiPRD+rPowHwYD\nVR0jBBgwFoAUTgLurD72FchM7Sz1BcGPnIQISYMwDQYJKoZIhvcNAQELBQADggEB\nAHpRIlKh1fqbMHl0+VnJ/52XQy1F5gM2hnw3lYkOLsDyzj9W4V6D1v2EDgYW+ZVH\n0wWqo8m0jS6CDn14W2HqNlyXyHpJK3eh3088zxvJgKqzKS4ghNzafN7axwYIwRN6\n9rrhRWy9MaFHaSPKtgiuTxw9fOekqyJdO+OYpBVEp7KEEyEG9/W5xZcU64zGb6UT\n8/g4+5t+HlT0nYBMvt8HW7w2XbFBetfKKK4WaoPKloOMN+RLO/JgJ6pVWvxM8nhC\nPbVtr43OI1sQAXYk0an7aUDgXT98vGwovWNHI6lFCMGRG+WXhauLtKRsIr4hR1LV\nfES7Q9MWPzPYHQoKELF9Jhk=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSUwIwYDVQQDDBxBbWF6b24gUkRTIGFwLWVhc3QtMSBSb290IENBMB4XDTE5MDIx\nNzAyNDcwMFoXDTIyMDYwMTEyMDAwMFowgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI\nDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\nV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSAwHgYDVQQD\nDBdBbWF6b24gUkRTIGFwLWVhc3QtMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAOcJAUofyJuBuPr5ISHi/Ha5ed8h3eGdzn4MBp6rytPOg9NVGRQs\nO93fNGCIKsUT6gPuk+1f1ncMTV8Y0Fdf4aqGWme+Khm3ZOP3V1IiGnVq0U2xiOmn\nSQ4Q7LoeQC4lC6zpoCHVJyDjZ4pAknQQfsXb77Togdt/tK5ahev0D+Q3gCwAoBoO\nDHKJ6t820qPi63AeGbJrsfNjLKiXlFPDUj4BGir4dUzjEeH7/hx37na1XG/3EcxP\n399cT5k7sY/CR9kctMlUyEEUNQOmhi/ly1Lgtihm3QfjL6K9aGLFNwX35Bkh9aL2\nF058u+n8DP/dPeKUAcJKiQZUmzuen5n57x8CAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFlqgF4FQlb9yP6c+Q3E\nO3tXv+zOMB8GA1UdIwQYMBaAFK9T6sY/PBZVbnHcNcQXf58P4OuPMA0GCSqGSIb3\nDQEBCwUAA4IBAQDeXiS3v1z4jWAo1UvVyKDeHjtrtEH1Rida1eOXauFuEQa5tuOk\nE53Os4haZCW4mOlKjigWs4LN+uLIAe1aFXGo92nGIqyJISHJ1L+bopx/JmIbHMCZ\n0lTNJfR12yBma5VQy7vzeFku/SisKwX0Lov1oHD4MVhJoHbUJYkmAjxorcIHORvh\nI3Vj5XrgDWtLDPL8/Id/roul/L+WX5ir+PGScKBfQIIN2lWdZoqdsx8YWqhm/ikL\nC6qNieSwcvWL7C03ri0DefTQMY54r5wP33QU5hJ71JoaZI3YTeT0Nf+NRL4hM++w\nQ0veeNzBQXg1f/JxfeA39IDIX1kiCf71tGlT\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEEDCCAvigAwIBAgIJAJF3HxEqKM4lMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBhcC1lYXN0LTEgUm9vdCBDQTAe\nFw0xOTAyMTcwMjQ2MTFaFw0yNDAyMTYwMjQ2MTFaMIGUMQswCQYDVQQGEwJVUzEQ\nMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UECgwZ\nQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEl\nMCMGA1UEAwwcQW1hem9uIFJEUyBhcC1lYXN0LTEgUm9vdCBDQTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAOCVr1Yj5IW4XWa9QOLGJDSz4pqIM6BAbqQp\ngYvzIO4Lv8c8dEnuuuCY8M/zOrJ1iQJ3cDiKGa32HVBVcH+nUdXzw4Jq5jw0hsb6\n/WW2RD2aUe4jCkRD5wNzmeHM4gTgtMZnXNVHpELgKR4wVhSHEfWFTiMsZi35y8mj\nPL98Mz/m/nMnB/59EjMvcJMrsUljHO6B9BMEcvNkwvre9xza0BQWKyiVRcbOpoj1\nw4BPtYYZ+dW2QKw9AmYXwAmCLeATsxrHIJ/IbzS7obxv2QN2Eh4pJ3ghRCFv1XM9\nXVkm13oiCjj7jsxAwF7o+VggPl/GG+/Gwk+TLuaTFNAtROpPxL8CAwEAAaNjMGEw\nDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9T6sY/\nPBZVbnHcNcQXf58P4OuPMB8GA1UdIwQYMBaAFK9T6sY/PBZVbnHcNcQXf58P4OuP\nMA0GCSqGSIb3DQEBCwUAA4IBAQBBY+KATaT7ndYT3Ky0VWaiwNfyl1u3aDxr+MKP\nVeDhtOhlob5u0E+edOXUvEXd4A+ntS+U0HmwvtMXtQbQ2EJbsNRqZnS8KG9YB2Yc\nQ99auphW3wMjwHRtflLO5h14aa9SspqJJgcM1R7Z3pAYeq6bpBDxZSGrYtWI64q4\nh4i67qWAGDFcXSTW1kJ00GMlBCIGTeYiu8LYutdsDWzYKkeezJRjx9VR4w7A7e1G\nWmY4aUg/8aPxCioY2zEQKNl55Ghg6Dwy+6BxaV6RlV9r9EaSCai11p1bgS568WQn\n4WNQK36EGe37l2SOpDB6STrq57/rjREvmq803Ylg/Gf6qqzK\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSYwJAYDVQQDDB1BbWF6b24gUkRTIG1lLXNvdXRoLTEgUm9vdCBDQTAeFw0xOTA1\nMTAyMTU4NDNaFw0yNTA2MDExMjAwMDBaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UE\nCAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9u\nIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEhMB8GA1UE\nAwwYQW1hem9uIFJEUyBtZS1zb3V0aC0xIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEAudOYPZH+ihJAo6hNYMB5izPVBe3TYhnZm8+X3IoaaYiKtsp1\nJJhkTT0CEejYIQ58Fh4QrMUyWvU8qsdK3diNyQRoYLbctsBPgxBR1u07eUJDv38/\nC1JlqgHmMnMi4y68Iy7ymv50QgAMuaBqgEBRI1R6Lfbyrb2YvH5txjJyTVMwuCfd\nYPAtZVouRz0JxmnfsHyxjE+So56uOKTDuw++Ho4HhZ7Qveej7XB8b+PIPuroknd3\nFQB5RVbXRvt5ZcVD4F2fbEdBniF7FAF4dEiofVCQGQ2nynT7dZdEIPfPdH3n7ZmE\nlAOmwHQ6G83OsiHRBLnbp+QZRgOsjkHJxT20bQIDAQABo2YwZDAOBgNVHQ8BAf8E\nBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUOEVDM7VomRH4HVdA\nQvIMNq2tXOcwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXdaiqYwDQYJKoZI\nhvcNAQELBQADggEBAHhvMssj+Th8IpNePU6RH0BiL6o9c437R3Q4IEJeFdYL+nZz\nPW/rELDPvLRUNMfKM+KzduLZ+l29HahxefejYPXtvXBlq/E/9czFDD4fWXg+zVou\nuDXhyrV4kNmP4S0eqsAP/jQHPOZAMFA4yVwO9hlqmePhyDnszCh9c1PfJSBh49+b\n4w7i/L3VBOMt8j3EKYvqz0gVfpeqhJwL4Hey8UbVfJRFJMJzfNHpePqtDRAY7yjV\nPYquRaV2ab/E+/7VFkWMM4tazYz/qsYA2jSH+4xDHvYk8LnsbcrF9iuidQmEc5sb\nFgcWaSKG4DJjcI5k7AJLWcXyTDt21Ci43LE+I9Q=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEEjCCAvqgAwIBAgIJANew34ehz5l8MA0GCSqGSIb3DQEBCwUAMIGVMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEmMCQGA1UEAwwdQW1hem9uIFJEUyBtZS1zb3V0aC0xIFJvb3QgQ0Ew\nHhcNMTkwNTEwMjE0ODI3WhcNMjQwNTA4MjE0ODI3WjCBlTELMAkGA1UEBhMCVVMx\nEDAOBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoM\nGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMx\nJjAkBgNVBAMMHUFtYXpvbiBSRFMgbWUtc291dGgtMSBSb290IENBMIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp7BYV88MukcY+rq0r79+C8UzkT30fEfT\naPXbx1d6M7uheGN4FMaoYmL+JE1NZPaMRIPTHhFtLSdPccInvenRDIatcXX+jgOk\nUA6lnHQ98pwN0pfDUyz/Vph4jBR9LcVkBbe0zdoKKp+HGbMPRU0N2yNrog9gM5O8\ngkU/3O2csJ/OFQNnj4c2NQloGMUpEmedwJMOyQQfcUyt9CvZDfIPNnheUS29jGSw\nERpJe/AENu8Pxyc72jaXQuD+FEi2Ck6lBkSlWYQFhTottAeGvVFNCzKszCntrtqd\nrdYUwurYsLTXDHv9nW2hfDUQa0mhXf9gNDOBIVAZugR9NqNRNyYLHQIDAQABo2Mw\nYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU54cf\nDjgwBx4ycBH8+/r8WXdaiqYwHwYDVR0jBBgwFoAU54cfDjgwBx4ycBH8+/r8WXda\niqYwDQYJKoZIhvcNAQELBQADggEBAIIMTSPx/dR7jlcxggr+O6OyY49Rlap2laKA\neC/XI4ySP3vQkIFlP822U9Kh8a9s46eR0uiwV4AGLabcu0iKYfXjPkIprVCqeXV7\nny9oDtrbflyj7NcGdZLvuzSwgl9SYTJp7PVCZtZutsPYlbJrBPHwFABvAkMvRtDB\nhitIg4AESDGPoCl94sYHpfDfjpUDMSrAMDUyO6DyBdZH5ryRMAs3lGtsmkkNUrso\naTW6R05681Z0mvkRdb+cdXtKOSuDZPoe2wJJIaz3IlNQNSrB5TImMYgmt6iAsFhv\n3vfTSTKrZDNTJn4ybG6pq1zWExoXsktZPylJly6R3RBwV6nwqBM=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEETCCAvmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSUwIwYDVQQDDBxBbWF6b24gUkRTIEJldGEgUm9vdCAyMDE5IENBMB4XDTE5MDgy\nMDE3MTAwN1oXDTI0MDgxOTE3MzgyNlowgZkxCzAJBgNVBAYTAlVTMRMwEQYDVQQI\nDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6b24g\nV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMSowKAYDVQQD\nDCFBbWF6b24gUkRTIEJldGEgdXMtZWFzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQDTNCOlotQcLP8TP82U2+nk0bExVuuMVOgFeVMx\nvbUHZQeIj9ikjk+jm6eTDnnkhoZcmJiJgRy+5Jt69QcRbb3y3SAU7VoHgtraVbxF\nQDh7JEHI9tqEEVOA5OvRrDRcyeEYBoTDgh76ROco2lR+/9uCvGtHVrMCtG7BP7ZB\nsSVNAr1IIRZZqKLv2skKT/7mzZR2ivcw9UeBBTUf8xsfiYVBvMGoEsXEycjYdf6w\nWV+7XS7teNOc9UgsFNN+9AhIBc1jvee5E//72/4F8pAttAg/+mmPUyIKtekNJ4gj\nOAR2VAzGx1ybzWPwIgOudZFHXFduxvq4f1hIRPH0KbQ/gkRrAgMBAAGjZjBkMA4G\nA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTkvpCD\n6C43rar9TtJoXr7q8dkrrjAfBgNVHSMEGDAWgBStoQwVpbGx87fxB3dEGDqKKnBT\n4TANBgkqhkiG9w0BAQsFAAOCAQEAJd9fOSkwB3uVdsS+puj6gCER8jqmhd3g/J5V\nZjk9cKS8H0e8pq/tMxeJ8kpurPAzUk5RkCspGt2l0BSwmf3ahr8aJRviMX6AuW3/\ng8aKplTvq/WMNGKLXONa3Sq8591J+ce8gtOX/1rDKmFI4wQ/gUzOSYiT991m7QKS\nFr6HMgFuz7RNJbb3Fy5cnurh8eYWA7mMv7laiLwTNsaro5qsqErD5uXuot6o9beT\na+GiKinEur35tNxAr47ax4IRubuIzyfCrezjfKc5raVV2NURJDyKP0m0CCaffAxE\nqn2dNfYc3v1D8ypg3XjHlOzRo32RB04o8ALHMD9LSwsYDLpMag==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEEDCCAvigAwIBAgIJAKFMXyltvuRdMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTAe\nFw0xOTA4MTkxNzM4MjZaFw0yNDA4MTkxNzM4MjZaMIGUMQswCQYDVQQGEwJVUzEQ\nMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UECgwZ\nQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEl\nMCMGA1UEAwwcQW1hem9uIFJEUyBCZXRhIFJvb3QgMjAxOSBDQTCCASIwDQYJKoZI\nhvcNAQEBBQADggEPADCCAQoCggEBAMkZdnIH9ndatGAcFo+DppGJ1HUt4x+zeO+0\nZZ29m0sfGetVulmTlv2d5b66e+QXZFWpcPQMouSxxYTW08TbrQiZngKr40JNXftA\natvzBqIImD4II0ZX5UEVj2h98qe/ypW5xaDN7fEa5e8FkYB1TEemPaWIbNXqchcL\ntV7IJPr3Cd7Z5gZJlmujIVDPpMuSiNaal9/6nT9oqN+JSM1fx5SzrU5ssg1Vp1vv\n5Xab64uOg7wCJRB9R2GC9XD04odX6VcxUAGrZo6LR64ZSifupo3l+R5sVOc5i8NH\nskdboTzU9H7+oSdqoAyhIU717PcqeDum23DYlPE2nGBWckE+eT8CAwEAAaNjMGEw\nDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK2hDBWl\nsbHzt/EHd0QYOooqcFPhMB8GA1UdIwQYMBaAFK2hDBWlsbHzt/EHd0QYOooqcFPh\nMA0GCSqGSIb3DQEBCwUAA4IBAQAO/718k8EnOqJDx6wweUscGTGL/QdKXUzTVRAx\nJUsjNUv49mH2HQVEW7oxszfH6cPCaupNAddMhQc4C/af6GHX8HnqfPDk27/yBQI+\nyBBvIanGgxv9c9wBbmcIaCEWJcsLp3HzXSYHmjiqkViXwCpYfkoV3Ns2m8bp+KCO\ny9XmcCKRaXkt237qmoxoh2sGmBHk2UlQtOsMC0aUQ4d7teAJG0q6pbyZEiPyKZY1\nXR/UVxMJL0Q4iVpcRS1kaNCMfqS2smbLJeNdsan8pkw1dvPhcaVTb7CvjhJtjztF\nYfDzAI5794qMlWxwilKMmUvDlPPOTen8NNHkLwWvyFCH7Doh\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEFzCCAv+gAwIBAgICFSUwDQYJKoZIhvcNAQELBQAwgZcxCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSgwJgYDVQQDDB9BbWF6b24gUkRTIFByZXZpZXcgUm9vdCAyMDE5IENBMB4XDTE5\nMDgyMTIyMzk0N1oXDTI0MDgyMTIyMjk0OVowgZwxCzAJBgNVBAYTAlVTMRMwEQYD\nVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlBbWF6\nb24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMS0wKwYD\nVQQDDCRBbWF6b24gUkRTIFByZXZpZXcgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0dB/U7qRnSf05wOi7m10Pa2uPMTJv\nr6U/3Y17a5prq5Zr4++CnSUYarG51YuIf355dKs+7Lpzs782PIwCmLpzAHKWzix6\npOaTQ+WZ0+vUMTxyqgqWbsBgSCyP7pVBiyqnmLC/L4az9XnscrbAX4pNaoJxsuQe\nmzBo6yofjQaAzCX69DuqxFkVTRQnVy7LCFkVaZtjNAftnAHJjVgQw7lIhdGZp9q9\nIafRt2gteihYfpn+EAQ/t/E4MnhrYs4CPLfS7BaYXBycEKC5Muj1l4GijNNQ0Efo\nxG8LSZz7SNgUvfVwiNTaqfLP3AtEAWiqxyMyh3VO+1HpCjT7uNBFtmF3AgMBAAGj\nZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW\nBBQtinkdrj+0B2+qdXngV2tgHnPIujAfBgNVHSMEGDAWgBRp0xqULkNh/w2ZVzEI\no2RIY7O03TANBgkqhkiG9w0BAQsFAAOCAQEAtJdqbCxDeMc8VN1/RzCabw9BIL/z\n73Auh8eFTww/sup26yn8NWUkfbckeDYr1BrXa+rPyLfHpg06kwR8rBKyrs5mHwJx\nbvOzXD/5WTdgreB+2Fb7mXNvWhenYuji1MF+q1R2DXV3I05zWHteKX6Dajmx+Uuq\nYq78oaCBSV48hMxWlp8fm40ANCL1+gzQ122xweMFN09FmNYFhwuW+Ao+Vv90ZfQG\nPYwTvN4n/gegw2TYcifGZC2PNX74q3DH03DXe5fvNgRW5plgz/7f+9mS+YHd5qa9\ntYTPUvoRbi169ou6jicsMKUKPORHWhiTpSCWR1FMMIbsAcsyrvtIsuaGCQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEFjCCAv6gAwIBAgIJAMzYZJ+R9NBVMA0GCSqGSIb3DQEBCwUAMIGXMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBD\nQTAeFw0xOTA4MjEyMjI5NDlaFw0yNDA4MjEyMjI5NDlaMIGXMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEoMCYGA1UEAwwfQW1hem9uIFJEUyBQcmV2aWV3IFJvb3QgMjAxOSBDQTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7kkS6vjgKKQTPynC2NjdN5aPPV\nO71G0JJS/2ARVBVJd93JLiGovVJilfWYfwZCs4gTRSSjrUD4D4HyqCd6A+eEEtJq\nM0DEC7i0dC+9WNTsPszuB206Jy2IUmxZMIKJAA1NHSbIMjB+b6/JhbSUi7nKdbR/\nbrj83bF+RoSA+ogrgX7mQbxhmFcoZN9OGaJgYKsKWUt5Wqv627KkGodUK8mDepgD\nS3ZfoRQRx3iceETpcmHJvaIge6+vyDX3d9Z22jmvQ4AKv3py2CmU2UwuhOltFDwB\n0ddtb39vgwrJxaGfiMRHpEP1DfNLWHAnA69/pgZPwIggidS+iBPUhgucMp8CAwEA\nAaNjMGEwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE\nFGnTGpQuQ2H/DZlXMQijZEhjs7TdMB8GA1UdIwQYMBaAFGnTGpQuQ2H/DZlXMQij\nZEhjs7TdMA0GCSqGSIb3DQEBCwUAA4IBAQC3xz1vQvcXAfpcZlngiRWeqU8zQAMQ\nLZPCFNv7PVk4pmqX+ZiIRo4f9Zy7TrOVcboCnqmP/b/mNq0gVF4O+88jwXJZD+f8\n/RnABMZcnGU+vK0YmxsAtYU6TIb1uhRFmbF8K80HHbj9vSjBGIQdPCbvmR2zY6VJ\nBYM+w9U9hp6H4DVMLKXPc1bFlKA5OBTgUtgkDibWJKFOEPW3UOYwp9uq6pFoN0AO\nxMTldqWFsOF3bJIlvOY0c/1EFZXu3Ns6/oCP//Ap9vumldYMUZWmbK+gK33FPOXV\n8BQ6jNC29icv7lLDpRPwjibJBXX+peDR5UK4FdYcswWEB1Tix5X8dYu6\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgICVIYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDQxNzEz\nMDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\nem9uIFJEUyBhcC1zb3V0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDUYOz1hGL42yUCrcsMSOoU8AeD/3KgZ4q7gP+vAz1WnY9K/kim\neWN/2Qqzlo3+mxSFQFyD4MyV3+CnCPnBl9Sh1G/F6kThNiJ7dEWSWBQGAB6HMDbC\nBaAsmUc1UIz8sLTL3fO+S9wYhA63Wun0Fbm/Rn2yk/4WnJAaMZcEtYf6e0KNa0LM\np/kN/70/8cD3iz3dDR8zOZFpHoCtf0ek80QqTich0A9n3JLxR6g6tpwoYviVg89e\nqCjQ4axxOkWWeusLeTJCcY6CkVyFvDAKvcUl1ytM5AiaUkXblE7zDFXRM4qMMRdt\nlPm8d3pFxh0fRYk8bIKnpmtOpz3RIctDrZZxAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT99wKJftD3jb4sHoHG\ni3uGlH6W6TAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAZ17hhr3dII3hUfuHQ1hPWGrpJOX/G9dLzkprEIcCidkmRYl+\nhu1Pe3caRMh/17+qsoEErmnVq5jNY9X1GZL04IZH8YbHc7iRHw3HcWAdhN8633+K\njYEB2LbJ3vluCGnCejq9djDb6alOugdLMJzxOkHDhMZ6/gYbECOot+ph1tQuZXzD\ntZ7prRsrcuPBChHlPjmGy8M9z8u+kF196iNSUGC4lM8vLkHM7ycc1/ZOwRq9aaTe\niOghbQQyAEe03MWCyDGtSmDfr0qEk+CHN+6hPiaL8qKt4s+V9P7DeK4iW08ny8Ox\nAVS7u0OK/5+jKMAMrKwpYrBydOjTUTHScocyNw==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkw\nODIyMTcwODUwWhcNMjQwODIyMTcwODUwWjCBjzELMAkGA1UEBhMCVVMxEDAOBgNV\nBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFtYXpv\nbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIDAeBgNV\nBAMMF0FtYXpvbiBSRFMgUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEArXnF/E6/Qh+ku3hQTSKPMhQQlCpoWvnIthzX6MK3p5a0eXKZ\noWIjYcNNG6UwJjp4fUXl6glp53Jobn+tWNX88dNH2n8DVbppSwScVE2LpuL+94vY\n0EYE/XxN7svKea8YvlrqkUBKyxLxTjh+U/KrGOaHxz9v0l6ZNlDbuaZw3qIWdD/I\n6aNbGeRUVtpM6P+bWIoxVl/caQylQS6CEYUk+CpVyJSkopwJlzXT07tMoDL5WgX9\nO08KVgDNz9qP/IGtAcRduRcNioH3E9v981QO1zt/Gpb2f8NqAjUUCUZzOnij6mx9\nMcZ+9cWX88CRzR0vQODWuZscgI08NvM69Fn2SQIDAQABo2MwYTAOBgNVHQ8BAf8E\nBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUc19g2LzLA5j0Kxc0LjZa\npmD/vB8wHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJKoZIhvcN\nAQELBQADggEBAHAG7WTmyjzPRIM85rVj+fWHsLIvqpw6DObIjMWokpliCeMINZFV\nynfgBKsf1ExwbvJNzYFXW6dihnguDG9VMPpi2up/ctQTN8tm9nDKOy08uNZoofMc\nNUZxKCEkVKZv+IL4oHoeayt8egtv3ujJM6V14AstMQ6SwvwvA93EP/Ug2e4WAXHu\ncbI1NAbUgVDqp+DRdfvZkgYKryjTWd/0+1fS8X1bBZVWzl7eirNVnHbSH2ZDpNuY\n0SBd8dj5F6ld3t58ydZbrTHze7JJOd8ijySAp4/kiu9UfZWuTPABzDa/DSdz9Dk/\nzPW4CXXvhLmE02TA9/HeCw3KEHIwicNuEfw=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICQ2QwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MDUxODQ2\nMjlaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBzYS1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAMMvR+ReRnOzqJzoaPipNTt1Z2VA968jlN1+SYKUrYM3No+Vpz0H\nM6Tn0oYB66ByVsXiGc28ulsqX1HbHsxqDPwvQTKvO7SrmDokoAkjJgLocOLUAeld\n5AwvUjxGRP6yY90NV7X786MpnYb2Il9DIIaV9HjCmPt+rjy2CZjS0UjPjCKNfB8J\nbFjgW6GGscjeyGb/zFwcom5p4j0rLydbNaOr9wOyQrtt3ZQWLYGY9Zees/b8pmcc\nJt+7jstZ2UMV32OO/kIsJ4rMUn2r/uxccPwAc1IDeRSSxOrnFKhW3Cu69iB3bHp7\nJbawY12g7zshE4I14sHjv3QoXASoXjx4xgMCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFI1Fc/Ql2jx+oJPgBVYq\nccgP0pQ8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQB4VVVabVp70myuYuZ3vltQIWqSUMhkaTzehMgGcHjMf9iLoZ/I\n93KiFUSGnek5cRePyS9wcpp0fcBT3FvkjpUdCjVtdttJgZFhBxgTd8y26ImdDDMR\n4+BUuhI5msvjL08f+Vkkpu1GQcGmyFVPFOy/UY8iefu+QyUuiBUnUuEDd49Hw0Fn\n/kIPII6Vj82a2mWV/Q8e+rgN8dIRksRjKI03DEoP8lhPlsOkhdwU6Uz9Vu6NOB2Q\nLs1kbcxAc7cFSyRVJEhh12Sz9d0q/CQSTFsVJKOjSNQBQfVnLz1GwO/IieUEAr4C\njkTntH0r1LX5b/GwN4R887LvjAEdTbg1his7\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgIDAIkHMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTA2MTc0\nMDIxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\nc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\nU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\nYXpvbiBSRFMgdXMtd2VzdC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDD2yzbbAl77OofTghDMEf624OvU0eS9O+lsdO0QlbfUfWa1Kd6\n0WkgjkLZGfSRxEHMCnrv4UPBSK/Qwn6FTjkDLgemhqBtAnplN4VsoDL+BkRX4Wwq\n/dSQJE2b+0hm9w9UMVGFDEq1TMotGGTD2B71eh9HEKzKhGzqiNeGsiX4VV+LJzdH\nuM23eGisNqmd4iJV0zcAZ+Gbh2zK6fqTOCvXtm7Idccv8vZZnyk1FiWl3NR4WAgK\nAkvWTIoFU3Mt7dIXKKClVmvssG8WHCkd3Xcb4FHy/G756UZcq67gMMTX/9fOFM/v\nl5C0+CHl33Yig1vIDZd+fXV1KZD84dEJfEvHAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBR+ap20kO/6A7pPxo3+\nT3CfqZpQWjAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAHCJky2tPjPttlDM/RIqExupBkNrnSYnOK4kr9xJ3sl8UF2DA\nPAnYsjXp3rfcjN/k/FVOhxwzi3cXJF/2Tjj39Bm/OEfYTOJDNYtBwB0VVH4ffa/6\ntZl87jaIkrxJcreeeHqYMnIxeN0b/kliyA+a5L2Yb0VPjt9INq34QDc1v74FNZ17\n4z8nr1nzg4xsOWu0Dbjo966lm4nOYIGBRGOKEkHZRZ4mEiMgr3YLkv8gSmeitx57\nZ6dVemNtUic/LVo5Iqw4n3TBS0iF2C1Q1xT/s3h+0SXZlfOWttzSluDvoMv5PvCd\npFjNn+aXLAALoihL1MJSsxydtsLjOBro5eK0Vw==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICOFAwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAxNzQ2\nMjFaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAzU72e6XbaJbi4HjJoRNjKxzUEuChKQIt7k3CWzNnmjc5\n8I1MjCpa2W1iw1BYVysXSNSsLOtUsfvBZxi/1uyMn5ZCaf9aeoA9UsSkFSZBjOCN\nDpKPCmfV1zcEOvJz26+1m8WDg+8Oa60QV0ou2AU1tYcw98fOQjcAES0JXXB80P2s\n3UfkNcnDz+l4k7j4SllhFPhH6BQ4lD2NiFAP4HwoG6FeJUn45EPjzrydxjq6v5Fc\ncQ8rGuHADVXotDbEhaYhNjIrsPL+puhjWfhJjheEw8c4whRZNp6gJ/b6WEes/ZhZ\nh32DwsDsZw0BfRDUMgUn8TdecNexHUw8vQWeC181hwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwW9bWgkWkr0U\nlrOsq2kvIdrECDgwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAEugF0Gj7HVhX0ehPZoGRYRt3PBuI2YjfrrJRTZ9X5wc\n9T8oHmw07mHmNy1qqWvooNJg09bDGfB0k5goC2emDiIiGfc/kvMLI7u+eQOoMKj6\nmkfCncyRN3ty08Po45vTLBFZGUvtQmjM6yKewc4sXiASSBmQUpsMbiHRCL72M5qV\nobcJOjGcIdDTmV1BHdWT+XcjynsGjUqOvQWWhhLPrn4jWe6Xuxll75qlrpn3IrIx\nCRBv/5r7qbcQJPOgwQsyK4kv9Ly8g7YT1/vYBlR3cRsYQjccw5ceWUj2DrMVWhJ4\nprf+E3Aa4vYmLLOUUvKnDQ1k3RGNu56V0tonsQbfsaM=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgICEzUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTAyMDUy\nMjVaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\nem9uIFJEUyBjYS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAOxHqdcPSA2uBjsCP4DLSlqSoPuQ/X1kkJLusVRKiQE2zayB\nviuCBt4VB9Qsh2rW3iYGM+usDjltGnI1iUWA5KHcvHszSMkWAOYWLiMNKTlg6LCp\nXnE89tvj5dIH6U8WlDvXLdjB/h30gW9JEX7S8supsBSci2GxEzb5mRdKaDuuF/0O\nqvz4YE04pua3iZ9QwmMFuTAOYzD1M72aOpj+7Ac+YLMM61qOtU+AU6MndnQkKoQi\nqmUN2A9IFaqHFzRlSdXwKCKUA4otzmz+/N3vFwjb5F4DSsbsrMfjeHMo6o/nb6Nh\nYDb0VJxxPee6TxSuN7CQJ2FxMlFUezcoXqwqXD0CAwEAAaNmMGQwDgYDVR0PAQH/\nBAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDGGpon9WfIpsggE\nCxHq8hZ7E2ESMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\nSIb3DQEBCwUAA4IBAQAvpeQYEGZvoTVLgV9rd2+StPYykMsmFjWQcyn3dBTZRXC2\nlKq7QhQczMAOhEaaN29ZprjQzsA2X/UauKzLR2Uyqc2qOeO9/YOl0H3qauo8C/W9\nr8xqPbOCDLEXlOQ19fidXyyEPHEq5WFp8j+fTh+s8WOx2M7IuC0ANEetIZURYhSp\nxl9XOPRCJxOhj7JdelhpweX0BJDNHeUFi0ClnFOws8oKQ7sQEv66d5ddxqqZ3NVv\nRbCvCtEutQMOUMIuaygDlMn1anSM8N7Wndx8G6+Uy67AnhjGx7jw/0YPPxopEj6x\nJXP8j0sJbcT9K/9/fPVLNT25RvQ/93T2+IQL4Ca2\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICYpgwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExNzMx\nNDhaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAMk3YdSZ64iAYp6MyyKtYJtNzv7zFSnnNf6vv0FB4VnfITTMmOyZ\nLXqKAT2ahZ00hXi34ewqJElgU6eUZT/QlzdIu359TEZyLVPwURflL6SWgdG01Q5X\nO++7fSGcBRyIeuQWs9FJNIIqK8daF6qw0Rl5TXfu7P9dBc3zkgDXZm2DHmxGDD69\n7liQUiXzoE1q2Z9cA8+jirDioJxN9av8hQt12pskLQumhlArsMIhjhHRgF03HOh5\ntvi+RCfihVOxELyIRTRpTNiIwAqfZxxTWFTgfn+gijTmd0/1DseAe82aYic8JbuS\nEMbrDduAWsqrnJ4GPzxHKLXX0JasCUcWyMECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPLtsq1NrwJXO13C9eHt\nsLY11AGwMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQAnWBKj5xV1A1mYd0kIgDdkjCwQkiKF5bjIbGkT3YEFFbXoJlSP\n0lZZ/hDaOHI8wbLT44SzOvPEEmWF9EE7SJzkvSdQrUAWR9FwDLaU427ALI3ngNHy\nlGJ2hse1fvSRNbmg8Sc9GBv8oqNIBPVuw+AJzHTacZ1OkyLZrz1c1QvwvwN2a+Jd\nvH0V0YIhv66llKcYDMUQJAQi4+8nbRxXWv6Gq3pvrFoorzsnkr42V3JpbhnYiK+9\nnRKd4uWl62KRZjGkfMbmsqZpj2fdSWMY1UGyN1k+kDmCSWYdrTRDP0xjtIocwg+A\nJ116n4hV/5mbA0BaPiS2krtv17YAeHABZcvz\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgICV2YwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTExOTM2\nMjBaFw0yNDA4MjIxNzA4NTBaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEoMCYGA1UEAwwfQW1h\nem9uIFJEUyBldS1jZW50cmFsLTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAMEx54X2pHVv86APA0RWqxxRNmdkhAyp2R1cFWumKQRofoFv\nn+SPXdkpIINpMuEIGJANozdiEz7SPsrAf8WHyD93j/ZxrdQftRcIGH41xasetKGl\nI67uans8d+pgJgBKGb/Z+B5m+UsIuEVekpvgpwKtmmaLFC/NCGuSsJoFsRqoa6Gh\nm34W6yJoY87UatddCqLY4IIXaBFsgK9Q/wYzYLbnWM6ZZvhJ52VMtdhcdzeTHNW0\n5LGuXJOF7Ahb4JkEhoo6TS2c0NxB4l4MBfBPgti+O7WjR3FfZHpt18A6Zkq6A2u6\nD/oTSL6c9/3sAaFTFgMyL3wHb2YlW0BPiljZIqECAwEAAaNmMGQwDgYDVR0PAQH/\nBAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFOcAToAc6skWffJa\nTnreaswAfrbcMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqG\nSIb3DQEBCwUAA4IBAQA1d0Whc1QtspK496mFWfFEQNegLh0a9GWYlJm+Htcj5Nxt\nDAIGXb+8xrtOZFHmYP7VLCT5Zd2C+XytqseK/+s07iAr0/EPF+O2qcyQWMN5KhgE\ncXw2SwuP9FPV3i+YAm11PBVeenrmzuk9NrdHQ7TxU4v7VGhcsd2C++0EisrmquWH\nmgIfmVDGxphwoES52cY6t3fbnXmTkvENvR+h3rj+fUiSz0aSo+XZUGHPgvuEKM/W\nCBD9Smc9CBoBgvy7BgHRgRUmwtABZHFUIEjHI5rIr7ZvYn+6A0O6sogRfvVYtWFc\nqpyrW1YX8mD0VlJ8fGKM3G+aCOsiiPKDV/Uafrm+\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgICGAcwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIxODE5\nNDRaFw0yNDA4MjIxNzA4NTBaMIGVMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEmMCQGA1UEAwwdQW1h\nem9uIFJEUyBldS1ub3J0aC0xIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQCiIYnhe4UNBbdBb/nQxl5giM0XoVHWNrYV5nB0YukA98+TPn9v\nAoj1RGYmtryjhrf01Kuv8SWO+Eom95L3zquoTFcE2gmxCfk7bp6qJJ3eHOJB+QUO\nXsNRh76fwDzEF1yTeZWH49oeL2xO13EAx4PbZuZpZBttBM5zAxgZkqu4uWQczFEs\nJXfla7z2fvWmGcTagX10O5C18XaFroV0ubvSyIi75ue9ykg/nlFAeB7O0Wxae88e\nuhiBEFAuLYdqWnsg3459NfV8Yi1GnaitTym6VI3tHKIFiUvkSiy0DAlAGV2iiyJE\nq+DsVEO4/hSINJEtII4TMtysOsYPpINqeEzRAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRR0UpnbQyjnHChgmOc\nhnlc0PogzTAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAKJD4xVzSf4zSGTBJrmamo86jl1NHQxXUApAZuBZEc8tqC6TI\nT5CeoSr9CMuVC8grYyBjXblC4OsM5NMvmsrXl/u5C9dEwtBFjo8mm53rOOIm1fxl\nI1oYB/9mtO9ANWjkykuLzWeBlqDT/i7ckaKwalhLODsRDO73vRhYNjsIUGloNsKe\npxw3dzHwAZx4upSdEVG4RGCZ1D0LJ4Gw40OfD69hfkDfRVVxKGrbEzqxXRvovmDc\ntKLdYZO/6REoca36v4BlgIs1CbUXJGLSXUwtg7YXGLSVBJ/U0+22iGJmBSNcoyUN\ncjPFD9JQEhDDIYYKSGzIYpvslvGc4T5ISXFiuQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICZIEwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTIyMTMy\nMzJaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBALGiwqjiF7xIjT0Sx7zB3764K2T2a1DHnAxEOr+/EIftWKxWzT3u\nPFwS2eEZcnKqSdRQ+vRzonLBeNLO4z8aLjQnNbkizZMBuXGm4BqRm1Kgq3nlLDQn\n7YqdijOq54SpShvR/8zsO4sgMDMmHIYAJJOJqBdaus2smRt0NobIKc0liy7759KB\n6kmQ47Gg+kfIwxrQA5zlvPLeQImxSoPi9LdbRoKvu7Iot7SOa+jGhVBh3VdqndJX\n7tm/saj4NE375csmMETFLAOXjat7zViMRwVorX4V6AzEg1vkzxXpA9N7qywWIT5Y\nfYaq5M8i6vvLg0CzrH9fHORtnkdjdu1y+0MCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFOhOx1yt3Z7mvGB9jBv\n2ymdZwiOMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQBehqY36UGDvPVU9+vtaYGr38dBbp+LzkjZzHwKT1XJSSUc2wqM\nhnCIQKilonrTIvP1vmkQi8qHPvDRtBZKqvz/AErW/ZwQdZzqYNFd+BmOXaeZWV0Q\noHtDzXmcwtP8aUQpxN0e1xkWb1E80qoy+0uuRqb/50b/R4Q5qqSfJhkn6z8nwB10\n7RjLtJPrK8igxdpr3tGUzfAOyiPrIDncY7UJaL84GFp7WWAkH0WG3H8Y8DRcRXOU\nmqDxDLUP3rNuow3jnGxiUY+gGX5OqaZg4f4P6QzOSmeQYs6nLpH0PiN00+oS1BbD\nbpWdZEttILPI+vAYkU4QuBKKDjJL6HbSd+cn\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECDCCAvCgAwIBAgIDAIVCMA0GCSqGSIb3DQEBCwUAMIGPMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEgMB4GA1UEAwwXQW1hem9uIFJEUyBSb290IDIwMTkgQ0EwHhcNMTkwOTEzMTcw\nNjQxWhcNMjQwODIyMTcwODUwWjCBlDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldh\nc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBXZWIg\nU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJTAjBgNVBAMMHEFt\nYXpvbiBSRFMgdXMtZWFzdC0yIDIwMTkgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB\nDwAwggEKAoIBAQDE+T2xYjUbxOp+pv+gRA3FO24+1zCWgXTDF1DHrh1lsPg5k7ht\n2KPYzNc+Vg4E+jgPiW0BQnA6jStX5EqVh8BU60zELlxMNvpg4KumniMCZ3krtMUC\nau1NF9rM7HBh+O+DYMBLK5eSIVt6lZosOb7bCi3V6wMLA8YqWSWqabkxwN4w0vXI\n8lu5uXXFRemHnlNf+yA/4YtN4uaAyd0ami9+klwdkZfkrDOaiy59haOeBGL8EB/c\ndbJJlguHH5CpCscs3RKtOOjEonXnKXldxarFdkMzi+aIIjQ8GyUOSAXHtQHb3gZ4\nnS6Ey0CMlwkB8vUObZU9fnjKJcL5QCQqOfwvAgMBAAGjZjBkMA4GA1UdDwEB/wQE\nAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQUPuRHohPxx4VjykmH\n6usGrLL1ETAfBgNVHSMEGDAWgBRzX2DYvMsDmPQrFzQuNlqmYP+8HzANBgkqhkiG\n9w0BAQsFAAOCAQEAUdR9Vb3y33Yj6X6KGtuthZ08SwjImVQPtknzpajNE5jOJAh8\nquvQnU9nlnMO85fVDU1Dz3lLHGJ/YG1pt1Cqq2QQ200JcWCvBRgdvH6MjHoDQpqZ\nHvQ3vLgOGqCLNQKFuet9BdpsHzsctKvCVaeBqbGpeCtt3Hh/26tgx0rorPLw90A2\nV8QSkZJjlcKkLa58N5CMM8Xz8KLWg3MZeT4DmlUXVCukqK2RGuP2L+aME8dOxqNv\nOnOz1zrL5mR2iJoDpk8+VE/eBDmJX40IJk6jBjWoxAO/RXq+vBozuF5YHN1ujE92\ntO8HItgTp37XT8bJBAiAnt5mxw+NLSqtxk2QdQ==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICY4kwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTMyMDEx\nNDJaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAr5u9OuLL/OF/fBNUX2kINJLzFl4DnmrhnLuSeSnBPgbb\nqddjf5EFFJBfv7IYiIWEFPDbDG5hoBwgMup5bZDbas+ZTJTotnnxVJTQ6wlhTmns\neHECcg2pqGIKGrxZfbQhlj08/4nNAPvyYCTS0bEcmQ1emuDPyvJBYDDLDU6AbCB5\n6Z7YKFQPTiCBblvvNzchjLWF9IpkqiTsPHiEt21sAdABxj9ityStV3ja/W9BfgxH\nwzABSTAQT6FbDwmQMo7dcFOPRX+hewQSic2Rn1XYjmNYzgEHisdUsH7eeXREAcTw\n61TRvaLH8AiOWBnTEJXPAe6wYfrcSd1pD0MXpoB62wIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUytwMiomQOgX5\nIchd+2lDWRUhkikwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBACf6lRDpfCD7BFRqiWM45hqIzffIaysmVfr+Jr+fBTjP\nuYe/ba1omSrNGG23bOcT9LJ8hkQJ9d+FxUwYyICQNWOy6ejicm4z0C3VhphbTPqj\nyjpt9nG56IAcV8BcRJh4o/2IfLNzC/dVuYJV8wj7XzwlvjysenwdrJCoLadkTr1h\neIdG6Le07sB9IxrGJL9e04afk37h7c8ESGSE4E+oS4JQEi3ATq8ne1B9DQ9SasXi\nIRmhNAaISDzOPdyLXi9N9V9Lwe/DHcja7hgLGYx3UqfjhLhOKwp8HtoZORixAmOI\nHfILgNmwyugAbuZoCazSKKBhQ0wgO0WZ66ZKTMG8Oho=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICUYkwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxODIx\nMTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyB1cy13ZXN0LTIgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBANCEZBZyu6yJQFZBJmSUZfSZd3Ui2gitczMKC4FLr0QzkbxY+cLa\nuVONIOrPt4Rwi+3h/UdnUg917xao3S53XDf1TDMFEYp4U8EFPXqCn/GXBIWlU86P\nPvBN+gzw3nS+aco7WXb+woTouvFVkk8FGU7J532llW8o/9ydQyDIMtdIkKTuMfho\nOiNHSaNc+QXQ32TgvM9A/6q7ksUoNXGCP8hDOkSZ/YOLiI5TcdLh/aWj00ziL5bj\npvytiMZkilnc9dLY9QhRNr0vGqL0xjmWdoEXz9/OwjmCihHqJq+20MJPsvFm7D6a\n2NKybR9U+ddrjb8/iyLOjURUZnj5O+2+OPcCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEBxMBdv81xuzqcK5TVu\npHj+Aor8MB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQBZkfiVqGoJjBI37aTlLOSjLcjI75L5wBrwO39q+B4cwcmpj58P\n3sivv+jhYfAGEbQnGRzjuFoyPzWnZ1DesRExX+wrmHsLLQbF2kVjLZhEJMHF9eB7\nGZlTPdTzHErcnuXkwA/OqyXMpj9aghcQFuhCNguEfnROY9sAoK2PTfnTz9NJHL+Q\nUpDLEJEUfc0GZMVWYhahc0x38ZnSY2SKacIPECQrTI0KpqZv/P+ijCEcMD9xmYEb\njL4en+XKS1uJpw5fIU5Sj0MxhdGstH6S84iAE5J3GM3XHklGSFwwqPYvuTXvANH6\nuboynxRgSae59jIlAK6Jrr6GWMwQRbgcaAlW\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICEkYwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTYxOTUz\nNDdaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1zb3V0aGVhc3QtMiAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAufodI2Flker8q7PXZG0P0vmFSlhQDw907A6eJuF/WeMo\nGHnll3b4S6nC3oRS3nGeRMHbyU2KKXDwXNb3Mheu+ox+n5eb/BJ17eoj9HbQR1cd\ngEkIciiAltf8gpMMQH4anP7TD+HNFlZnP7ii3geEJB2GGXSxgSWvUzH4etL67Zmn\nTpGDWQMB0T8lK2ziLCMF4XAC/8xDELN/buHCNuhDpxpPebhct0T+f6Arzsiswt2j\n7OeNeLLZwIZvVwAKF7zUFjC6m7/VmTQC8nidVY559D6l0UhhU0Co/txgq3HVsMOH\nPbxmQUwJEKAzQXoIi+4uZzHFZrvov/nDTNJUhC6DqwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUwaZpaCme+EiV\nM5gcjeHZSTgOn4owHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAAR6a2meCZuXO2TF9bGqKGtZmaah4pH2ETcEVUjkvXVz\nsl+ZKbYjrun+VkcMGGKLUjS812e7eDF726ptoku9/PZZIxlJB0isC/0OyixI8N4M\nNsEyvp52XN9QundTjkl362bomPnHAApeU0mRbMDRR2JdT70u6yAzGLGsUwMkoNnw\n1VR4XKhXHYGWo7KMvFrZ1KcjWhubxLHxZWXRulPVtGmyWg/MvE6KF+2XMLhojhUL\n+9jB3Fpn53s6KMx5tVq1x8PukHmowcZuAF8k+W4gk8Y68wIwynrdZrKRyRv6CVtR\nFZ8DeJgoNZT3y/GT254VqMxxfuy2Ccb/RInd16tEvVk=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICOYIwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTcyMDA1\nMjlaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMyAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEA4dMak8W+XW8y/2F6nRiytFiA4XLwePadqWebGtlIgyCS\nkbug8Jv5w7nlMkuxOxoUeD4WhI6A9EkAn3r0REM/2f0aYnd2KPxeqS2MrtdxxHw1\nxoOxk2x0piNSlOz6yog1idsKR5Wurf94fvM9FdTrMYPPrDabbGqiBMsZZmoHLvA3\nZ+57HEV2tU0Ei3vWeGIqnNjIekS+E06KhASxrkNU5vi611UsnYZlSi0VtJsH4UGV\nLhnHl53aZL0YFO5mn/fzuNG/51qgk/6EFMMhaWInXX49Dia9FnnuWXwVwi6uX1Wn\n7kjoHi5VtmC8ZlGEHroxX2DxEr6bhJTEpcLMnoQMqwIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUsUI5Cb3SWB8+\ngv1YLN/ABPMdxSAwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAJAF3E9PM1uzVL8YNdzb6fwJrxxqI2shvaMVmC1mXS+w\nG0zh4v2hBZOf91l1EO0rwFD7+fxoI6hzQfMxIczh875T6vUXePKVOCOKI5wCrDad\nzQbVqbFbdhsBjF4aUilOdtw2qjjs9JwPuB0VXN4/jY7m21oKEOcnpe36+7OiSPjN\nxngYewCXKrSRqoj3mw+0w/+exYj3Wsush7uFssX18av78G+ehKPIVDXptOCP/N7W\n8iKVNeQ2QGTnu2fzWsGUSvMGyM7yqT+h1ILaT//yQS8er511aHMLc142bD4D9VSy\nDgactwPDTShK/PXqhvNey9v/sKXm4XatZvwcc8KYlW4=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgICcEUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNjU2\nMjBaFw0yNDA4MjIxNzA4NTBaMIGZMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzEqMCgGA1UEAwwhQW1h\nem9uIFJEUyBhcC1ub3J0aGVhc3QtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEAndtkldmHtk4TVQAyqhAvtEHSMb6pLhyKrIFved1WO3S7\n+I+bWwv9b2W/ljJxLq9kdT43bhvzonNtI4a1LAohS6bqyirmk8sFfsWT3akb+4Sx\n1sjc8Ovc9eqIWJCrUiSvv7+cS7ZTA9AgM1PxvHcsqrcUXiK3Jd/Dax9jdZE1e15s\nBEhb2OEPE+tClFZ+soj8h8Pl2Clo5OAppEzYI4LmFKtp1X/BOf62k4jviXuCSst3\nUnRJzE/CXtjmN6oZySVWSe0rQYuyqRl6//9nK40cfGKyxVnimB8XrrcxUN743Vud\nQQVU0Esm8OVTX013mXWQXJHP2c0aKkog8LOga0vobQIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQULmoOS1mFSjj+\nsnUPx4DgS3SkLFYwHwYDVR0jBBgwFoAUc19g2LzLA5j0Kxc0LjZapmD/vB8wDQYJ\nKoZIhvcNAQELBQADggEBAAkVL2P1M2/G9GM3DANVAqYOwmX0Xk58YBHQu6iiQg4j\nb4Ky/qsZIsgT7YBsZA4AOcPKQFgGTWhe9pvhmXqoN3RYltN8Vn7TbUm/ZVDoMsrM\ngwv0+TKxW1/u7s8cXYfHPiTzVSJuOogHx99kBW6b2f99GbP7O1Sv3sLq4j6lVvBX\nFiacf5LAWC925nvlTzLlBgIc3O9xDtFeAGtZcEtxZJ4fnGXiqEnN4539+nqzIyYq\nnvlgCzyvcfRAxwltrJHuuRu6Maw5AGcd2Y0saMhqOVq9KYKFKuD/927BTrbd2JVf\n2sGWyuPZPCk3gq+5pCjbD0c6DkhcMGI6WwxvM5V/zSM=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICJDQwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTgxNzAz\nMTVaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyBldS13ZXN0LTMgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAL9bL7KE0n02DLVtlZ2PL+g/BuHpMYFq2JnE2RgompGurDIZdjmh\n1pxfL3nT+QIVMubuAOy8InRfkRxfpxyjKYdfLJTPJG+jDVL+wDcPpACFVqoV7Prg\npVYEV0lc5aoYw4bSeYFhdzgim6F8iyjoPnObjll9mo4XsHzSoqJLCd0QC+VG9Fw2\nq+GDRZrLRmVM2oNGDRbGpGIFg77aRxRapFZa8SnUgs2AqzuzKiprVH5i0S0M6dWr\ni+kk5epmTtkiDHceX+dP/0R1NcnkCPoQ9TglyXyPdUdTPPRfKCq12dftqll+u4mV\nARdN6WFjovxax8EAP2OAUTi1afY+1JFMj+sCAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLfhrbrO5exkCVgxW0x3\nY2mAi8lNMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQAigQ5VBNGyw+OZFXwxeJEAUYaXVoP/qrhTOJ6mCE2DXUVEoJeV\nSxScy/TlFA9tJXqmit8JH8VQ/xDL4ubBfeMFAIAo4WzNWDVoeVMqphVEcDWBHsI1\nAETWzfsapRS9yQekOMmxg63d/nV8xewIl8aNVTHdHYXMqhhik47VrmaVEok1UQb3\nO971RadLXIEbVd9tjY5bMEHm89JsZDnDEw1hQXBb67Elu64OOxoKaHBgUH8AZn/2\nzFsL1ynNUjOhCSAA15pgd1vjwc0YsBbAEBPcHBWYBEyME6NLNarjOzBl4FMtATSF\nwWCKRGkvqN8oxYhwR2jf2rR5Mu4DWkK5Q8Ep\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEBzCCAu+gAwIBAgICJVUwDQYJKoZIhvcNAQELBQAwgY8xCzAJBgNVBAYTAlVT\nMRAwDgYDVQQHDAdTZWF0dGxlMRMwEQYDVQQIDApXYXNoaW5ndG9uMSIwIAYDVQQK\nDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMuMRMwEQYDVQQLDApBbWF6b24gUkRT\nMSAwHgYDVQQDDBdBbWF6b24gUkRTIFJvb3QgMjAxOSBDQTAeFw0xOTA5MTkxODE2\nNTNaFw0yNDA4MjIxNzA4NTBaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2Fz\naGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZQW1hem9uIFdlYiBT\nZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1h\nem9uIFJEUyB1cy1lYXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP\nADCCAQoCggEBAM3i/k2u6cqbMdcISGRvh+m+L0yaSIoOXjtpNEoIftAipTUYoMhL\nInXGlQBVA4shkekxp1N7HXe1Y/iMaPEyb3n+16pf3vdjKl7kaSkIhjdUz3oVUEYt\ni8Z/XeJJ9H2aEGuiZh3kHixQcZczn8cg3dA9aeeyLSEnTkl/npzLf//669Ammyhs\nXcAo58yvT0D4E0D/EEHf2N7HRX7j/TlyWvw/39SW0usiCrHPKDLxByLojxLdHzso\nQIp/S04m+eWn6rmD+uUiRteN1hI5ncQiA3wo4G37mHnUEKo6TtTUh+sd/ku6a8HK\nglMBcgqudDI90s1OpuIAWmuWpY//8xEG2YECAwEAAaNmMGQwDgYDVR0PAQH/BAQD\nAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPqhoWZcrVY9mU7tuemR\nRBnQIj1jMB8GA1UdIwQYMBaAFHNfYNi8ywOY9CsXNC42WqZg/7wfMA0GCSqGSIb3\nDQEBCwUAA4IBAQB6zOLZ+YINEs72heHIWlPZ8c6WY8MDU+Be5w1M+BK2kpcVhCUK\nPJO4nMXpgamEX8DIiaO7emsunwJzMSvavSPRnxXXTKIc0i/g1EbiDjnYX9d85DkC\nE1LaAUCmCZBVi9fIe0H2r9whIh4uLWZA41oMnJx/MOmo3XyMfQoWcqaSFlMqfZM4\n0rNoB/tdHLNuV4eIdaw2mlHxdWDtF4oH+HFm+2cVBUVC1jXKrFv/euRVtsTT+A6i\nh2XBHKxQ1Y4HgAn0jACP2QSPEmuoQEIa57bEKEcZsBR8SDY6ZdTd2HLRIApcCOSF\nMRM8CKLeF658I0XgF8D5EsYoKPsA+74Z+jDH\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\nca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\nIFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\nVOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\njgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\nA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\nU5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\nN+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\no/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\nrqXRfboQnoZsG4q5WTP468SQvvG5\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgIJAMy5uCBvP5roMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJEUyBDTiBSb290IDIwMTkgQ0EwHhcN\nMTkwOTA5MTY1NzIyWhcNMjQwOTA5MTY1NzIyWjCBkjELMAkGA1UEBhMCVVMxEDAO\nBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFt\nYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIzAh\nBgNVBAMMGkFtYXpvbiBSRFMgQ04gUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAzxl9K4p06ZTZ9eZmEXyTHe9Ut8OIZR86t6A8b8g0\nnhqMe+y4ee+UfqxumVAVyXwNXOiGQVbuJhScLaJ39/Ol4YzIGjdoD8MUvsf4BuET\nudQh2sJL8OnlXuqSICKpecN5ud4UQvoMVZ9FGJ+e8TvXczW14rGO62sPfYM/WrMD\nR7P4fhQfmWFzkc24/hZGRL1nkvwMdtiwuI2TYobhlwZQOdsNcZ9Ek+PcSI4oqgXN\nSqpYy85JzrRZiR5iFGw1CnJtGlC0oatXFzw/B8XOd9wvLTlJhyLo7zw9j3zedKbv\n33fTdjfvpGvcfw9CYggwrbsVmUeUhVDfMntTc9z9MRccmwIDAQABo2MwYTAOBgNV\nHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU/Z0g+hUMGQou\nhsbyFgSxc5jsbaowHwYDVR0jBBgwFoAU/Z0g+hUMGQouhsbyFgSxc5jsbaowDQYJ\nKoZIhvcNAQELBQADggEBAAlGPCq1D/PGkWoZZpAK3V94EOByklp2HkUPEZ0PPv3Z\n/euD2wUPkXnf27FC1XJE0pJX96B97ZXIEHl4S4obBRSlybzuvmfH4gyu+b+7Tebv\nVmfsAodyfYCm90heAYADWkc/XKDj+oe3NkbR+LokrM+5aOB71f5mMLnFgYHQW/dI\nIRDziUSpP0LMr+YNKvM7qytrobPS2TOWtweWpXesNBBeiLTHZpTEu8DYcE+4e2tj\nO0spF3HuoF0Oc7ioVy2exE+HV1oJOquHGSanZSdMHCAEDMfKUmlT7/zcwC877UT/\nsysqYU/fl6vX48QDfalZuBYj+d1dUxIb1sx6q4Iw4+s=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgIDAIMzMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEjMCEGA1UEAwwaQW1hem9uIFJEUyBDTiBSb290IDIwMTkgQ0EwHhcNMTkwOTA5\nMjAzMjM3WhcNMjQwOTA5MTY1NzIyWjCBlTELMAkGA1UEBhMCVVMxEzARBgNVBAgM\nCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBX\nZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxJjAkBgNVBAMM\nHUFtYXpvbiBSRFMgY24tbm9ydGgtMSAyMDE5IENBMIIBIjANBgkqhkiG9w0BAQEF\nAAOCAQ8AMIIBCgKCAQEA1QX8vbiba8pa4b2CLVBNhqFFYwsuekptFPv/RTixRZ6K\na1fZ/vp/d7xhfhwU9DKXyQ3ONhwOVKnFuvQuWXQiPc2cRkxM+TF7yF6hoPrIOOzr\ns6ANmR2k/n9X0aOO7sqx4q7A73ueIDJst3IjfaFgt1jaqfC7tcSSROB/+vZZTNGP\nKgFvd02ut2mCtLgohzavVDicUc0V8H1sV5Ah4n0VafW7Fqru9ehiPO79JXJKIS7W\ngcgOOiK6YDqxaQRN+LTNYdZ+DZ1+Gx8NBN80fVOO2hpRFpb662k/hQH8onYkvXaY\nkr9ouDTjfr5t8E8CEvkO/Y/B3/lt7mVjEGqImCwJawIDAQABo2YwZDAOBgNVHQ8B\nAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUXJaoUok7ROtv\n5/2xeuaRqelnejIwHwYDVR0jBBgwFoAU/Z0g+hUMGQouhsbyFgSxc5jsbaowDQYJ\nKoZIhvcNAQELBQADggEBAIiPRsCpaiMsWUq7liRV6NDgljzjVOMzUsDnfusGUQtO\nfa3tCI+sx5j92jFzlS0GwseB/3FjVQDRll/kFTqbVwpHw2kaLeAbVvquxZAoD/91\n6gBGSF3qmLestFpf02kNHlv9skqnMrBLYkQ4kckgt4Y8E8pNLSeNtJykbp7XCf7H\nA+izbITBxNHxLUqMStEtk8RhIWUmiAbp5ENHwYCL5h9g4VV7X4TsW/1Q4KgEstWa\n1t65VWr3p7NnKpMX5CL/v5FGCYq0TDdr3qmHKbXbofmUKltZ7VxSAh5LFrfLuGzt\nMtXQkd0NDvVqMNHAjEkj7/MtlYyridWrKsiUc3ALBR4=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIGADCCA+igAwIBAgIQfFbtOHNGJtTnXjvwddAHjTANBgkqhkiG9w0BAQwFADCB\nmDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChB\nbWF6b24gUkRTIGNuLW5vcnRoLTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIzMTg1MloYDzIxMjEwNTI2MDAxODUyWjCBmDEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTEwLwYDVQQDDChBbWF6\nb24gUkRTIGNuLW5vcnRoLTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAwDgYDVQQHDAdT\nZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0OO5+lCMwInN\ntMJ19bv+uyEE74uE5vHQHtla5sI1Hp+A8DhTURgJvIHRxv3Tgtk6ja4v/VcbLcVr\nR4OkZBY9b5RKHMGDK1ljwo/MxMFuK/TGkHcrjhiZcgYyNm2oxK33/YafLqq18a8p\nHREEZwz7wSi6DY8Mf9heH8a2T3ZDlUovj5JUVIDu7kSGYHw16eUi9twX7MtO0b43\nociygADBSoZeyMKZHisYdyf4D/LLDYgh7ja+Ncu4k3ErMmxGN5cZN+USyquxmnr8\nuXkl2t9VH0BhB0kej/vO9DhLdpKJRVaML1A9Wg3pd0U37xOJhTU6wCm23zdga3kR\nbf9azdS68zDK9tYiDrGc7kRkj7SOUWLY7fagyKv3rESWXrGkV8lzsK7xseomAKvL\nfHEfL0QUD63kEk4W8VH8XY7NwXZD6Je5hiQtLu8/uxed96FWwZ1DJrzojW4mKFQF\neECHU5b5jza4gjZ/pOeeqRmx3iojjYf2ZVm0+0SRFd+BWWPpqyeVUvC9gVZ+VMPr\nSUqgIrHZ2GMNJXIHt9TR3oq4XnXVcvsPuKQCWg8HIgczfDc//zaYhLdcVQbsTVEo\nI8nLqs6FygTnhyPSbJG9n9fF+RpTowXVb1UNovCTR/UBvR9l8JobnaqKUFMI1W2d\nDy98l55+LFT1VYm+rbvxJlVJm9kw6usCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUfVNPfvq3BkZRL2qrVKEvMbPBSHAwDgYDVR0PAQH/BAQDAgGG\nMA0GCSqGSIb3DQEBDAUAA4ICAQBZ9hDaGcZFSxEyV4Yk7ynJrpKznaLWaq8T72lb\nsXcgnGGnTYQtUhdR2atA6KVtc2D8UCxDiP4kE8xC+voGKgRRt3WvIX/KRiYH4Rr/\n8DS/wux6MYYEaXjoCil1xNTOyhMCmtEPIFo8LDStbaur/PmE5VGVr45XcqNdNt5A\nS8esMGK5aI7D2zQEfGN940+U2sUCVYnvuaR1nbcMkgMzzdL2yCCZ1mlyk2KvSsF7\nb0P772MnZ3x4mP3IcUh0/6XSSIxWMAB6r6s1nCZd2JGGIyVSc2YLsB2jib2gYyfT\nzq2SL040aatsOAecrfYDG6UbeL0OUXivhOzycvS92FhEDU0BNB44wEO0Qg/zAc2C\nJlkPCMKIZc9g70RhHQ9VV9kc/SCjVRu1PauryzTmXEfr+ItrbZVW33JQg7ZOmgfj\njgpKF9q7sG2VJBDCRdp2nfeA1Bblc36yC0LodZ7voSzcJI7nnv1aO3U1CvQl0Mha\nfMjZqd0kPIX6d0G4C5SImvMCF59annWwt4V1sbWrgEvqdICe0kVsofUtEW35kX3C\nW344OxVkmhhFuniTFWYCyuQNlhIIdA0I5trZPtRaWsV2cTkNIzfe2vHGXuMnwd6V\nCwxPaPdyvKB7n6x6tF5RUOXq0EZQf9XOmdOiCTua1WT+vobRX18RtJLaOa/n5AKo\nLlYzqw==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEATCCAumgAwIBAgIRAN9d6r2p5Wg5Gwl1bK3+WfkwDQYJKoZIhvcNAQELBQAw\ngZgxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwo\nQW1hem9uIFJEUyBjbi1ub3J0aC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UE\nBwwHU2VhdHRsZTAgFw0yMTA1MjUyMzE1MDdaGA8yMDYxMDUyNjAwMTUwN1owgZgx\nCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJbmMu\nMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTExMC8GA1UEAwwoQW1h\nem9uIFJEUyBjbi1ub3J0aC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4GA1UEBwwH\nU2VhdHRsZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKvw4zHfM3cU\nyFI9KFITDF4feeon2P49qXx8YX8KUEYzNbkNQhPSt1J91kvy0ddHLrxxNd+LoQFi\nA5vu7a51VmX1MtKYs7SzEIUdrON3FKK/2cci2yCnwzoc3kam3jXvPUu56op+aH35\n0JHEco0i+NUjh7n5UV/yWc1+8kPLBQr+VMV3ndp85ik209esvCRWgQ+iWuADqHbf\nvjrFm/zjFIiwuX5qapkDtSRVwM6FwIfjSEF6udhZjsermfD2AoTesptZEiNIPRzV\net6s/U5gMjvAhc+MQgjjdCLBlhbXWR1CPtXOMp6o8Pjn2Et3eiM6G1T0jUO28BGP\n3/iq3JOXFj8CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUEoBo\nnXIxui+T8RXYqgzikVat82EwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUA\nA4IBAQAk4XdDesWKYgE35KMqg2+tCY/gbBrKVMdvZzy2kAv9QH8bwCcojeMw4wGh\nu0mjfX0vawoot2bNY6Yu0+mVxBtkelhay7enN+mA5g5DfkyKkLb6Jg/9N7m95w4N\nICQwM3Yb9OsuquxBPPE7JkrZv10AzVz2Xqu/OHDyDpfnkcCfNusHyIAycjxq/ZEF\n7LOSBv3S20sJU72EKfrNGSfMDv9qvnusum/vTYKuSNCTR0vARxbB7LLVZZ/Pg2w8\n22RQK9zr+u5WkfTGMqF4NnbuJGphU21QHUIZYY8QAnte0hbK+AbTUyeKGHxqRDun\nBQn6/GvgP2tPDKj/Huauo/CVSd+M\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIICrzCCAjWgAwIBAgIQTEq2iHmd2QzeVBzmBUbAUTAKBggqhkjOPQQDAzCBlzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6\nb24gUkRTIGNuLW5vcnRoLTEgUm9vdCBDQSBFQ0MzODQgRzExEDAOBgNVBAcMB1Nl\nYXR0bGUwIBcNMjEwNTI1MjMyMjQ4WhgPMjEyMTA1MjYwMDIyNDhaMIGXMQswCQYD\nVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEG\nA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExMDAuBgNVBAMMJ0FtYXpvbiBS\nRFMgY24tbm9ydGgtMSBSb290IENBIEVDQzM4NCBHMTEQMA4GA1UEBwwHU2VhdHRs\nZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABBV1FSsxoXGFDBIMj6b+EfJvLINkTtVv\nUucbGUqZMidNfuHoUWTlhwZuX5kMv9hlbQbDxrnHCePo1heHkdqovIi2D77lhvhn\n7UgMupcFx9Tjki+5QhKLW3n7W8dmreJLw6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAd\nBgNVHQ4EFgQUFwPUFTDrjPqdIMjuYGif1wkAtr8wDgYDVR0PAQH/BAQDAgGGMAoG\nCCqGSM49BAMDA2gAMGUCMQCrAtoyWILR++OEhFmuJhSR8cgEW/rGyf+lMDwq9dcA\neJPK7l9S8iT30JOo++hWwYcCMFl9MWvoQU3iUDH+j33I26+whkvZ6LLw2dajww1X\n0MPXbT3P9P0Jk/Vv+gand92fAw==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEDDCCAvSgAwIBAgIJAMy5uCBvP5roMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\nMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1h\nem9uIFJEUzEjMCEGA1UEAwwaQW1hem9uIFJEUyBDTiBSb290IDIwMTkgQ0EwHhcN\nMTkwOTA5MTY1NzIyWhcNMjQwOTA5MTY1NzIyWjCBkjELMAkGA1UEBhMCVVMxEDAO\nBgNVBAcMB1NlYXR0bGUxEzARBgNVBAgMCldhc2hpbmd0b24xIjAgBgNVBAoMGUFt\nYXpvbiBXZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxIzAh\nBgNVBAMMGkFtYXpvbiBSRFMgQ04gUm9vdCAyMDE5IENBMIIBIjANBgkqhkiG9w0B\nAQEFAAOCAQ8AMIIBCgKCAQEAzxl9K4p06ZTZ9eZmEXyTHe9Ut8OIZR86t6A8b8g0\nnhqMe+y4ee+UfqxumVAVyXwNXOiGQVbuJhScLaJ39/Ol4YzIGjdoD8MUvsf4BuET\nudQh2sJL8OnlXuqSICKpecN5ud4UQvoMVZ9FGJ+e8TvXczW14rGO62sPfYM/WrMD\nR7P4fhQfmWFzkc24/hZGRL1nkvwMdtiwuI2TYobhlwZQOdsNcZ9Ek+PcSI4oqgXN\nSqpYy85JzrRZiR5iFGw1CnJtGlC0oatXFzw/B8XOd9wvLTlJhyLo7zw9j3zedKbv\n33fTdjfvpGvcfw9CYggwrbsVmUeUhVDfMntTc9z9MRccmwIDAQABo2MwYTAOBgNV\nHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU/Z0g+hUMGQou\nhsbyFgSxc5jsbaowHwYDVR0jBBgwFoAU/Z0g+hUMGQouhsbyFgSxc5jsbaowDQYJ\nKoZIhvcNAQELBQADggEBAAlGPCq1D/PGkWoZZpAK3V94EOByklp2HkUPEZ0PPv3Z\n/euD2wUPkXnf27FC1XJE0pJX96B97ZXIEHl4S4obBRSlybzuvmfH4gyu+b+7Tebv\nVmfsAodyfYCm90heAYADWkc/XKDj+oe3NkbR+LokrM+5aOB71f5mMLnFgYHQW/dI\nIRDziUSpP0LMr+YNKvM7qytrobPS2TOWtweWpXesNBBeiLTHZpTEu8DYcE+4e2tj\nO0spF3HuoF0Oc7ioVy2exE+HV1oJOquHGSanZSdMHCAEDMfKUmlT7/zcwC877UT/\nsysqYU/fl6vX48QDfalZuBYj+d1dUxIb1sx6q4Iw4+s=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEEDCCAvigAwIBAgIDAJJhMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJV\nUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEiMCAGA1UE\nCgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UECwwKQW1hem9uIFJE\nUzEjMCEGA1UEAwwaQW1hem9uIFJEUyBDTiBSb290IDIwMTkgQ0EwHhcNMTkwOTE3\nMTY0OTE3WhcNMjQwOTA5MTY1NzIyWjCBmTELMAkGA1UEBhMCVVMxEzARBgNVBAgM\nCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUFtYXpvbiBX\nZWIgU2VydmljZXMsIEluYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxKjAoBgNVBAMM\nIUFtYXpvbiBSRFMgY24tbm9ydGh3ZXN0LTEgMjAxOSBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAMr4bvXQVykL0RHtBALyP7FycubzLJM178wMw5vK\nQS/1IVlQlbdZ8bNYmSMqa2IlGoWdjvLonES0jD0T8LCOYJy0uPN0DfiH6I9v9th8\nTvG/hAD9pe01xLOUAOTzuikbzcxEf9XX6mG/xAh5rREHsLbQE9R7D4RkqdeJbQBc\nKVcWWrejW9XaleCr+iEuwSqzXYDXNyfJoYic8aNYA8bADG5YPWTPblxA8MCik+zD\nq9r5wMNafUKmdOAFP6qeYo0zA5o9ESM2xJdYqa2gF7lAYsMagtWZWfEW27ZUrYmf\ntlMXu5xF2zZ1z2n7GKBXa8kA+e/dzalUA5ONHZUDIpU51k8CAwEAAaNmMGQwDgYD\nVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFCV3kNIC\n8e01zUu6tXl0/ig8Va5OMB8GA1UdIwQYMBaAFP2dIPoVDBkKLobG8hYEsXOY7G2q\nMA0GCSqGSIb3DQEBCwUAA4IBAQDHKrXWXsv6KKb06XhuC6RrMsLW+fmQXbrU9x4V\nb46VEaHN8lvKx6QWmRKSdnCa7nYZkPUbGdcQtgThfEjkc+UEfJxx/Q2Hb1OslPcj\nEgx5M7NFCGoBbaSKOGnVexEKRfxA2zkPCMi7bDe2m8cgThyBHfsTJSVGJkXsf6VJ\nJKWJULYiHMjF31Npg++eB4iN42bqhPfP5nKloGjOs/TNYdT2rAcI8xZRsd+G+0Aw\nqlQ0VdPmxIK7M0Sv2StGD0244OXbq6A3Ojx4t7/Kl41+FuyaGlnALDvdiYF96Zu1\nVpA/pPn4AC3+/wrXOefZDFJ3dC1uKlIoh63Vv378oI2VQvw3\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIECTCCAvGgAwIBAgIRAOf+QbXXDGRJ7MW8j6FZ5ncwDQYJKoZIhvcNAQELBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBjbi1ub3J0aHdlc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI1MjI1NjEyWhgPMjA2MTA1MjUyMzU2MTJa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgY24tbm9ydGh3ZXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\n0XBh/AY4j5RP9XUbYGMaCaBuG4FAbHU/Qfz/hHBNfy/QMi2hF4LQECGqp+j/8fML\n45c6b0NyCLvZuIfB4F1s+dctJpqauDqzYacw3/fMmxNyzgkrYa8VhoRdPWH6ZX2e\n0VNfTOJo64ShJaePdizBAoBnfX+xvDyZ6BLGtdUsvsfdDSCTt2fgTAk8DBTmHode\nhCC3EfVcAjk99+Fe0RWPnDBXQkA8VrbgSxXPN8Gfag1wIzS44BcxhxHDiwQoL4Ao\nFfOwvgRJANeUGcqnL5IpF8xxU3lk7nMcXuQu17597+UGwTiFLAT0bnVK/TgakefX\nM3ZH9gUi0Di3dJNIKtq/3wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud\nDgQWBBTX4eJfUNknv33QnNNfkDsrYrO1uzAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI\nhvcNAQELBQADggEBAKIlgCuSJYIgvHK2zoT9PugiyBE5vvo5HyrTOJIhPknB2aY7\nx2Gwbv7YlXzncpQM+aPA88PlIvwPmGj0Nb8ph6vZ55DOxWrBE8LuXMR/+71vMYaF\nM9iTud2OyRLa2EIpS7nq3jWKjiDFkfrkUg8JmLCWHv0qEANX8XJ5NVhrRSAJzvDA\nMArXq2k5oJZoRJxyGlz6dSoU/rxsQF/oTihpcH/cEbL6ZD8sZ5xLJpCHTJcnBAEZ\nL18sYc8F/91akqXn1re/7/K3NwT9usyh89e5pegx/U2ySI3KJuc464HmCV7YZ0iJ\nEQYsQRGFZr/Miu5V4hrpuggsrnmi/RagWYJGPfQ=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIGCTCCA/GgAwIBAgIRAJ3YjujPNbJWN/domX9EvW8wDQYJKoZIhvcNAQEMBQAw\ngZwxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ\nbmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTE1MDMGA1UEAwws\nQW1hem9uIFJEUyBjbi1ub3J0aHdlc3QtMSBSb290IENBIFJTQTQwOTYgRzExEDAO\nBgNVBAcMB1NlYXR0bGUwIBcNMjEwNTI1MjMwMDE1WhgPMjEyMTA1MjYwMDAwMTVa\nMIGcMQswCQYDVQQGEwJVUzEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywg\nSW5jLjETMBEGA1UECwwKQW1hem9uIFJEUzELMAkGA1UECAwCV0ExNTAzBgNVBAMM\nLEFtYXpvbiBSRFMgY24tbm9ydGh3ZXN0LTEgUm9vdCBDQSBSU0E0MDk2IEcxMRAw\nDgYDVQQHDAdTZWF0dGxlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\ny8Wy3CndOV9n8V3yZ3aOTm6sKlxmtS7GYlAiguNjyqS2ERP6x3l6JlkuKyAtYut/\nUOJL6TBWQNLUsNpFJnLkomaqWRYNjSSogSLt2F6BIr/fM8pOmXvBHg9OB/I24DUE\n6bKuVbe+qrGN6ypTAsrfZJ94ED0wmMb8RMOlXOBgB3GxbuQjUFN0XLXurJygj9k7\nSM3RQggoaO94T1qoi4LD/NS/4/Z3eUksLZgkC19fSSVnuUfu845x+MXlVhLeHcLo\n9IIONonUJvkKPS90TQtB2spSqFd+MkiX3izPDii1kHfFHsl2CzwcdbxvcAZ742np\nMjDFpE4Zl6Nf28jGm6ODg6F/yZIiqWpvDemfnHfgkv1SFJnMpIAnLEIRnD5iZPRY\nvP9tJVxGo/kB7ogYLKboOtQyzQC5G6KIbkblJ+MjVcf5iQIUn5Ir7s91/7s6uVRT\nOY76S3SppFQltNwh1yW5s7Ppc9XR5cp0F37NfEm90g+r2JMH6da+Zd0zd+oG4JUJ\nGQWAIhvoOo2jjfX33GqxJI5QrhyVFQpIGs6WU3Z7uZou6/orDaEzAkedMC4w53aZ\nKmJevk2btsWRcGTYyJxf5GZ9HnUcDApcZ9QZ/9f7iIrGPTO4W6BJ9wzzc5PoenlD\noubhx9fofSIepk822gD/93fakRUJlYXKNvxJC8qXRn8CAwEAAaNCMEAwDwYDVR0T\nAQH/BAUwAwEB/zAdBgNVHQ4EFgQUbApE7vMSJDpJph7Lrq6rAMCwQF4wDgYDVR0P\nAQH/BAQDAgGGMA0GCSqGSIb3DQEBDAUAA4ICAQBSTbw8jIpZyAwQiJv5D6B9g4fX\n9PsTFTmb2eszZZZO/i0T8hbqAA3DmjjM5QqUdbjXiq4aLec04aH/ltc/12b6lypX\nsfhtUJd5rgVyEyi9VpZwL+3LrV8CC9rel1v1euOvQ+6ojsoU9PKVLSw5G1Owzy8x\npQwJU9ZTIMgz0TdlFUugaccLH54uy/c7FclO8HpOwHbwMtuMrsEt3p9vea7UoSn3\n54usb0p8ex2brMrOxKmLXXQOGoDFF8U5JCivdQaYuG7LO9NocaeyLNkc22MrxvhV\n1x3I1CE5Y1vMEqf0B8mMl2tAZ6l68r8qv1SoIrvm3ioZpdDBNkyyYVfRLpvmQBw4\nF0NQIW5wAumqbyHLRKMf/wmeuBwYjWrAeJdwDTsNVDPnhXpTOobKH432+i7v5U8n\n1dcrLdYwzRMXxY2+Wrmgte2JdsvfNkcDou9ZnjqTt8u5L7eFd5kWOLnZAWtsIef5\n2QzfKFjpbg9q/zt9RcNULAUaMB0twG1G6eO9stPElE2B0k3wM0FCTXfrh8v0FWEx\nZbnef3OwiiHHQ6EBHYvbZm0qwuYdBz8KtwurYwEUpgldls5hcj9eI3pDCjTzJncP\nGpVjJTtIE0CGOcAgIt5G6idQ1oQudW8DMb/M0QXibI5fjqEXYoYQEnjko9AqLdzI\npn++DGngGu3NLeSVfA==\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIICtjCCAj2gAwIBAgIQHBx4LmhvEVmG1P6tMGhI8DAKBggqhkjOPQQDAzCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGNuLW5vcnRod2VzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMCAXDTIxMDUyNTIzMDM1NVoYDzIxMjEwNTI2MDAwMzU1WjCBmzEL\nMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x\nEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTQwMgYDVQQDDCtBbWF6\nb24gUkRTIGNuLW5vcnRod2VzdC0xIFJvb3QgQ0EgRUNDMzg0IEcxMRAwDgYDVQQH\nDAdTZWF0dGxlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEJxUculiPchcuEWMgFK+T\njmYSVKrpF0NbDteKKJ45BbTzhwwCSKyEY3vVCqwMQ+wYiJZ87OyxLU1cqq/WCg3s\n7aD8Ro9DezvR+Fu+/AV61BLCgeSLr9S1ZCC6cpn5l0a4o0IwQDAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBSK4CT2IBuyX0nXmkC15OHfxtqh8zAOBgNVHQ8BAf8E\nBAMCAYYwCgYIKoZIzj0EAwMDZwAwZAIwQB38Wg42v48d5O1i53hg2qF/H0QW/8eO\n/xVtA8PK2ztDgQm+O0vKb34nj6X4Kcn8AjBSJmft8t7LMN/UwnhptyYINerpDMzZ\ng0OtBwn1QMWWlkFNf8ajLURXKGg9e2mfkpw=\n-----END CERTIFICATE-----\n", - "-----BEGIN CERTIFICATE-----\nMIIEIjCCAwqgAwIBAgIQI2AINKjtLFqXO+5mqmHJOzANBgkqhkiG9w0BAQsFADCB\nnDELMAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIElu\nYy4xEzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTUwMwYDVQQDDCxB\nbWF6b24gUkRTIGNuLW5vcnRod2VzdC0xIFJvb3QgQ0EgUlNBMjA0OCBHMTEQMA4G\nA1UEBwwHU2VhdHRsZTAeFw0yMTEwMjAyMjE5NTBaFw0yNjEwMjAyMzE5NTBaMIGU\nMQswCQYDVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGlu\nZ3RvbjEiMCAGA1UECgwZQW1hem9uIFdlYiBTZXJ2aWNlcywgSW5jLjETMBEGA1UE\nCwwKQW1hem9uIFJEUzElMCMGA1UEAwwcQW1hem9uIFJEUyBjbi1ub3J0aHdlc3Qt\nMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMk+1qHD+w3Wns8f\nWNs6ZKtd6r8eJSilT8SKdhuvZ77C2a5CRaWhihwTznGW1vCaR9+O4OIJZCJj3iV+\n75arKXK5XJTPNJo8aW5pW9ljh/KsudkT7gzURQ3n3xFiv9vQwPRSE9gPn20Cad8U\n64KPl20DvA1XD3CoaACafRz5BlZwGJAi6xI9DqdiQRGEcNlwBzMSv9E0MqkW9pDN\n+goGEkVyfLA83hUM58zXr7AwUEw7RH64rNZcoWYT89AVKvUQnyyEs6hZvIIVwTQm\nv/YpYEH3BsN/SshaQpmh1scN/aHurVfBn0ZaY2EaTBv/u1YsalhbnZglFX6581X7\n9UkEocECAwEAAaNmMGQwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBTX\n4eJfUNknv33QnNNfkDsrYrO1uzAdBgNVHQ4EFgQUfGOsnDYUtkLIlP6gKPd/lkbh\nsn4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4IBAQCxYKgzCB6gcrYi\n1op0n615lk/hLD5LEmpNYYgqtOOAPf7mGF1VLu+GtDmyAqRnQjr80hFO2Tvdv614\nu0D5joapjD+aAQIb+OeVVmXYPm3UfUotnUkHGalkofEWkS/7h/dUzKARBdpsKBP9\nezSf8GBVRd0EDP8PLK5iplX4B+aQxmIBgYNIXSlgjaNX8SfjzKsRiLPmumWrb7gi\nlbqkdRuafQ3hj6K+I2JbgEEz2ggNBgUiwJRr+2B511RWHu3wEW86aEbl0+f5crJA\nXNn0nVq3tl8XMkorbAD+/8dbxMxV5wtMHY7nWsG8TlJ+8Vb9FwC5vIWSYun8u3Rh\ntOoQ3GAy\n-----END CERTIFICATE-----\n" - ] + ca: awsCaBundle.ca }; } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/connection_config.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/connection_config.js var require_connection_config = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/connection_config.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/connection_config.js"(exports2, module2) { "use strict"; var { URL: URL2 } = require("url"); var ClientConstants = require_client(); @@ -17483,6 +16512,7 @@ var require_connection_config = __commonJS({ flags: 1, host: 1, insecureAuth: 1, + infileStreamFactory: 1, isServer: 1, keepAliveInitialDelay: 1, localAddress: 1, @@ -17517,7 +16547,8 @@ var require_connection_config = __commonJS({ idleTimeout: 1, Promise: 1, queueLimit: 1, - waitForConnections: 1 + waitForConnections: 1, + jsonStrings: 1 }; var _ConnectionConfig = class _ConnectionConfig { constructor(options) { @@ -17526,16 +16557,13 @@ var require_connection_config = __commonJS({ } else if (options && options.uri) { const uriOptions = _ConnectionConfig.parseUrl(options.uri); for (const key in uriOptions) { - if (!Object.prototype.hasOwnProperty.call(uriOptions, key)) - continue; - if (options[key]) - continue; + if (!Object.prototype.hasOwnProperty.call(uriOptions, key)) continue; + if (options[key]) continue; options[key] = uriOptions[key]; } } for (const key in options) { - if (!Object.prototype.hasOwnProperty.call(options, key)) - continue; + if (!Object.prototype.hasOwnProperty.call(options, key)) continue; if (validOptions[key] !== 1) { console.error( `Ignoring invalid configuration option passed to Connection: ${key}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection` @@ -17556,6 +16584,7 @@ var require_connection_config = __commonJS({ this.database = options.database; this.connectTimeout = isNaN(options.connectTimeout) ? 10 * 1e3 : options.connectTimeout; this.insecureAuth = options.insecureAuth || false; + this.infileStreamFactory = options.infileStreamFactory || void 0; this.supportBigNumbers = options.supportBigNumbers || false; this.bigNumberStrings = options.bigNumberStrings || false; this.decimalNumbers = options.decimalNumbers || false; @@ -17564,7 +16593,7 @@ var require_connection_config = __commonJS({ this.trace = options.trace !== false; this.stringifyObjects = options.stringifyObjects || false; this.enableKeepAlive = options.enableKeepAlive !== false; - this.keepAliveInitialDelay = options.keepAliveInitialDelay || 0; + this.keepAliveInitialDelay = options.keepAliveInitialDelay; if (options.timezone && !/^(?:local|Z|[ +-]\d\d:\d\d)$/.test(options.timezone)) { console.error( `Ignoring invalid timezone passed to Connection: ${options.timezone}. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an invalid configuration option to a Connection` @@ -17607,6 +16636,7 @@ var require_connection_config = __commonJS({ }; this.connectAttributes = { ...defaultConnectAttributes, ...options.connectAttributes || {} }; this.maxPreparedStatements = options.maxPreparedStatements || 16e3; + this.jsonStrings = options.jsonStrings || false; } static mergeFlags(default_flags, user_flags) { let flags = 0, i2; @@ -17676,11 +16706,11 @@ var require_connection_config = __commonJS({ static parseUrl(url) { const parsedUrl = new URL2(url); const options = { - host: parsedUrl.hostname, + host: decodeURIComponent(parsedUrl.hostname), port: parseInt(parsedUrl.port, 10), - database: parsedUrl.pathname.slice(1), - user: parsedUrl.username, - password: parsedUrl.password + database: decodeURIComponent(parsedUrl.pathname.slice(1)), + user: decodeURIComponent(parsedUrl.username), + password: decodeURIComponent(parsedUrl.password) }; parsedUrl.searchParams.forEach((value, key) => { try { @@ -17698,9 +16728,9 @@ var require_connection_config = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/connection.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/connection.js var require_connection = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/connection.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/connection.js"(exports2, module2) { "use strict"; var Net = require("net"); var Tls = require("tls"); @@ -17709,7 +16739,7 @@ var require_connection = __commonJS({ var Readable = require("stream").Readable; var Queue = require_denque(); var SqlString = require_sqlstring(); - var LRU = require_index_cjs().default; + var { createLRU } = require_lib(); var PacketParser = require_packet_parser(); var Packets = require_packets(); var Commands = require_commands2(); @@ -17745,11 +16775,11 @@ var require_connection = __commonJS({ this._command = null; this._paused = false; this._paused_packets = new Queue(); - this._statements = new LRU({ + this._statements = createLRU({ max: this.config.maxPreparedStatements, - dispose: function(statement) { + onEviction: /* @__PURE__ */ __name(function(_, statement) { statement.close(); - } + }, "onEviction") }); this.serverCapabilityFlags = 0; this.authorized = false; @@ -17903,12 +16933,12 @@ var require_connection = __commonJS({ this.stream.emit("pause"); } } - // https://dev.mysql.com/doc/internals/en/sequence-id.html + // http://dev.mysql.com/doc/internals/en/sequence-id.html // // The sequence-id is incremented with each packet and may wrap around. // It starts at 0 and is reset to 0 when a new command // begins in the Command Phase. - // https://dev.mysql.com/doc/internals/en/example-several-mysql-packets.html + // http://dev.mysql.com/doc/internals/en/example-several-mysql-packets.html _resetSequenceId() { this.sequenceId = 0; this.compressedSequenceId = 0; @@ -17928,23 +16958,23 @@ var require_connection = __commonJS({ if (length < MAX_PACKET_LENGTH) { packet.writeHeader(this.sequenceId); if (this.config.debug) { - // console.log( - // `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(",")})` - // ); - // console.log( - // `${this._internalId} ${this.connectionId} <== ${packet.buffer.toString("hex")}` - // ); + console.log( + `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(",")})` + ); + console.log( + `${this._internalId} ${this.connectionId} <== ${packet.buffer.toString("hex")}` + ); } this._bumpSequenceId(1); this.write(packet.buffer); } else { if (this.config.debug) { - // console.log( - // `${this._internalId} ${this.connectionId} <== Writing large packet, raw content not written:` - // ); - // console.log( - // `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(",")})` - // ); + console.log( + `${this._internalId} ${this.connectionId} <== Writing large packet, raw content not written:` + ); + console.log( + `${this._internalId} ${this.connectionId} <== ${this._command._commandName}#${this._command.stateName()}(${[this.sequenceId, packet._name, packet.length()].join(",")})` + ); } for (offset = 4; offset < 4 + length; offset += MAX_PACKET_LENGTH) { chunk = packet.buffer.slice(offset, offset + MAX_PACKET_LENGTH); @@ -17967,7 +16997,7 @@ var require_connection = __commonJS({ // 0.11+ environment startTLS(onSecure) { if (this.config.debug) { - // console.log("Upgrading connection to TLS"); + console.log("Upgrading connection to TLS"); } const secureContext = Tls.createSecureContext({ ca: this.config.ssl.ca, @@ -17986,6 +17016,9 @@ var require_connection = __commonJS({ const secureSocket = Tls.connect({ rejectUnauthorized, requestCert: rejectUnauthorized, + checkServerIdentity: verifyIdentity ? Tls.checkServerIdentity : function() { + return void 0; + }, secureContext, isServer: false, socket: this.stream, @@ -18035,15 +17068,15 @@ var require_connection = __commonJS({ } if (this.config.debug) { if (packet) { - // console.log( - // ` raw: ${packet.buffer.slice(packet.offset, packet.offset + packet.length()).toString("hex")}` - // ); + console.log( + ` raw: ${packet.buffer.slice(packet.offset, packet.offset + packet.length()).toString("hex")}` + ); console.trace(); const commandName = this._command ? this._command._commandName : "(no command)"; const stateName = this._command ? this._command.stateName() : "(no command)"; - // console.log( - // `${this._internalId} ${this.connectionId} ==> ${commandName}#${stateName}(${[packet.sequenceId, packet.type(), packet.length()].join(",")})` - // ); + console.log( + `${this._internalId} ${this.connectionId} ==> ${commandName}#${stateName}(${[packet.sequenceId, packet.type(), packet.length()].join(",")})` + ); } } if (!this._command) { @@ -18093,7 +17126,7 @@ var require_connection = __commonJS({ addCommand(cmd) { if (this.config.debug) { const commandName = cmd.constructor.name; - // console.log(`Add command: ${commandName}`); + console.log(`Add command: ${commandName}`); cmd._commandName = commandName; } if (!this._command) { @@ -18184,9 +17217,16 @@ var require_connection = __commonJS({ return stmt; } execute(sql, values, cb) { - let options = {}; + let options = { + infileStreamFactory: this.config.infileStreamFactory + }; if (typeof sql === "object") { - options = sql; + options = { + ...options, + ...sql, + sql: sql.sql, + values: sql.values + }; if (typeof values === "function") { cb = values; } else { @@ -18378,8 +17418,7 @@ var require_connection = __commonJS({ }); if (binary) { this.writeBinaryRow(arrayRow); - } else - this.writeTextRow(arrayRow); + } else this.writeTextRow(arrayRow); }); this.writeEof(); } @@ -18418,10 +17457,16 @@ var require_connection = __commonJS({ } static createQuery(sql, values, cb, config) { let options = { - rowsAsArray: config.rowsAsArray + rowsAsArray: config.rowsAsArray, + infileStreamFactory: config.infileStreamFactory }; if (typeof sql === "object") { - options = sql; + options = { + ...options, + ...sql, + sql: sql.sql, + values: sql.values + }; if (typeof values === "function") { cb = values; } else if (values !== void 0) { @@ -18447,9 +17492,9 @@ var require_connection = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_connection.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_connection.js var require_pool_connection = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_connection.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_connection.js"(exports2, module2) { "use strict"; var Connection = require_mysql2().Connection; var _PoolConnection = class _PoolConnection extends Connection { @@ -18504,9 +17549,9 @@ var require_pool_connection = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool.js var require_pool = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool.js"(exports2, module2) { "use strict"; var process2 = require("process"); var mysql = require_mysql2(); @@ -18594,6 +17639,7 @@ var require_pool = __commonJS({ } end(cb) { this._closed = true; + clearTimeout(this._removeIdleTimeoutConnectionsTimer); if (typeof cb !== "function") { cb = /* @__PURE__ */ __name(function(err) { if (err) { @@ -18648,7 +17694,7 @@ var require_pool = __commonJS({ }); } catch (e2) { conn.release(); - return cb(e2); + throw e2; } }); return cmdQuery; @@ -18683,7 +17729,7 @@ var require_pool = __commonJS({ } this._removeIdleTimeoutConnectionsTimer = setTimeout(() => { try { - while (this._freeConnections.length > this.config.maxIdle && Date.now() - this._freeConnections.get(0).lastActiveTime > this.config.idleTimeout) { + while (this._freeConnections.length > this.config.maxIdle || this._freeConnections.length > 0 && Date.now() - this._freeConnections.get(0).lastActiveTime > this.config.idleTimeout) { this._freeConnections.get(0).destroy(); } } finally { @@ -18711,14 +17757,14 @@ var require_pool = __commonJS({ } }; __name(_Pool, "Pool"); - var Pool2 = _Pool; - module2.exports = Pool2; + var Pool = _Pool; + module2.exports = Pool; } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_config.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_config.js var require_pool_config = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_config.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_config.js"(exports2, module2) { "use strict"; var ConnectionConfig = require_connection_config(); var _PoolConfig = class _PoolConfig { @@ -18740,12 +17786,12 @@ var require_pool_config = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_cluster.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_cluster.js var require_pool_cluster = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/pool_cluster.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/pool_cluster.js"(exports2, module2) { "use strict"; var process2 = require("process"); - var Pool2 = require_pool(); + var Pool = require_pool(); var PoolConfig = require_pool_config(); var Connection = require_connection(); var EventEmitter = require("events").EventEmitter; @@ -18883,7 +17929,7 @@ var require_pool_cluster = __commonJS({ this._nodes[id] = { id, errorCount: 0, - pool: new Pool2({ config: new PoolConfig(config) }) + pool: new Pool({ config: new PoolConfig(config) }) }; this._serviceableNodeIds.push(id); this._clearFindCaches(); @@ -18994,9 +18040,9 @@ var require_pool_cluster = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/server.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/server.js var require_server = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/server.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/server.js"(exports2, module2) { "use strict"; var net = require("net"); var EventEmitter = require("events").EventEmitter; @@ -19031,9 +18077,9 @@ var require_server = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/index.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/index.js var require_auth_plugins = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/lib/auth_plugins/index.js"(exports2, module2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/lib/auth_plugins/index.js"(exports2, module2) { "use strict"; module2.exports = { caching_sha2_password: require_caching_sha2_password(), @@ -19044,9 +18090,9 @@ var require_auth_plugins = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/index.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/index.js var require_mysql2 = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/index.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/index.js"(exports2) { "use strict"; var SqlString = require_sqlstring(); var Connection = require_connection(); @@ -19058,18 +18104,18 @@ var require_mysql2 = __commonJS({ exports2.connect = exports2.createConnection; exports2.Connection = Connection; exports2.ConnectionConfig = ConnectionConfig; - var Pool2 = require_pool(); + var Pool = require_pool(); var PoolCluster = require_pool_cluster(); exports2.createPool = function(config) { const PoolConfig = require_pool_config(); - return new Pool2({ config: new PoolConfig(config) }); + return new Pool({ config: new PoolConfig(config) }); }; exports2.createPoolCluster = function(config) { const PoolCluster2 = require_pool_cluster(); return new PoolCluster2(config); }; exports2.createQuery = Connection.createQuery; - exports2.Pool = Pool2; + exports2.Pool = Pool; exports2.PoolCluster = PoolCluster; exports2.createServer = function(handler) { const Server = require_server(); @@ -19115,9 +18161,9 @@ var require_mysql2 = __commonJS({ } }); -// node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/promise.js +// node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/promise.js var require_promise = __commonJS({ - "node_modules/.pnpm/mysql2@3.5.1/node_modules/mysql2/promise.js"(exports2) { + "node_modules/.pnpm/mysql2@3.11.3/node_modules/mysql2/promise.js"(exports2) { "use strict"; var core = require_mysql2(); var EventEmitter = require("events").EventEmitter; @@ -19433,8 +18479,7 @@ var require_promise = __commonJS({ }); } releaseConnection(connection) { - if (connection instanceof PromisePoolConnection) - connection.release(); + if (connection instanceof PromisePoolConnection) connection.release(); } query(sql, args) { const corePool = this.pool; @@ -19524,12 +18569,12 @@ var require_promise = __commonJS({ super(); this.poolCluster = poolCluster; this.Promise = thePromise || Promise; - inheritEvents(poolCluster, this, ["acquire", "connection", "enqueue", "release"]); + inheritEvents(poolCluster, this, ["warn", "remove"]); } - getConnection() { + getConnection(pattern, selector) { const corePoolCluster = this.poolCluster; return new this.Promise((resolve, reject) => { - corePoolCluster.getConnection((err, coreConnection) => { + corePoolCluster.getConnection(pattern, selector, (err, coreConnection) => { if (err) { reject(err); } else { @@ -19689,45 +18734,48 @@ var init_dist = __esm({ } }); -// node_modules/.pnpm/web-streams-polyfill@3.2.1/node_modules/web-streams-polyfill/dist/ponyfill.es2018.js +// node_modules/.pnpm/web-streams-polyfill@3.3.3/node_modules/web-streams-polyfill/dist/ponyfill.es2018.js var require_ponyfill_es2018 = __commonJS({ - "node_modules/.pnpm/web-streams-polyfill@3.2.1/node_modules/web-streams-polyfill/dist/ponyfill.es2018.js"(exports2, module2) { + "node_modules/.pnpm/web-streams-polyfill@3.3.3/node_modules/web-streams-polyfill/dist/ponyfill.es2018.js"(exports2, module2) { + /** + * @license + * web-streams-polyfill v3.3.3 + * Copyright 2024 Mattias Buelens, Diwank Singh Tomer and other contributors. + * This code is released under the MIT license. + * SPDX-License-Identifier: MIT + */ (function(global2, factory) { typeof exports2 === "object" && typeof module2 !== "undefined" ? factory(exports2) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, factory(global2.WebStreamsPolyfill = {})); })(exports2, function(exports3) { "use strict"; - const SymbolPolyfill = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol : (description) => `Symbol(${description})`; function noop2() { return void 0; } __name(noop2, "noop"); - function getGlobals() { - if (typeof self !== "undefined") { - return self; - } else if (typeof window !== "undefined") { - return window; - } else if (typeof global !== "undefined") { - return global; - } - return void 0; - } - __name(getGlobals, "getGlobals"); - const globals = getGlobals(); function typeIsObject(x2) { return typeof x2 === "object" && x2 !== null || typeof x2 === "function"; } __name(typeIsObject, "typeIsObject"); const rethrowAssertionErrorRejection = noop2; + function setFunctionName(fn, name) { + try { + Object.defineProperty(fn, "name", { + value: name, + configurable: true + }); + } catch (_a5) { + } + } + __name(setFunctionName, "setFunctionName"); const originalPromise = Promise; const originalPromiseThen = Promise.prototype.then; - const originalPromiseResolve = Promise.resolve.bind(originalPromise); const originalPromiseReject = Promise.reject.bind(originalPromise); function newPromise(executor) { return new originalPromise(executor); } __name(newPromise, "newPromise"); function promiseResolvedWith(value) { - return originalPromiseResolve(value); + return newPromise((resolve) => resolve(value)); } __name(promiseResolvedWith, "promiseResolvedWith"); function promiseRejectedWith(reason) { @@ -19758,14 +18806,15 @@ var require_ponyfill_es2018 = __commonJS({ PerformPromiseThen(promise, void 0, rethrowAssertionErrorRejection); } __name(setPromiseIsHandledToTrue, "setPromiseIsHandledToTrue"); - const queueMicrotask = (() => { - const globalQueueMicrotask = globals && globals.queueMicrotask; - if (typeof globalQueueMicrotask === "function") { - return globalQueueMicrotask; + let _queueMicrotask = /* @__PURE__ */ __name((callback) => { + if (typeof queueMicrotask === "function") { + _queueMicrotask = queueMicrotask; + } else { + const resolvedPromise = promiseResolvedWith(void 0); + _queueMicrotask = /* @__PURE__ */ __name((cb) => PerformPromiseThen(resolvedPromise, cb), "_queueMicrotask"); } - const resolvedPromise = promiseResolvedWith(void 0); - return (fn) => PerformPromiseThen(resolvedPromise, fn); - })(); + return _queueMicrotask(callback); + }, "_queueMicrotask"); function reflectCall(F2, V, args) { if (typeof F2 !== "function") { throw new TypeError("Argument is not a function"); @@ -19873,6 +18922,11 @@ var require_ponyfill_es2018 = __commonJS({ }; __name(_SimpleQueue, "SimpleQueue"); let SimpleQueue = _SimpleQueue; + const AbortSteps = Symbol("[[AbortSteps]]"); + const ErrorSteps = Symbol("[[ErrorSteps]]"); + const CancelSteps = Symbol("[[CancelSteps]]"); + const PullSteps = Symbol("[[PullSteps]]"); + const ReleaseSteps = Symbol("[[ReleaseSteps]]"); function ReadableStreamReaderGenericInitialize(reader, stream) { reader._ownerReadableStream = stream; stream._reader = reader; @@ -19891,12 +18945,14 @@ var require_ponyfill_es2018 = __commonJS({ } __name(ReadableStreamReaderGenericCancel, "ReadableStreamReaderGenericCancel"); function ReadableStreamReaderGenericRelease(reader) { - if (reader._ownerReadableStream._state === "readable") { + const stream = reader._ownerReadableStream; + if (stream._state === "readable") { defaultReaderClosedPromiseReject(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`)); } else { defaultReaderClosedPromiseResetToRejected(reader, new TypeError(`Reader was released and can no longer be used to monitor the stream's closedness`)); } - reader._ownerReadableStream._reader = void 0; + stream._readableStreamController[ReleaseSteps](); + stream._reader = void 0; reader._ownerReadableStream = void 0; } __name(ReadableStreamReaderGenericRelease, "ReadableStreamReaderGenericRelease"); @@ -19944,10 +19000,6 @@ var require_ponyfill_es2018 = __commonJS({ reader._closedPromise_reject = void 0; } __name(defaultReaderClosedPromiseResolve, "defaultReaderClosedPromiseResolve"); - const AbortSteps = SymbolPolyfill("[[AbortSteps]]"); - const ErrorSteps = SymbolPolyfill("[[ErrorSteps]]"); - const CancelSteps = SymbolPolyfill("[[CancelSteps]]"); - const PullSteps = SymbolPolyfill("[[PullSteps]]"); const NumberIsFinite = Number.isFinite || function(x2) { return typeof x2 === "number" && isFinite(x2); }; @@ -20112,9 +19164,9 @@ var require_ponyfill_es2018 = __commonJS({ rejectPromise = reject; }); const readRequest = { - _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }), - _closeSteps: () => resolvePromise({ value: void 0, done: true }), - _errorSteps: (e2) => rejectPromise(e2) + _chunkSteps: /* @__PURE__ */ __name((chunk) => resolvePromise({ value: chunk, done: false }), "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name(() => resolvePromise({ value: void 0, done: true }), "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name((e2) => rejectPromise(e2), "_errorSteps") }; ReadableStreamDefaultReaderRead(this, readRequest); return promise; @@ -20135,10 +19187,7 @@ var require_ponyfill_es2018 = __commonJS({ if (this._ownerReadableStream === void 0) { return; } - if (this._readRequests.length > 0) { - throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled"); - } - ReadableStreamReaderGenericRelease(this); + ReadableStreamDefaultReaderRelease(this); } }; __name(_ReadableStreamDefaultReader, "ReadableStreamDefaultReader"); @@ -20149,8 +19198,11 @@ var require_ponyfill_es2018 = __commonJS({ releaseLock: { enumerable: true }, closed: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableStreamDefaultReader.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableStreamDefaultReader.prototype.cancel, "cancel"); + setFunctionName(ReadableStreamDefaultReader.prototype.read, "read"); + setFunctionName(ReadableStreamDefaultReader.prototype.releaseLock, "releaseLock"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamDefaultReader.prototype, Symbol.toStringTag, { value: "ReadableStreamDefaultReader", configurable: true }); @@ -20177,6 +19229,20 @@ var require_ponyfill_es2018 = __commonJS({ } } __name(ReadableStreamDefaultReaderRead, "ReadableStreamDefaultReaderRead"); + function ReadableStreamDefaultReaderRelease(reader) { + ReadableStreamReaderGenericRelease(reader); + const e2 = new TypeError("Reader was released"); + ReadableStreamDefaultReaderErrorReadRequests(reader, e2); + } + __name(ReadableStreamDefaultReaderRelease, "ReadableStreamDefaultReaderRelease"); + function ReadableStreamDefaultReaderErrorReadRequests(reader, e2) { + const readRequests = reader._readRequests; + reader._readRequests = new SimpleQueue(); + readRequests.forEach((readRequest) => { + readRequest._errorSteps(e2); + }); + } + __name(ReadableStreamDefaultReaderErrorReadRequests, "ReadableStreamDefaultReaderErrorReadRequests"); function defaultReaderBrandCheckException(name) { return new TypeError(`ReadableStreamDefaultReader.prototype.${name} can only be used on a ReadableStreamDefaultReader`); } @@ -20204,9 +19270,6 @@ var require_ponyfill_es2018 = __commonJS({ return Promise.resolve({ value: void 0, done: true }); } const reader = this._reader; - if (reader._ownerReadableStream === void 0) { - return promiseRejectedWith(readerLockException("iterate")); - } let resolvePromise; let rejectPromise; const promise = newPromise((resolve, reject) => { @@ -20214,22 +19277,22 @@ var require_ponyfill_es2018 = __commonJS({ rejectPromise = reject; }); const readRequest = { - _chunkSteps: (chunk) => { + _chunkSteps: /* @__PURE__ */ __name((chunk) => { this._ongoingPromise = void 0; - queueMicrotask(() => resolvePromise({ value: chunk, done: false })); - }, - _closeSteps: () => { + _queueMicrotask(() => resolvePromise({ value: chunk, done: false })); + }, "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name(() => { this._ongoingPromise = void 0; this._isFinished = true; ReadableStreamReaderGenericRelease(reader); resolvePromise({ value: void 0, done: true }); - }, - _errorSteps: (reason) => { + }, "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name((reason) => { this._ongoingPromise = void 0; this._isFinished = true; ReadableStreamReaderGenericRelease(reader); rejectPromise(reason); - } + }, "_errorSteps") }; ReadableStreamDefaultReaderRead(reader, readRequest); return promise; @@ -20240,9 +19303,6 @@ var require_ponyfill_es2018 = __commonJS({ } this._isFinished = true; const reader = this._reader; - if (reader._ownerReadableStream === void 0) { - return promiseRejectedWith(readerLockException("finish iterating")); - } if (!this._preventCancel) { const result = ReadableStreamReaderGenericCancel(reader, value); ReadableStreamReaderGenericRelease(reader); @@ -20268,9 +19328,7 @@ var require_ponyfill_es2018 = __commonJS({ return this._asyncIteratorImpl.return(value); } }; - if (AsyncIteratorPrototype !== void 0) { - Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype); - } + Object.setPrototypeOf(ReadableStreamAsyncIteratorPrototype, AsyncIteratorPrototype); function AcquireReadableStreamAsyncIterator(stream, preventCancel) { const reader = AcquireReadableStreamDefaultReader(stream); const impl = new ReadableStreamAsyncIteratorImpl(reader, preventCancel); @@ -20288,7 +19346,7 @@ var require_ponyfill_es2018 = __commonJS({ } try { return x2._asyncIteratorImpl instanceof ReadableStreamAsyncIteratorImpl; - } catch (_a4) { + } catch (_a5) { return false; } } @@ -20300,6 +19358,7 @@ var require_ponyfill_es2018 = __commonJS({ const NumberIsNaN = Number.isNaN || function(x2) { return x2 !== x2; }; + var _a4, _b, _c; function CreateArrayFromList(elements) { return elements.slice(); } @@ -20308,14 +19367,24 @@ var require_ponyfill_es2018 = __commonJS({ new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); } __name(CopyDataBlockBytes, "CopyDataBlockBytes"); - function TransferArrayBuffer(O) { - return O; - } - __name(TransferArrayBuffer, "TransferArrayBuffer"); - function IsDetachedBuffer(O) { - return false; - } - __name(IsDetachedBuffer, "IsDetachedBuffer"); + let TransferArrayBuffer = /* @__PURE__ */ __name((O) => { + if (typeof O.transfer === "function") { + TransferArrayBuffer = /* @__PURE__ */ __name((buffer) => buffer.transfer(), "TransferArrayBuffer"); + } else if (typeof structuredClone === "function") { + TransferArrayBuffer = /* @__PURE__ */ __name((buffer) => structuredClone(buffer, { transfer: [buffer] }), "TransferArrayBuffer"); + } else { + TransferArrayBuffer = /* @__PURE__ */ __name((buffer) => buffer, "TransferArrayBuffer"); + } + return TransferArrayBuffer(O); + }, "TransferArrayBuffer"); + let IsDetachedBuffer = /* @__PURE__ */ __name((O) => { + if (typeof O.detached === "boolean") { + IsDetachedBuffer = /* @__PURE__ */ __name((buffer) => buffer.detached, "IsDetachedBuffer"); + } else { + IsDetachedBuffer = /* @__PURE__ */ __name((buffer) => buffer.byteLength === 0, "IsDetachedBuffer"); + } + return IsDetachedBuffer(O); + }, "IsDetachedBuffer"); function ArrayBufferSlice(buffer, begin, end) { if (buffer.slice) { return buffer.slice(begin, end); @@ -20326,6 +19395,69 @@ var require_ponyfill_es2018 = __commonJS({ return slice; } __name(ArrayBufferSlice, "ArrayBufferSlice"); + function GetMethod(receiver, prop) { + const func = receiver[prop]; + if (func === void 0 || func === null) { + return void 0; + } + if (typeof func !== "function") { + throw new TypeError(`${String(prop)} is not a function`); + } + return func; + } + __name(GetMethod, "GetMethod"); + function CreateAsyncFromSyncIterator(syncIteratorRecord) { + const syncIterable = { + [Symbol.iterator]: () => syncIteratorRecord.iterator + }; + const asyncIterator = async function* () { + return yield* syncIterable; + }(); + const nextMethod = asyncIterator.next; + return { iterator: asyncIterator, nextMethod, done: false }; + } + __name(CreateAsyncFromSyncIterator, "CreateAsyncFromSyncIterator"); + const SymbolAsyncIterator = (_c = (_a4 = Symbol.asyncIterator) !== null && _a4 !== void 0 ? _a4 : (_b = Symbol.for) === null || _b === void 0 ? void 0 : _b.call(Symbol, "Symbol.asyncIterator")) !== null && _c !== void 0 ? _c : "@@asyncIterator"; + function GetIterator(obj, hint = "sync", method) { + if (method === void 0) { + if (hint === "async") { + method = GetMethod(obj, SymbolAsyncIterator); + if (method === void 0) { + const syncMethod = GetMethod(obj, Symbol.iterator); + const syncIteratorRecord = GetIterator(obj, "sync", syncMethod); + return CreateAsyncFromSyncIterator(syncIteratorRecord); + } + } else { + method = GetMethod(obj, Symbol.iterator); + } + } + if (method === void 0) { + throw new TypeError("The object is not iterable"); + } + const iterator = reflectCall(method, obj, []); + if (!typeIsObject(iterator)) { + throw new TypeError("The iterator method must return an object"); + } + const nextMethod = iterator.next; + return { iterator, nextMethod, done: false }; + } + __name(GetIterator, "GetIterator"); + function IteratorNext(iteratorRecord) { + const result = reflectCall(iteratorRecord.nextMethod, iteratorRecord.iterator, []); + if (!typeIsObject(result)) { + throw new TypeError("The iterator.next() method must return an object"); + } + return result; + } + __name(IteratorNext, "IteratorNext"); + function IteratorComplete(iterResult) { + return Boolean(iterResult.done); + } + __name(IteratorComplete, "IteratorComplete"); + function IteratorValue(iterResult) { + return iterResult.value; + } + __name(IteratorValue, "IteratorValue"); function IsNonNegativeNumber(v) { if (typeof v !== "number") { return false; @@ -20371,6 +19503,21 @@ var require_ponyfill_es2018 = __commonJS({ container._queueTotalSize = 0; } __name(ResetQueue, "ResetQueue"); + function isDataViewConstructor(ctor) { + return ctor === DataView; + } + __name(isDataViewConstructor, "isDataViewConstructor"); + function isDataView(view) { + return isDataViewConstructor(view.constructor); + } + __name(isDataView, "isDataView"); + function arrayBufferViewElementSize(ctor) { + if (isDataViewConstructor(ctor)) { + return 1; + } + return ctor.BYTES_PER_ELEMENT; + } + __name(arrayBufferViewElementSize, "arrayBufferViewElementSize"); const _ReadableStreamBYOBRequest = class _ReadableStreamBYOBRequest { constructor() { throw new TypeError("Illegal constructor"); @@ -20393,8 +19540,9 @@ var require_ponyfill_es2018 = __commonJS({ if (this._associatedReadableByteStreamController === void 0) { throw new TypeError("This BYOB request has been invalidated"); } - if (IsDetachedBuffer(this._view.buffer)) - ; + if (IsDetachedBuffer(this._view.buffer)) { + throw new TypeError(`The BYOB request's buffer has been detached and so cannot be used as a response`); + } ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); } respondWithNewView(view) { @@ -20408,8 +19556,9 @@ var require_ponyfill_es2018 = __commonJS({ if (this._associatedReadableByteStreamController === void 0) { throw new TypeError("This BYOB request has been invalidated"); } - if (IsDetachedBuffer(view.buffer)) - ; + if (IsDetachedBuffer(view.buffer)) { + throw new TypeError("The given view's buffer has been detached and so cannot be used as a response"); + } ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); } }; @@ -20420,8 +19569,10 @@ var require_ponyfill_es2018 = __commonJS({ respondWithNewView: { enumerable: true }, view: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableStreamBYOBRequest.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableStreamBYOBRequest.prototype.respond, "respond"); + setFunctionName(ReadableStreamBYOBRequest.prototype.respondWithNewView, "respondWithNewView"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamBYOBRequest.prototype, Symbol.toStringTag, { value: "ReadableStreamBYOBRequest", configurable: true }); @@ -20510,11 +19661,7 @@ var require_ponyfill_es2018 = __commonJS({ [PullSteps](readRequest) { const stream = this._controlledReadableByteStream; if (this._queueTotalSize > 0) { - const entry = this._queue.shift(); - this._queueTotalSize -= entry.byteLength; - ReadableByteStreamControllerHandleQueueDrain(this); - const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); - readRequest._chunkSteps(view); + ReadableByteStreamControllerFillReadRequestFromQueue(this, readRequest); return; } const autoAllocateChunkSize = this._autoAllocateChunkSize; @@ -20532,6 +19679,7 @@ var require_ponyfill_es2018 = __commonJS({ byteOffset: 0, byteLength: autoAllocateChunkSize, bytesFilled: 0, + minimumFill: 1, elementSize: 1, viewConstructor: Uint8Array, readerType: "default" @@ -20541,6 +19689,15 @@ var require_ponyfill_es2018 = __commonJS({ ReadableStreamAddReadRequest(stream, readRequest); ReadableByteStreamControllerCallPullIfNeeded(this); } + /** @internal */ + [ReleaseSteps]() { + if (this._pendingPullIntos.length > 0) { + const firstPullInto = this._pendingPullIntos.peek(); + firstPullInto.readerType = "none"; + this._pendingPullIntos = new SimpleQueue(); + this._pendingPullIntos.push(firstPullInto); + } + } }; __name(_ReadableByteStreamController, "ReadableByteStreamController"); let ReadableByteStreamController = _ReadableByteStreamController; @@ -20551,8 +19708,11 @@ var require_ponyfill_es2018 = __commonJS({ byobRequest: { enumerable: true }, desiredSize: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableByteStreamController.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableByteStreamController.prototype.close, "close"); + setFunctionName(ReadableByteStreamController.prototype.enqueue, "enqueue"); + setFunctionName(ReadableByteStreamController.prototype.error, "error"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableByteStreamController.prototype, Symbol.toStringTag, { value: "ReadableByteStreamController", configurable: true }); @@ -20594,8 +19754,10 @@ var require_ponyfill_es2018 = __commonJS({ controller._pullAgain = false; ReadableByteStreamControllerCallPullIfNeeded(controller); } + return null; }, (e2) => { ReadableByteStreamControllerError(controller, e2); + return null; }); } __name(ReadableByteStreamControllerCallPullIfNeeded, "ReadableByteStreamControllerCallPullIfNeeded"); @@ -20628,15 +19790,32 @@ var require_ponyfill_es2018 = __commonJS({ controller._queueTotalSize += byteLength; } __name(ReadableByteStreamControllerEnqueueChunkToQueue, "ReadableByteStreamControllerEnqueueChunkToQueue"); + function ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, buffer, byteOffset, byteLength) { + let clonedChunk; + try { + clonedChunk = ArrayBufferSlice(buffer, byteOffset, byteOffset + byteLength); + } catch (cloneE) { + ReadableByteStreamControllerError(controller, cloneE); + throw cloneE; + } + ReadableByteStreamControllerEnqueueChunkToQueue(controller, clonedChunk, 0, byteLength); + } + __name(ReadableByteStreamControllerEnqueueClonedChunkToQueue, "ReadableByteStreamControllerEnqueueClonedChunkToQueue"); + function ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstDescriptor) { + if (firstDescriptor.bytesFilled > 0) { + ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, firstDescriptor.buffer, firstDescriptor.byteOffset, firstDescriptor.bytesFilled); + } + ReadableByteStreamControllerShiftPendingPullInto(controller); + } + __name(ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue, "ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue"); function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { - const elementSize = pullIntoDescriptor.elementSize; - const currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; const maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); const maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; - const maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; let totalBytesToCopyRemaining = maxBytesToCopy; let ready = false; - if (maxAlignedBytes > currentAlignedBytes) { + const remainderBytes = maxBytesFilled % pullIntoDescriptor.elementSize; + const maxAlignedBytes = maxBytesFilled - remainderBytes; + if (maxAlignedBytes >= pullIntoDescriptor.minimumFill) { totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; ready = true; } @@ -20694,20 +19873,37 @@ var require_ponyfill_es2018 = __commonJS({ } } __name(ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue, "ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue"); - function ReadableByteStreamControllerPullInto(controller, view, readIntoRequest) { - const stream = controller._controlledReadableByteStream; - let elementSize = 1; - if (view.constructor !== DataView) { - elementSize = view.constructor.BYTES_PER_ELEMENT; + function ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller) { + const reader = controller._controlledReadableByteStream._reader; + while (reader._readRequests.length > 0) { + if (controller._queueTotalSize === 0) { + return; + } + const readRequest = reader._readRequests.shift(); + ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest); } + } + __name(ReadableByteStreamControllerProcessReadRequestsUsingQueue, "ReadableByteStreamControllerProcessReadRequestsUsingQueue"); + function ReadableByteStreamControllerPullInto(controller, view, min, readIntoRequest) { + const stream = controller._controlledReadableByteStream; const ctor = view.constructor; - const buffer = TransferArrayBuffer(view.buffer); + const elementSize = arrayBufferViewElementSize(ctor); + const { byteOffset, byteLength } = view; + const minimumFill = min * elementSize; + let buffer; + try { + buffer = TransferArrayBuffer(view.buffer); + } catch (e2) { + readIntoRequest._errorSteps(e2); + return; + } const pullIntoDescriptor = { buffer, bufferByteLength: buffer.byteLength, - byteOffset: view.byteOffset, - byteLength: view.byteLength, + byteOffset, + byteLength, bytesFilled: 0, + minimumFill, elementSize, viewConstructor: ctor, readerType: "byob" @@ -20742,6 +19938,9 @@ var require_ponyfill_es2018 = __commonJS({ } __name(ReadableByteStreamControllerPullInto, "ReadableByteStreamControllerPullInto"); function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { + if (firstDescriptor.readerType === "none") { + ReadableByteStreamControllerShiftPendingPullInto(controller); + } const stream = controller._controlledReadableByteStream; if (ReadableStreamHasBYOBReader(stream)) { while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { @@ -20753,15 +19952,19 @@ var require_ponyfill_es2018 = __commonJS({ __name(ReadableByteStreamControllerRespondInClosedState, "ReadableByteStreamControllerRespondInClosedState"); function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); - if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { + if (pullIntoDescriptor.readerType === "none") { + ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, pullIntoDescriptor); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + return; + } + if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.minimumFill) { return; } ReadableByteStreamControllerShiftPendingPullInto(controller); const remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; if (remainderSize > 0) { const end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; - const remainder = ArrayBufferSlice(pullIntoDescriptor.buffer, end - remainderSize, end); - ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); + ReadableByteStreamControllerEnqueueClonedChunkToQueue(controller, pullIntoDescriptor.buffer, end - remainderSize, remainderSize); } pullIntoDescriptor.bytesFilled -= remainderSize; ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableByteStream, pullIntoDescriptor); @@ -20773,7 +19976,7 @@ var require_ponyfill_es2018 = __commonJS({ ReadableByteStreamControllerInvalidateBYOBRequest(controller); const state = controller._controlledReadableByteStream._state; if (state === "closed") { - ReadableByteStreamControllerRespondInClosedState(controller); + ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); } else { ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); } @@ -20825,7 +20028,7 @@ var require_ponyfill_es2018 = __commonJS({ } if (controller._pendingPullIntos.length > 0) { const firstPendingPullInto = controller._pendingPullIntos.peek(); - if (firstPendingPullInto.bytesFilled > 0) { + if (firstPendingPullInto.bytesFilled % firstPendingPullInto.elementSize !== 0) { const e2 = new TypeError("Insufficient bytes to fill elements in the given buffer"); ReadableByteStreamControllerError(controller, e2); throw e2; @@ -20840,18 +20043,24 @@ var require_ponyfill_es2018 = __commonJS({ if (controller._closeRequested || stream._state !== "readable") { return; } - const buffer = chunk.buffer; - const byteOffset = chunk.byteOffset; - const byteLength = chunk.byteLength; + const { buffer, byteOffset, byteLength } = chunk; + if (IsDetachedBuffer(buffer)) { + throw new TypeError("chunk's buffer is detached and so cannot be enqueued"); + } const transferredBuffer = TransferArrayBuffer(buffer); if (controller._pendingPullIntos.length > 0) { const firstPendingPullInto = controller._pendingPullIntos.peek(); - if (IsDetachedBuffer(firstPendingPullInto.buffer)) - ; + if (IsDetachedBuffer(firstPendingPullInto.buffer)) { + throw new TypeError("The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk"); + } + ReadableByteStreamControllerInvalidateBYOBRequest(controller); firstPendingPullInto.buffer = TransferArrayBuffer(firstPendingPullInto.buffer); + if (firstPendingPullInto.readerType === "none") { + ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue(controller, firstPendingPullInto); + } } - ReadableByteStreamControllerInvalidateBYOBRequest(controller); if (ReadableStreamHasDefaultReader(stream)) { + ReadableByteStreamControllerProcessReadRequestsUsingQueue(controller); if (ReadableStreamGetNumReadRequests(stream) === 0) { ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); } else { @@ -20881,6 +20090,14 @@ var require_ponyfill_es2018 = __commonJS({ ReadableStreamError(stream, e2); } __name(ReadableByteStreamControllerError, "ReadableByteStreamControllerError"); + function ReadableByteStreamControllerFillReadRequestFromQueue(controller, readRequest) { + const entry = controller._queue.shift(); + controller._queueTotalSize -= entry.byteLength; + ReadableByteStreamControllerHandleQueueDrain(controller); + const view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); + readRequest._chunkSteps(view); + } + __name(ReadableByteStreamControllerFillReadRequestFromQueue, "ReadableByteStreamControllerFillReadRequestFromQueue"); function ReadableByteStreamControllerGetBYOBRequest(controller) { if (controller._byobRequest === null && controller._pendingPullIntos.length > 0) { const firstDescriptor = controller._pendingPullIntos.peek(); @@ -20967,24 +20184,32 @@ var require_ponyfill_es2018 = __commonJS({ uponPromise(promiseResolvedWith(startResult), () => { controller._started = true; ReadableByteStreamControllerCallPullIfNeeded(controller); + return null; }, (r2) => { ReadableByteStreamControllerError(controller, r2); + return null; }); } __name(SetUpReadableByteStreamController, "SetUpReadableByteStreamController"); function SetUpReadableByteStreamControllerFromUnderlyingSource(stream, underlyingByteSource, highWaterMark) { const controller = Object.create(ReadableByteStreamController.prototype); - let startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); - let pullAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "pullAlgorithm"); - let cancelAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "cancelAlgorithm"); + let startAlgorithm; + let pullAlgorithm; + let cancelAlgorithm; if (underlyingByteSource.start !== void 0) { startAlgorithm = /* @__PURE__ */ __name(() => underlyingByteSource.start(controller), "startAlgorithm"); + } else { + startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); } if (underlyingByteSource.pull !== void 0) { pullAlgorithm = /* @__PURE__ */ __name(() => underlyingByteSource.pull(controller), "pullAlgorithm"); + } else { + pullAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "pullAlgorithm"); } if (underlyingByteSource.cancel !== void 0) { cancelAlgorithm = /* @__PURE__ */ __name((reason) => underlyingByteSource.cancel(reason), "cancelAlgorithm"); + } else { + cancelAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "cancelAlgorithm"); } const autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; if (autoAllocateChunkSize === 0) { @@ -21006,6 +20231,31 @@ var require_ponyfill_es2018 = __commonJS({ return new TypeError(`ReadableByteStreamController.prototype.${name} can only be used on a ReadableByteStreamController`); } __name(byteStreamControllerBrandCheckException, "byteStreamControllerBrandCheckException"); + function convertReaderOptions(options, context) { + assertDictionary(options, context); + const mode = options === null || options === void 0 ? void 0 : options.mode; + return { + mode: mode === void 0 ? void 0 : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`) + }; + } + __name(convertReaderOptions, "convertReaderOptions"); + function convertReadableStreamReaderMode(mode, context) { + mode = `${mode}`; + if (mode !== "byob") { + throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`); + } + return mode; + } + __name(convertReadableStreamReaderMode, "convertReadableStreamReaderMode"); + function convertByobReadOptions(options, context) { + var _a5; + assertDictionary(options, context); + const min = (_a5 = options === null || options === void 0 ? void 0 : options.min) !== null && _a5 !== void 0 ? _a5 : 1; + return { + min: convertUnsignedLongLongWithEnforceRange(min, `${context} has member 'min' that`) + }; + } + __name(convertByobReadOptions, "convertByobReadOptions"); function AcquireReadableStreamBYOBReader(stream) { return new ReadableStreamBYOBReader(stream); } @@ -21074,12 +20324,7 @@ var require_ponyfill_es2018 = __commonJS({ } return ReadableStreamReaderGenericCancel(this, reason); } - /** - * Attempts to reads bytes into view, and returns a promise resolved with the result. - * - * If reading a chunk causes the queue to become empty, more data will be pulled from the underlying source. - */ - read(view) { + read(view, rawOptions = {}) { if (!IsReadableStreamBYOBReader(this)) { return promiseRejectedWith(byobReaderBrandCheckException("read")); } @@ -21092,8 +20337,26 @@ var require_ponyfill_es2018 = __commonJS({ if (view.buffer.byteLength === 0) { return promiseRejectedWith(new TypeError(`view's buffer must have non-zero byteLength`)); } - if (IsDetachedBuffer(view.buffer)) - ; + if (IsDetachedBuffer(view.buffer)) { + return promiseRejectedWith(new TypeError("view's buffer has been detached")); + } + let options; + try { + options = convertByobReadOptions(rawOptions, "options"); + } catch (e2) { + return promiseRejectedWith(e2); + } + const min = options.min; + if (min === 0) { + return promiseRejectedWith(new TypeError("options.min must be greater than 0")); + } + if (!isDataView(view)) { + if (min > view.length) { + return promiseRejectedWith(new RangeError("options.min must be less than or equal to view's length")); + } + } else if (min > view.byteLength) { + return promiseRejectedWith(new RangeError("options.min must be less than or equal to view's byteLength")); + } if (this._ownerReadableStream === void 0) { return promiseRejectedWith(readerLockException("read from")); } @@ -21104,11 +20367,11 @@ var require_ponyfill_es2018 = __commonJS({ rejectPromise = reject; }); const readIntoRequest = { - _chunkSteps: (chunk) => resolvePromise({ value: chunk, done: false }), - _closeSteps: (chunk) => resolvePromise({ value: chunk, done: true }), - _errorSteps: (e2) => rejectPromise(e2) + _chunkSteps: /* @__PURE__ */ __name((chunk) => resolvePromise({ value: chunk, done: false }), "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name((chunk) => resolvePromise({ value: chunk, done: true }), "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name((e2) => rejectPromise(e2), "_errorSteps") }; - ReadableStreamBYOBReaderRead(this, view, readIntoRequest); + ReadableStreamBYOBReaderRead(this, view, min, readIntoRequest); return promise; } /** @@ -21127,10 +20390,7 @@ var require_ponyfill_es2018 = __commonJS({ if (this._ownerReadableStream === void 0) { return; } - if (this._readIntoRequests.length > 0) { - throw new TypeError("Tried to release a reader lock when that reader has pending read() calls un-settled"); - } - ReadableStreamReaderGenericRelease(this); + ReadableStreamBYOBReaderRelease(this); } }; __name(_ReadableStreamBYOBReader, "ReadableStreamBYOBReader"); @@ -21141,8 +20401,11 @@ var require_ponyfill_es2018 = __commonJS({ releaseLock: { enumerable: true }, closed: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableStreamBYOBReader.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableStreamBYOBReader.prototype.cancel, "cancel"); + setFunctionName(ReadableStreamBYOBReader.prototype.read, "read"); + setFunctionName(ReadableStreamBYOBReader.prototype.releaseLock, "releaseLock"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamBYOBReader.prototype, Symbol.toStringTag, { value: "ReadableStreamBYOBReader", configurable: true }); @@ -21157,16 +20420,30 @@ var require_ponyfill_es2018 = __commonJS({ return x2 instanceof ReadableStreamBYOBReader; } __name(IsReadableStreamBYOBReader, "IsReadableStreamBYOBReader"); - function ReadableStreamBYOBReaderRead(reader, view, readIntoRequest) { + function ReadableStreamBYOBReaderRead(reader, view, min, readIntoRequest) { const stream = reader._ownerReadableStream; stream._disturbed = true; if (stream._state === "errored") { readIntoRequest._errorSteps(stream._storedError); } else { - ReadableByteStreamControllerPullInto(stream._readableStreamController, view, readIntoRequest); + ReadableByteStreamControllerPullInto(stream._readableStreamController, view, min, readIntoRequest); } } __name(ReadableStreamBYOBReaderRead, "ReadableStreamBYOBReaderRead"); + function ReadableStreamBYOBReaderRelease(reader) { + ReadableStreamReaderGenericRelease(reader); + const e2 = new TypeError("Reader was released"); + ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2); + } + __name(ReadableStreamBYOBReaderRelease, "ReadableStreamBYOBReaderRelease"); + function ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2) { + const readIntoRequests = reader._readIntoRequests; + reader._readIntoRequests = new SimpleQueue(); + readIntoRequests.forEach((readIntoRequest) => { + readIntoRequest._errorSteps(e2); + }); + } + __name(ReadableStreamBYOBReaderErrorReadIntoRequests, "ReadableStreamBYOBReaderErrorReadIntoRequests"); function byobReaderBrandCheckException(name) { return new TypeError(`ReadableStreamBYOBReader.prototype.${name} can only be used on a ReadableStreamBYOBReader`); } @@ -21253,7 +20530,7 @@ var require_ponyfill_es2018 = __commonJS({ } try { return typeof value.aborted === "boolean"; - } catch (_a4) { + } catch (_a5) { return false; } } @@ -21354,8 +20631,11 @@ var require_ponyfill_es2018 = __commonJS({ getWriter: { enumerable: true }, locked: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(WritableStream.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(WritableStream.prototype.abort, "abort"); + setFunctionName(WritableStream.prototype.close, "close"); + setFunctionName(WritableStream.prototype.getWriter, "getWriter"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStream.prototype, Symbol.toStringTag, { value: "WritableStream", configurable: true }); @@ -21403,12 +20683,12 @@ var require_ponyfill_es2018 = __commonJS({ } __name(IsWritableStreamLocked, "IsWritableStreamLocked"); function WritableStreamAbort(stream, reason) { - var _a4; + var _a5; if (stream._state === "closed" || stream._state === "errored") { return promiseResolvedWith(void 0); } stream._writableStreamController._abortReason = reason; - (_a4 = stream._writableStreamController._abortController) === null || _a4 === void 0 ? void 0 : _a4.abort(); + (_a5 = stream._writableStreamController._abortController) === null || _a5 === void 0 ? void 0 : _a5.abort(reason); const state = stream._state; if (state === "closed" || state === "errored") { return promiseResolvedWith(void 0); @@ -21513,9 +20793,11 @@ var require_ponyfill_es2018 = __commonJS({ uponPromise(promise, () => { abortRequest._resolve(); WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return null; }, (reason) => { abortRequest._reject(reason); WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return null; }); } __name(WritableStreamFinishErroring, "WritableStreamFinishErroring"); @@ -21743,8 +21025,12 @@ var require_ponyfill_es2018 = __commonJS({ desiredSize: { enumerable: true }, ready: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(WritableStreamDefaultWriter.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(WritableStreamDefaultWriter.prototype.abort, "abort"); + setFunctionName(WritableStreamDefaultWriter.prototype.close, "close"); + setFunctionName(WritableStreamDefaultWriter.prototype.releaseLock, "releaseLock"); + setFunctionName(WritableStreamDefaultWriter.prototype.write, "write"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStreamDefaultWriter.prototype, Symbol.toStringTag, { value: "WritableStreamDefaultWriter", configurable: true }); @@ -21905,8 +21191,8 @@ var require_ponyfill_es2018 = __commonJS({ signal: { enumerable: true }, error: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(WritableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(WritableStreamDefaultController.prototype, Symbol.toStringTag, { value: "WritableStreamDefaultController", configurable: true }); @@ -21942,29 +21228,39 @@ var require_ponyfill_es2018 = __commonJS({ uponPromise(startPromise, () => { controller._started = true; WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + return null; }, (r2) => { controller._started = true; WritableStreamDealWithRejection(stream, r2); + return null; }); } __name(SetUpWritableStreamDefaultController, "SetUpWritableStreamDefaultController"); function SetUpWritableStreamDefaultControllerFromUnderlyingSink(stream, underlyingSink, highWaterMark, sizeAlgorithm) { const controller = Object.create(WritableStreamDefaultController.prototype); - let startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); - let writeAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "writeAlgorithm"); - let closeAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "closeAlgorithm"); - let abortAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "abortAlgorithm"); + let startAlgorithm; + let writeAlgorithm; + let closeAlgorithm; + let abortAlgorithm; if (underlyingSink.start !== void 0) { startAlgorithm = /* @__PURE__ */ __name(() => underlyingSink.start(controller), "startAlgorithm"); + } else { + startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); } if (underlyingSink.write !== void 0) { writeAlgorithm = /* @__PURE__ */ __name((chunk) => underlyingSink.write(chunk, controller), "writeAlgorithm"); + } else { + writeAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "writeAlgorithm"); } if (underlyingSink.close !== void 0) { closeAlgorithm = /* @__PURE__ */ __name(() => underlyingSink.close(), "closeAlgorithm"); + } else { + closeAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "closeAlgorithm"); } if (underlyingSink.abort !== void 0) { abortAlgorithm = /* @__PURE__ */ __name((reason) => underlyingSink.abort(reason), "abortAlgorithm"); + } else { + abortAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "abortAlgorithm"); } SetUpWritableStreamDefaultController(stream, controller, startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, highWaterMark, sizeAlgorithm); } @@ -22047,8 +21343,10 @@ var require_ponyfill_es2018 = __commonJS({ WritableStreamDefaultControllerClearAlgorithms(controller); uponPromise(sinkClosePromise, () => { WritableStreamFinishInFlightClose(stream); + return null; }, (reason) => { WritableStreamFinishInFlightCloseWithError(stream, reason); + return null; }); } __name(WritableStreamDefaultControllerProcessClose, "WritableStreamDefaultControllerProcessClose"); @@ -22065,11 +21363,13 @@ var require_ponyfill_es2018 = __commonJS({ WritableStreamUpdateBackpressure(stream, backpressure); } WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + return null; }, (reason) => { if (stream._state === "writable") { WritableStreamDefaultControllerClearAlgorithms(controller); } WritableStreamFinishInFlightWriteWithError(stream, reason); + return null; }); } __name(WritableStreamDefaultControllerProcessWrite, "WritableStreamDefaultControllerProcessWrite"); @@ -22190,20 +21490,39 @@ var require_ponyfill_es2018 = __commonJS({ writer._readyPromiseState = "fulfilled"; } __name(defaultWriterReadyPromiseResolve, "defaultWriterReadyPromiseResolve"); - const NativeDOMException = typeof DOMException !== "undefined" ? DOMException : void 0; + function getGlobals() { + if (typeof globalThis !== "undefined") { + return globalThis; + } else if (typeof self !== "undefined") { + return self; + } else if (typeof global !== "undefined") { + return global; + } + return void 0; + } + __name(getGlobals, "getGlobals"); + const globals = getGlobals(); function isDOMExceptionConstructor(ctor) { if (!(typeof ctor === "function" || typeof ctor === "object")) { return false; } + if (ctor.name !== "DOMException") { + return false; + } try { new ctor(); return true; - } catch (_a4) { + } catch (_a5) { return false; } } __name(isDOMExceptionConstructor, "isDOMExceptionConstructor"); - function createDOMExceptionPolyfill() { + function getFromGlobal() { + const ctor = globals === null || globals === void 0 ? void 0 : globals.DOMException; + return isDOMExceptionConstructor(ctor) ? ctor : void 0; + } + __name(getFromGlobal, "getFromGlobal"); + function createPolyfill() { const ctor = /* @__PURE__ */ __name(function DOMException3(message, name) { this.message = message || ""; this.name = name || "Error"; @@ -22211,12 +21530,13 @@ var require_ponyfill_es2018 = __commonJS({ Error.captureStackTrace(this, this.constructor); } }, "DOMException"); + setFunctionName(ctor, "DOMException"); ctor.prototype = Object.create(Error.prototype); Object.defineProperty(ctor.prototype, "constructor", { value: ctor, writable: true, configurable: true }); return ctor; } - __name(createDOMExceptionPolyfill, "createDOMExceptionPolyfill"); - const DOMException$1 = isDOMExceptionConstructor(NativeDOMException) ? NativeDOMException : createDOMExceptionPolyfill(); + __name(createPolyfill, "createPolyfill"); + const DOMException2 = getFromGlobal() || createPolyfill(); function ReadableStreamPipeTo(source2, dest, preventClose, preventAbort, preventCancel, signal) { const reader = AcquireReadableStreamDefaultReader(source2); const writer = AcquireWritableStreamDefaultWriter(dest); @@ -22227,7 +21547,7 @@ var require_ponyfill_es2018 = __commonJS({ let abortAlgorithm; if (signal !== void 0) { abortAlgorithm = /* @__PURE__ */ __name(() => { - const error = new DOMException$1("Aborted", "AbortError"); + const error = signal.reason !== void 0 ? signal.reason : new DOMException2("Aborted", "AbortError"); const actions = []; if (!preventAbort) { actions.push(() => { @@ -22274,11 +21594,11 @@ var require_ponyfill_es2018 = __commonJS({ return PerformPromiseThen(writer._readyPromise, () => { return newPromise((resolveRead, rejectRead) => { ReadableStreamDefaultReaderRead(reader, { - _chunkSteps: (chunk) => { + _chunkSteps: /* @__PURE__ */ __name((chunk) => { currentWrite = PerformPromiseThen(WritableStreamDefaultWriterWrite(writer, chunk), void 0, noop2); resolveRead(false); - }, - _closeSteps: () => resolveRead(true), + }, "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name(() => resolveRead(true), "_closeSteps"), _errorSteps: rejectRead }); }); @@ -22291,6 +21611,7 @@ var require_ponyfill_es2018 = __commonJS({ } else { shutdown(true, storedError); } + return null; }); isOrBecomesErrored(dest, writer._closedPromise, (storedError) => { if (!preventCancel) { @@ -22298,6 +21619,7 @@ var require_ponyfill_es2018 = __commonJS({ } else { shutdown(true, storedError); } + return null; }); isOrBecomesClosed(source2, reader._closedPromise, () => { if (!preventClose) { @@ -22305,6 +21627,7 @@ var require_ponyfill_es2018 = __commonJS({ } else { shutdown(); } + return null; }); if (WritableStreamCloseQueuedOrInFlight(dest) || dest._state === "closed") { const destClosed = new TypeError("the destination writable stream closed before all data could be piped to it"); @@ -22348,6 +21671,7 @@ var require_ponyfill_es2018 = __commonJS({ } function doTheRest() { uponPromise(action(), () => finalize(originalIsError, originalError), (newError) => finalize(true, newError)); + return null; } __name(doTheRest, "doTheRest"); } @@ -22375,6 +21699,7 @@ var require_ponyfill_es2018 = __commonJS({ } else { resolve(void 0); } + return null; } __name(finalize, "finalize"); }); @@ -22449,6 +21774,9 @@ var require_ponyfill_es2018 = __commonJS({ ReadableStreamDefaultControllerCallPullIfNeeded(this); } } + /** @internal */ + [ReleaseSteps]() { + } }; __name(_ReadableStreamDefaultController, "ReadableStreamDefaultController"); let ReadableStreamDefaultController = _ReadableStreamDefaultController; @@ -22458,8 +21786,11 @@ var require_ponyfill_es2018 = __commonJS({ error: { enumerable: true }, desiredSize: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableStreamDefaultController.prototype.close, "close"); + setFunctionName(ReadableStreamDefaultController.prototype.enqueue, "enqueue"); + setFunctionName(ReadableStreamDefaultController.prototype.error, "error"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStreamDefaultController.prototype, Symbol.toStringTag, { value: "ReadableStreamDefaultController", configurable: true }); @@ -22491,8 +21822,10 @@ var require_ponyfill_es2018 = __commonJS({ controller._pullAgain = false; ReadableStreamDefaultControllerCallPullIfNeeded(controller); } + return null; }, (e2) => { ReadableStreamDefaultControllerError(controller, e2); + return null; }); } __name(ReadableStreamDefaultControllerCallPullIfNeeded, "ReadableStreamDefaultControllerCallPullIfNeeded"); @@ -22611,24 +21944,32 @@ var require_ponyfill_es2018 = __commonJS({ uponPromise(promiseResolvedWith(startResult), () => { controller._started = true; ReadableStreamDefaultControllerCallPullIfNeeded(controller); + return null; }, (r2) => { ReadableStreamDefaultControllerError(controller, r2); + return null; }); } __name(SetUpReadableStreamDefaultController, "SetUpReadableStreamDefaultController"); function SetUpReadableStreamDefaultControllerFromUnderlyingSource(stream, underlyingSource, highWaterMark, sizeAlgorithm) { const controller = Object.create(ReadableStreamDefaultController.prototype); - let startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); - let pullAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "pullAlgorithm"); - let cancelAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "cancelAlgorithm"); + let startAlgorithm; + let pullAlgorithm; + let cancelAlgorithm; if (underlyingSource.start !== void 0) { startAlgorithm = /* @__PURE__ */ __name(() => underlyingSource.start(controller), "startAlgorithm"); + } else { + startAlgorithm = /* @__PURE__ */ __name(() => void 0, "startAlgorithm"); } if (underlyingSource.pull !== void 0) { pullAlgorithm = /* @__PURE__ */ __name(() => underlyingSource.pull(controller), "pullAlgorithm"); + } else { + pullAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "pullAlgorithm"); } if (underlyingSource.cancel !== void 0) { cancelAlgorithm = /* @__PURE__ */ __name((reason) => underlyingSource.cancel(reason), "cancelAlgorithm"); + } else { + cancelAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "cancelAlgorithm"); } SetUpReadableStreamDefaultController(stream, controller, startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark, sizeAlgorithm); } @@ -22665,8 +22006,8 @@ var require_ponyfill_es2018 = __commonJS({ } reading = true; const readRequest = { - _chunkSteps: (chunk) => { - queueMicrotask(() => { + _chunkSteps: /* @__PURE__ */ __name((chunk) => { + _queueMicrotask(() => { readAgain = false; const chunk1 = chunk; const chunk2 = chunk; @@ -22681,8 +22022,8 @@ var require_ponyfill_es2018 = __commonJS({ pullAlgorithm(); } }); - }, - _closeSteps: () => { + }, "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name(() => { reading = false; if (!canceled1) { ReadableStreamDefaultControllerClose(branch1._readableStreamController); @@ -22693,10 +22034,10 @@ var require_ponyfill_es2018 = __commonJS({ if (!canceled1 || !canceled2) { resolveCancelPromise(void 0); } - }, - _errorSteps: () => { + }, "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name(() => { reading = false; - } + }, "_errorSteps") }; ReadableStreamDefaultReaderRead(reader, readRequest); return promiseResolvedWith(void 0); @@ -22735,6 +22076,7 @@ var require_ponyfill_es2018 = __commonJS({ if (!canceled1 || !canceled2) { resolveCancelPromise(void 0); } + return null; }); return [branch1, branch2]; } @@ -22757,13 +22099,14 @@ var require_ponyfill_es2018 = __commonJS({ function forwardReaderError(thisReader) { uponRejection(thisReader._closedPromise, (r2) => { if (thisReader !== reader) { - return; + return null; } ReadableByteStreamControllerError(branch1._readableStreamController, r2); ReadableByteStreamControllerError(branch2._readableStreamController, r2); if (!canceled1 || !canceled2) { resolveCancelPromise(void 0); } + return null; }); } __name(forwardReaderError, "forwardReaderError"); @@ -22774,8 +22117,8 @@ var require_ponyfill_es2018 = __commonJS({ forwardReaderError(reader); } const readRequest = { - _chunkSteps: (chunk) => { - queueMicrotask(() => { + _chunkSteps: /* @__PURE__ */ __name((chunk) => { + _queueMicrotask(() => { readAgainForBranch1 = false; readAgainForBranch2 = false; const chunk1 = chunk; @@ -22803,8 +22146,8 @@ var require_ponyfill_es2018 = __commonJS({ pull2Algorithm(); } }); - }, - _closeSteps: () => { + }, "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name(() => { reading = false; if (!canceled1) { ReadableByteStreamControllerClose(branch1._readableStreamController); @@ -22821,10 +22164,10 @@ var require_ponyfill_es2018 = __commonJS({ if (!canceled1 || !canceled2) { resolveCancelPromise(void 0); } - }, - _errorSteps: () => { + }, "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name(() => { reading = false; - } + }, "_errorSteps") }; ReadableStreamDefaultReaderRead(reader, readRequest); } @@ -22838,8 +22181,8 @@ var require_ponyfill_es2018 = __commonJS({ const byobBranch = forBranch2 ? branch2 : branch1; const otherBranch = forBranch2 ? branch1 : branch2; const readIntoRequest = { - _chunkSteps: (chunk) => { - queueMicrotask(() => { + _chunkSteps: /* @__PURE__ */ __name((chunk) => { + _queueMicrotask(() => { readAgainForBranch1 = false; readAgainForBranch2 = false; const byobCanceled = forBranch2 ? canceled2 : canceled1; @@ -22868,8 +22211,8 @@ var require_ponyfill_es2018 = __commonJS({ pull2Algorithm(); } }); - }, - _closeSteps: (chunk) => { + }, "_chunkSteps"), + _closeSteps: /* @__PURE__ */ __name((chunk) => { reading = false; const byobCanceled = forBranch2 ? canceled2 : canceled1; const otherCanceled = forBranch2 ? canceled1 : canceled2; @@ -22890,12 +22233,12 @@ var require_ponyfill_es2018 = __commonJS({ if (!byobCanceled || !otherCanceled) { resolveCancelPromise(void 0); } - }, - _errorSteps: () => { + }, "_closeSteps"), + _errorSteps: /* @__PURE__ */ __name(() => { reading = false; - } + }, "_errorSteps") }; - ReadableStreamBYOBReaderRead(reader, view, readIntoRequest); + ReadableStreamBYOBReaderRead(reader, view, 1, readIntoRequest); } __name(pullWithBYOBReader, "pullWithBYOBReader"); function pull1Algorithm() { @@ -22960,6 +22303,108 @@ var require_ponyfill_es2018 = __commonJS({ return [branch1, branch2]; } __name(ReadableByteStreamTee, "ReadableByteStreamTee"); + function isReadableStreamLike(stream) { + return typeIsObject(stream) && typeof stream.getReader !== "undefined"; + } + __name(isReadableStreamLike, "isReadableStreamLike"); + function ReadableStreamFrom(source2) { + if (isReadableStreamLike(source2)) { + return ReadableStreamFromDefaultReader(source2.getReader()); + } + return ReadableStreamFromIterable(source2); + } + __name(ReadableStreamFrom, "ReadableStreamFrom"); + function ReadableStreamFromIterable(asyncIterable) { + let stream; + const iteratorRecord = GetIterator(asyncIterable, "async"); + const startAlgorithm = noop2; + function pullAlgorithm() { + let nextResult; + try { + nextResult = IteratorNext(iteratorRecord); + } catch (e2) { + return promiseRejectedWith(e2); + } + const nextPromise = promiseResolvedWith(nextResult); + return transformPromiseWith(nextPromise, (iterResult) => { + if (!typeIsObject(iterResult)) { + throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object"); + } + const done = IteratorComplete(iterResult); + if (done) { + ReadableStreamDefaultControllerClose(stream._readableStreamController); + } else { + const value = IteratorValue(iterResult); + ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value); + } + }); + } + __name(pullAlgorithm, "pullAlgorithm"); + function cancelAlgorithm(reason) { + const iterator = iteratorRecord.iterator; + let returnMethod; + try { + returnMethod = GetMethod(iterator, "return"); + } catch (e2) { + return promiseRejectedWith(e2); + } + if (returnMethod === void 0) { + return promiseResolvedWith(void 0); + } + let returnResult; + try { + returnResult = reflectCall(returnMethod, iterator, [reason]); + } catch (e2) { + return promiseRejectedWith(e2); + } + const returnPromise = promiseResolvedWith(returnResult); + return transformPromiseWith(returnPromise, (iterResult) => { + if (!typeIsObject(iterResult)) { + throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object"); + } + return void 0; + }); + } + __name(cancelAlgorithm, "cancelAlgorithm"); + stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0); + return stream; + } + __name(ReadableStreamFromIterable, "ReadableStreamFromIterable"); + function ReadableStreamFromDefaultReader(reader) { + let stream; + const startAlgorithm = noop2; + function pullAlgorithm() { + let readPromise; + try { + readPromise = reader.read(); + } catch (e2) { + return promiseRejectedWith(e2); + } + return transformPromiseWith(readPromise, (readResult) => { + if (!typeIsObject(readResult)) { + throw new TypeError("The promise returned by the reader.read() method must fulfill with an object"); + } + if (readResult.done) { + ReadableStreamDefaultControllerClose(stream._readableStreamController); + } else { + const value = readResult.value; + ReadableStreamDefaultControllerEnqueue(stream._readableStreamController, value); + } + }); + } + __name(pullAlgorithm, "pullAlgorithm"); + function cancelAlgorithm(reason) { + try { + return promiseResolvedWith(reader.cancel(reason)); + } catch (e2) { + return promiseRejectedWith(e2); + } + } + __name(cancelAlgorithm, "cancelAlgorithm"); + stream = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, 0); + return stream; + } + __name(ReadableStreamFromDefaultReader, "ReadableStreamFromDefaultReader"); function convertUnderlyingDefaultOrByteSource(source2, context) { assertDictionary(source2, context); const original = source2; @@ -23000,22 +22445,6 @@ var require_ponyfill_es2018 = __commonJS({ return type; } __name(convertReadableStreamType, "convertReadableStreamType"); - function convertReaderOptions(options, context) { - assertDictionary(options, context); - const mode = options === null || options === void 0 ? void 0 : options.mode; - return { - mode: mode === void 0 ? void 0 : convertReadableStreamReaderMode(mode, `${context} has member 'mode' that`) - }; - } - __name(convertReaderOptions, "convertReaderOptions"); - function convertReadableStreamReaderMode(mode, context) { - mode = `${mode}`; - if (mode !== "byob") { - throw new TypeError(`${context} '${mode}' is not a valid enumeration value for ReadableStreamReaderMode`); - } - return mode; - } - __name(convertReadableStreamReaderMode, "convertReadableStreamReaderMode"); function convertIteratorOptions(options, context) { assertDictionary(options, context); const preventCancel = options === null || options === void 0 ? void 0 : options.preventCancel; @@ -23178,9 +22607,24 @@ var require_ponyfill_es2018 = __commonJS({ const options = convertIteratorOptions(rawOptions, "First parameter"); return AcquireReadableStreamAsyncIterator(this, options.preventCancel); } + [SymbolAsyncIterator](options) { + return this.values(options); + } + /** + * Creates a new ReadableStream wrapping the provided iterable or async iterable. + * + * This can be used to adapt various kinds of objects into a readable stream, + * such as an array, an async generator, or a Node.js readable stream. + */ + static from(asyncIterable) { + return ReadableStreamFrom(asyncIterable); + } }; __name(_ReadableStream, "ReadableStream"); let ReadableStream2 = _ReadableStream; + Object.defineProperties(ReadableStream2, { + from: { enumerable: true } + }); Object.defineProperties(ReadableStream2.prototype, { cancel: { enumerable: true }, getReader: { enumerable: true }, @@ -23190,19 +22634,24 @@ var require_ponyfill_es2018 = __commonJS({ values: { enumerable: true }, locked: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ReadableStream2.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(ReadableStream2.from, "from"); + setFunctionName(ReadableStream2.prototype.cancel, "cancel"); + setFunctionName(ReadableStream2.prototype.getReader, "getReader"); + setFunctionName(ReadableStream2.prototype.pipeThrough, "pipeThrough"); + setFunctionName(ReadableStream2.prototype.pipeTo, "pipeTo"); + setFunctionName(ReadableStream2.prototype.tee, "tee"); + setFunctionName(ReadableStream2.prototype.values, "values"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ReadableStream2.prototype, Symbol.toStringTag, { value: "ReadableStream", configurable: true }); } - if (typeof SymbolPolyfill.asyncIterator === "symbol") { - Object.defineProperty(ReadableStream2.prototype, SymbolPolyfill.asyncIterator, { - value: ReadableStream2.prototype.values, - writable: true, - configurable: true - }); - } + Object.defineProperty(ReadableStream2.prototype, SymbolAsyncIterator, { + value: ReadableStream2.prototype.values, + writable: true, + configurable: true + }); function CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, highWaterMark = 1, sizeAlgorithm = () => 1) { const stream = Object.create(ReadableStream2.prototype); InitializeReadableStream(stream); @@ -23254,10 +22703,11 @@ var require_ponyfill_es2018 = __commonJS({ ReadableStreamClose(stream); const reader = stream._reader; if (reader !== void 0 && IsReadableStreamBYOBReader(reader)) { - reader._readIntoRequests.forEach((readIntoRequest) => { + const readIntoRequests = reader._readIntoRequests; + reader._readIntoRequests = new SimpleQueue(); + readIntoRequests.forEach((readIntoRequest) => { readIntoRequest._closeSteps(void 0); }); - reader._readIntoRequests = new SimpleQueue(); } const sourceCancelPromise = stream._readableStreamController[CancelSteps](reason); return transformPromiseWith(sourceCancelPromise, noop2); @@ -23271,10 +22721,11 @@ var require_ponyfill_es2018 = __commonJS({ } defaultReaderClosedPromiseResolve(reader); if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach((readRequest) => { + const readRequests = reader._readRequests; + reader._readRequests = new SimpleQueue(); + readRequests.forEach((readRequest) => { readRequest._closeSteps(); }); - reader._readRequests = new SimpleQueue(); } } __name(ReadableStreamClose, "ReadableStreamClose"); @@ -23287,15 +22738,9 @@ var require_ponyfill_es2018 = __commonJS({ } defaultReaderClosedPromiseReject(reader, e2); if (IsReadableStreamDefaultReader(reader)) { - reader._readRequests.forEach((readRequest) => { - readRequest._errorSteps(e2); - }); - reader._readRequests = new SimpleQueue(); + ReadableStreamDefaultReaderErrorReadRequests(reader, e2); } else { - reader._readIntoRequests.forEach((readIntoRequest) => { - readIntoRequest._errorSteps(e2); - }); - reader._readIntoRequests = new SimpleQueue(); + ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e2); } } __name(ReadableStreamError, "ReadableStreamError"); @@ -23315,13 +22760,7 @@ var require_ponyfill_es2018 = __commonJS({ const byteLengthSizeFunction = /* @__PURE__ */ __name((chunk) => { return chunk.byteLength; }, "byteLengthSizeFunction"); - try { - Object.defineProperty(byteLengthSizeFunction, "name", { - value: "size", - configurable: true - }); - } catch (_a4) { - } + setFunctionName(byteLengthSizeFunction, "size"); const _ByteLengthQueuingStrategy = class _ByteLengthQueuingStrategy { constructor(options) { assertRequiredArgument(options, 1, "ByteLengthQueuingStrategy"); @@ -23353,8 +22792,8 @@ var require_ponyfill_es2018 = __commonJS({ highWaterMark: { enumerable: true }, size: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(ByteLengthQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(ByteLengthQueuingStrategy.prototype, Symbol.toStringTag, { value: "ByteLengthQueuingStrategy", configurable: true }); @@ -23376,13 +22815,7 @@ var require_ponyfill_es2018 = __commonJS({ const countSizeFunction = /* @__PURE__ */ __name(() => { return 1; }, "countSizeFunction"); - try { - Object.defineProperty(countSizeFunction, "name", { - value: "size", - configurable: true - }); - } catch (_a4) { - } + setFunctionName(countSizeFunction, "size"); const _CountQueuingStrategy = class _CountQueuingStrategy { constructor(options) { assertRequiredArgument(options, 1, "CountQueuingStrategy"); @@ -23415,8 +22848,8 @@ var require_ponyfill_es2018 = __commonJS({ highWaterMark: { enumerable: true }, size: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(CountQueuingStrategy.prototype, SymbolPolyfill.toStringTag, { + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(CountQueuingStrategy.prototype, Symbol.toStringTag, { value: "CountQueuingStrategy", configurable: true }); @@ -23437,12 +22870,14 @@ var require_ponyfill_es2018 = __commonJS({ __name(IsCountQueuingStrategy, "IsCountQueuingStrategy"); function convertTransformer(original, context) { assertDictionary(original, context); + const cancel = original === null || original === void 0 ? void 0 : original.cancel; const flush = original === null || original === void 0 ? void 0 : original.flush; const readableType = original === null || original === void 0 ? void 0 : original.readableType; const start = original === null || original === void 0 ? void 0 : original.start; const transform = original === null || original === void 0 ? void 0 : original.transform; const writableType = original === null || original === void 0 ? void 0 : original.writableType; return { + cancel: cancel === void 0 ? void 0 : convertTransformerCancelCallback(cancel, original, `${context} has member 'cancel' that`), flush: flush === void 0 ? void 0 : convertTransformerFlushCallback(flush, original, `${context} has member 'flush' that`), readableType, start: start === void 0 ? void 0 : convertTransformerStartCallback(start, original, `${context} has member 'start' that`), @@ -23466,6 +22901,11 @@ var require_ponyfill_es2018 = __commonJS({ return (chunk, controller) => promiseCall(fn, original, [chunk, controller]); } __name(convertTransformerTransformCallback, "convertTransformerTransformCallback"); + function convertTransformerCancelCallback(fn, original, context) { + assertFunction(fn, context); + return (reason) => promiseCall(fn, original, [reason]); + } + __name(convertTransformerCancelCallback, "convertTransformerCancelCallback"); const _TransformStream = class _TransformStream { constructor(rawTransformer = {}, rawWritableStrategy = {}, rawReadableStrategy = {}) { if (rawTransformer === void 0) { @@ -23521,8 +22961,8 @@ var require_ponyfill_es2018 = __commonJS({ readable: { enumerable: true }, writable: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(TransformStream.prototype, SymbolPolyfill.toStringTag, { + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(TransformStream.prototype, Symbol.toStringTag, { value: "TransformStream", configurable: true }); @@ -23550,8 +22990,7 @@ var require_ponyfill_es2018 = __commonJS({ } __name(pullAlgorithm, "pullAlgorithm"); function cancelAlgorithm(reason) { - TransformStreamErrorWritableAndUnblockWrite(stream, reason); - return promiseResolvedWith(void 0); + return TransformStreamDefaultSourceCancelAlgorithm(stream, reason); } __name(cancelAlgorithm, "cancelAlgorithm"); stream._readable = CreateReadableStream(startAlgorithm, pullAlgorithm, cancelAlgorithm, readableHighWaterMark, readableSizeAlgorithm); @@ -23580,11 +23019,15 @@ var require_ponyfill_es2018 = __commonJS({ function TransformStreamErrorWritableAndUnblockWrite(stream, e2) { TransformStreamDefaultControllerClearAlgorithms(stream._transformStreamController); WritableStreamDefaultControllerErrorIfNeeded(stream._writable._writableStreamController, e2); + TransformStreamUnblockWrite(stream); + } + __name(TransformStreamErrorWritableAndUnblockWrite, "TransformStreamErrorWritableAndUnblockWrite"); + function TransformStreamUnblockWrite(stream) { if (stream._backpressure) { TransformStreamSetBackpressure(stream, false); } } - __name(TransformStreamErrorWritableAndUnblockWrite, "TransformStreamErrorWritableAndUnblockWrite"); + __name(TransformStreamUnblockWrite, "TransformStreamUnblockWrite"); function TransformStreamSetBackpressure(stream, backpressure) { if (stream._backpressureChangePromise !== void 0) { stream._backpressureChangePromise_resolve(); @@ -23644,8 +23087,11 @@ var require_ponyfill_es2018 = __commonJS({ terminate: { enumerable: true }, desiredSize: { enumerable: true } }); - if (typeof SymbolPolyfill.toStringTag === "symbol") { - Object.defineProperty(TransformStreamDefaultController.prototype, SymbolPolyfill.toStringTag, { + setFunctionName(TransformStreamDefaultController.prototype.enqueue, "enqueue"); + setFunctionName(TransformStreamDefaultController.prototype.error, "error"); + setFunctionName(TransformStreamDefaultController.prototype.terminate, "terminate"); + if (typeof Symbol.toStringTag === "symbol") { + Object.defineProperty(TransformStreamDefaultController.prototype, Symbol.toStringTag, { value: "TransformStreamDefaultController", configurable: true }); @@ -23660,36 +23106,51 @@ var require_ponyfill_es2018 = __commonJS({ return x2 instanceof TransformStreamDefaultController; } __name(IsTransformStreamDefaultController, "IsTransformStreamDefaultController"); - function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm) { + function SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm) { controller._controlledTransformStream = stream; stream._transformStreamController = controller; controller._transformAlgorithm = transformAlgorithm; controller._flushAlgorithm = flushAlgorithm; + controller._cancelAlgorithm = cancelAlgorithm; + controller._finishPromise = void 0; + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; } __name(SetUpTransformStreamDefaultController, "SetUpTransformStreamDefaultController"); function SetUpTransformStreamDefaultControllerFromTransformer(stream, transformer) { const controller = Object.create(TransformStreamDefaultController.prototype); - let transformAlgorithm = /* @__PURE__ */ __name((chunk) => { - try { - TransformStreamDefaultControllerEnqueue(controller, chunk); - return promiseResolvedWith(void 0); - } catch (transformResultE) { - return promiseRejectedWith(transformResultE); - } - }, "transformAlgorithm"); - let flushAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "flushAlgorithm"); + let transformAlgorithm; + let flushAlgorithm; + let cancelAlgorithm; if (transformer.transform !== void 0) { transformAlgorithm = /* @__PURE__ */ __name((chunk) => transformer.transform(chunk, controller), "transformAlgorithm"); + } else { + transformAlgorithm = /* @__PURE__ */ __name((chunk) => { + try { + TransformStreamDefaultControllerEnqueue(controller, chunk); + return promiseResolvedWith(void 0); + } catch (transformResultE) { + return promiseRejectedWith(transformResultE); + } + }, "transformAlgorithm"); } if (transformer.flush !== void 0) { flushAlgorithm = /* @__PURE__ */ __name(() => transformer.flush(controller), "flushAlgorithm"); + } else { + flushAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "flushAlgorithm"); } - SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm); + if (transformer.cancel !== void 0) { + cancelAlgorithm = /* @__PURE__ */ __name((reason) => transformer.cancel(reason), "cancelAlgorithm"); + } else { + cancelAlgorithm = /* @__PURE__ */ __name(() => promiseResolvedWith(void 0), "cancelAlgorithm"); + } + SetUpTransformStreamDefaultController(stream, controller, transformAlgorithm, flushAlgorithm, cancelAlgorithm); } __name(SetUpTransformStreamDefaultControllerFromTransformer, "SetUpTransformStreamDefaultControllerFromTransformer"); function TransformStreamDefaultControllerClearAlgorithms(controller) { controller._transformAlgorithm = void 0; controller._flushAlgorithm = void 0; + controller._cancelAlgorithm = void 0; } __name(TransformStreamDefaultControllerClearAlgorithms, "TransformStreamDefaultControllerClearAlgorithms"); function TransformStreamDefaultControllerEnqueue(controller, chunk) { @@ -23747,24 +23208,59 @@ var require_ponyfill_es2018 = __commonJS({ } __name(TransformStreamDefaultSinkWriteAlgorithm, "TransformStreamDefaultSinkWriteAlgorithm"); function TransformStreamDefaultSinkAbortAlgorithm(stream, reason) { - TransformStreamError(stream, reason); - return promiseResolvedWith(void 0); + const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const readable = stream._readable; + controller._finishPromise = newPromise((resolve, reject) => { + controller._finishPromise_resolve = resolve; + controller._finishPromise_reject = reject; + }); + const cancelPromise = controller._cancelAlgorithm(reason); + TransformStreamDefaultControllerClearAlgorithms(controller); + uponPromise(cancelPromise, () => { + if (readable._state === "errored") { + defaultControllerFinishPromiseReject(controller, readable._storedError); + } else { + ReadableStreamDefaultControllerError(readable._readableStreamController, reason); + defaultControllerFinishPromiseResolve(controller); + } + return null; + }, (r2) => { + ReadableStreamDefaultControllerError(readable._readableStreamController, r2); + defaultControllerFinishPromiseReject(controller, r2); + return null; + }); + return controller._finishPromise; } __name(TransformStreamDefaultSinkAbortAlgorithm, "TransformStreamDefaultSinkAbortAlgorithm"); function TransformStreamDefaultSinkCloseAlgorithm(stream) { - const readable = stream._readable; const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const readable = stream._readable; + controller._finishPromise = newPromise((resolve, reject) => { + controller._finishPromise_resolve = resolve; + controller._finishPromise_reject = reject; + }); const flushPromise = controller._flushAlgorithm(); TransformStreamDefaultControllerClearAlgorithms(controller); - return transformPromiseWith(flushPromise, () => { + uponPromise(flushPromise, () => { if (readable._state === "errored") { - throw readable._storedError; + defaultControllerFinishPromiseReject(controller, readable._storedError); + } else { + ReadableStreamDefaultControllerClose(readable._readableStreamController); + defaultControllerFinishPromiseResolve(controller); } - ReadableStreamDefaultControllerClose(readable._readableStreamController); + return null; }, (r2) => { - TransformStreamError(stream, r2); - throw readable._storedError; + ReadableStreamDefaultControllerError(readable._readableStreamController, r2); + defaultControllerFinishPromiseReject(controller, r2); + return null; }); + return controller._finishPromise; } __name(TransformStreamDefaultSinkCloseAlgorithm, "TransformStreamDefaultSinkCloseAlgorithm"); function TransformStreamDefaultSourcePullAlgorithm(stream) { @@ -23772,10 +23268,59 @@ var require_ponyfill_es2018 = __commonJS({ return stream._backpressureChangePromise; } __name(TransformStreamDefaultSourcePullAlgorithm, "TransformStreamDefaultSourcePullAlgorithm"); + function TransformStreamDefaultSourceCancelAlgorithm(stream, reason) { + const controller = stream._transformStreamController; + if (controller._finishPromise !== void 0) { + return controller._finishPromise; + } + const writable = stream._writable; + controller._finishPromise = newPromise((resolve, reject) => { + controller._finishPromise_resolve = resolve; + controller._finishPromise_reject = reject; + }); + const cancelPromise = controller._cancelAlgorithm(reason); + TransformStreamDefaultControllerClearAlgorithms(controller); + uponPromise(cancelPromise, () => { + if (writable._state === "errored") { + defaultControllerFinishPromiseReject(controller, writable._storedError); + } else { + WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, reason); + TransformStreamUnblockWrite(stream); + defaultControllerFinishPromiseResolve(controller); + } + return null; + }, (r2) => { + WritableStreamDefaultControllerErrorIfNeeded(writable._writableStreamController, r2); + TransformStreamUnblockWrite(stream); + defaultControllerFinishPromiseReject(controller, r2); + return null; + }); + return controller._finishPromise; + } + __name(TransformStreamDefaultSourceCancelAlgorithm, "TransformStreamDefaultSourceCancelAlgorithm"); function defaultControllerBrandCheckException(name) { return new TypeError(`TransformStreamDefaultController.prototype.${name} can only be used on a TransformStreamDefaultController`); } __name(defaultControllerBrandCheckException, "defaultControllerBrandCheckException"); + function defaultControllerFinishPromiseResolve(controller) { + if (controller._finishPromise_resolve === void 0) { + return; + } + controller._finishPromise_resolve(); + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; + } + __name(defaultControllerFinishPromiseResolve, "defaultControllerFinishPromiseResolve"); + function defaultControllerFinishPromiseReject(controller, reason) { + if (controller._finishPromise_reject === void 0) { + return; + } + setPromiseIsHandledToTrue(controller._finishPromise); + controller._finishPromise_reject(reason); + controller._finishPromise_resolve = void 0; + controller._finishPromise_reject = void 0; + } + __name(defaultControllerFinishPromiseReject, "defaultControllerFinishPromiseReject"); function streamBrandCheckException(name) { return new TypeError(`TransformStream.prototype.${name} can only be used on a TransformStream`); } @@ -23793,7 +23338,6 @@ var require_ponyfill_es2018 = __commonJS({ exports3.WritableStream = WritableStream; exports3.WritableStreamDefaultController = WritableStreamDefaultController; exports3.WritableStreamDefaultWriter = WritableStreamDefaultWriter; - Object.defineProperty(exports3, "__esModule", { value: true }); }); } }); @@ -23910,8 +23454,7 @@ var init_fetch_blob = __esm({ if (typeof options !== "object" && typeof options !== "function") { throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary."); } - if (options === null) - options = {}; + if (options === null) options = {}; const encoder = new TextEncoder(); for (const element of blobParts) { let part; @@ -24070,8 +23613,7 @@ var init_file = __esm({ super(fileBits, options); __privateAdd(this, _lastModified, 0); __privateAdd(this, _name, ""); - if (options === null) - options = {}; + if (options === null) options = {}; const lastModified = options.lastModified === void 0 ? Date.now() : Number(options.lastModified); if (!Number.isNaN(lastModified)) { __privateSet(this, _lastModified, lastModified); @@ -24129,8 +23671,7 @@ var init_esm_min = __esm({ FormData = (_a3 = class { constructor(...a) { __privateAdd(this, _d, []); - if (a.length) - throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`); + if (a.length) throw new TypeError(`Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.`); } get [t]() { return "FormData"; @@ -24153,9 +23694,7 @@ var init_esm_min = __esm({ get(a) { x("get", arguments, 1); a += ""; - for (var b = __privateGet(this, _d), l = b.length, c = 0; c < l; c++) - if (b[c][0] === a) - return b[c][1]; + for (var b = __privateGet(this, _d), l = b.length, c = 0; c < l; c++) if (b[c][0] === a) return b[c][1]; return null; } getAll(a, b) { @@ -24172,8 +23711,7 @@ var init_esm_min = __esm({ } forEach(a, b) { x("forEach", arguments, 1); - for (var [c, d] of this) - a.call(b, d, c, this); + for (var [c, d] of this) a.call(b, d, c, this); } set(...a) { x("set", arguments, 2); @@ -24189,22 +23727,20 @@ var init_esm_min = __esm({ yield* __privateGet(this, _d); } *keys() { - for (var [a] of this) - yield a; + for (var [a] of this) yield a; } *values() { - for (var [, a] of this) - yield a; + for (var [, a] of this) yield a; } }, _d = new WeakMap(), __name(_a3, "FormData"), _a3); __name(formDataToBlob, "formDataToBlob"); } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/base.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/base.js var _FetchBaseError, FetchBaseError; var init_base = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/base.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/base.js"() { _FetchBaseError = class _FetchBaseError extends Error { constructor(message, type) { super(message); @@ -24223,10 +23759,10 @@ var init_base = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/fetch-error.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/fetch-error.js var _FetchError, FetchError; var init_fetch_error = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/fetch-error.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/fetch-error.js"() { init_base(); _FetchError = class _FetchError extends FetchBaseError { /** @@ -24247,10 +23783,10 @@ var init_fetch_error = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/is.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is.js var NAME, isURLSearchParameters, isBlob, isAbortSignal, isDomainOrSubdomain, isSameProtocol; var init_is = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/is.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is.js"() { NAME = Symbol.toStringTag; isURLSearchParameters = /* @__PURE__ */ __name((object) => { return typeof object === "object" && typeof object.append === "function" && typeof object.delete === "function" && typeof object.get === "function" && typeof object.getAll === "function" && typeof object.has === "function" && typeof object.set === "function" && typeof object.sort === "function" && object[NAME] === "URLSearchParams"; @@ -24302,7 +23838,7 @@ var init_from = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/multipart-parser.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js var multipart_parser_exports = {}; __export(multipart_parser_exports, { toFormData: () => toFormData @@ -24396,7 +23932,7 @@ async function toFormData(Body2, ct) { } var s, S, f2, F, LF, CR, SPACE, HYPHEN, COLON, A, Z, lower, noop, _MultipartParser, MultipartParser; var init_multipart_parser = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/multipart-parser.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/multipart-parser.js"() { init_from(); init_esm_min(); s = 0; @@ -24665,7 +24201,7 @@ var init_multipart_parser = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/body.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/body.js async function consumeBody(data) { if (data[INTERNALS].disturbed) { throw new TypeError(`body used already for: ${data.url}`); @@ -24712,7 +24248,7 @@ async function consumeBody(data) { } var import_node_stream, import_node_util, import_node_buffer, pipeline, INTERNALS, _Body, Body, clone, getNonSpecFormDataBoundary, extractContentType, getTotalBytes, writeToStream; var init_body = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/body.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/body.js"() { import_node_stream = __toESM(require("node:stream"), 1); import_node_util = require("node:util"); import_node_buffer = require("node:buffer"); @@ -24926,7 +24462,7 @@ var init_body = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/headers.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/headers.js function fromRawHeaders(headers = []) { return new Headers( headers.reduce((result, value, index, array) => { @@ -24947,7 +24483,7 @@ function fromRawHeaders(headers = []) { } var import_node_util2, import_node_http, validateHeaderName, validateHeaderValue, _Headers, Headers; var init_headers = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/headers.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/headers.js"() { import_node_util2 = require("node:util"); import_node_http = __toESM(require("node:http"), 1); validateHeaderName = typeof import_node_http.default.validateHeaderName === "function" ? import_node_http.default.validateHeaderName : (name) => { @@ -25120,10 +24656,10 @@ var init_headers = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/is-redirect.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is-redirect.js var redirectStatus, isRedirect; var init_is_redirect = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/is-redirect.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/is-redirect.js"() { redirectStatus = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]); isRedirect = /* @__PURE__ */ __name((code) => { return redirectStatus.has(code); @@ -25131,10 +24667,10 @@ var init_is_redirect = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/response.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/response.js var INTERNALS2, _Response, Response; var init_response = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/response.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/response.js"() { init_headers(); init_body(); init_is_redirect(); @@ -25259,10 +24795,10 @@ var init_response = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/get-search.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/get-search.js var getSearch; var init_get_search = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/get-search.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/get-search.js"() { getSearch = /* @__PURE__ */ __name((parsedURL) => { if (parsedURL.search) { return parsedURL.search; @@ -25274,7 +24810,7 @@ var init_get_search = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/referrer.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/referrer.js function stripURLForUseAsAReferrer(url, originOnly = false) { if (url == null) { return "no-referrer"; @@ -25402,7 +24938,7 @@ function parseReferrerPolicyFromHeader(headers) { } var import_node_net, ReferrerPolicy, DEFAULT_REFERRER_POLICY; var init_referrer = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/utils/referrer.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/utils/referrer.js"() { import_node_net = require("node:net"); __name(stripURLForUseAsAReferrer, "stripURLForUseAsAReferrer"); ReferrerPolicy = /* @__PURE__ */ new Set([ @@ -25425,10 +24961,10 @@ var init_referrer = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/request.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/request.js var import_node_url, import_node_util3, INTERNALS3, isRequest, doBadDataWarn, _Request, Request, getNodeRequestOptions; var init_request = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/request.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/request.js"() { import_node_url = require("node:url"); import_node_util3 = require("node:util"); init_headers(); @@ -25613,9 +25149,6 @@ var init_request = __esm({ if (typeof agent === "function") { agent = agent(parsedURL); } - if (!headers.has("Connection") && !agent) { - headers.set("Connection", "close"); - } const search = getSearch(parsedURL); const options = { // Overwrite search to retain trailing ? (issue #776) @@ -25635,10 +25168,10 @@ var init_request = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/abort-error.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/abort-error.js var _AbortError, AbortError; var init_abort_error = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/errors/abort-error.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/errors/abort-error.js"() { init_base(); _AbortError = class _AbortError extends FetchBaseError { constructor(message, type = "aborted") { @@ -25650,7 +25183,7 @@ var init_abort_error = __esm({ } }); -// node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/index.js +// node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/index.js async function fetch(url, options_) { return new Promise((resolve, reject) => { const request = new Request(url, options_); @@ -25914,7 +25447,7 @@ function fixResponseChunkedTransferBadEnding(request, errorCallback) { } var import_node_http2, import_node_https, import_node_zlib, import_node_stream2, import_node_buffer2, supportedSchemas; var init_src = __esm({ - "node_modules/.pnpm/node-fetch@3.3.1/node_modules/node-fetch/src/index.js"() { + "node_modules/.pnpm/node-fetch@3.3.2/node_modules/node-fetch/src/index.js"() { import_node_http2 = __toESM(require("node:http"), 1); import_node_https = __toESM(require("node:https"), 1); import_node_zlib = __toESM(require("node:zlib"), 1); @@ -25946,22 +25479,19 @@ var init_update = __esm({ init_src(); (() => { var _a4; - if (GetConvarInt("mysql_versioncheck", 1) === 0) - return; + if (GetConvarInt("mysql_versioncheck", 1) === 0) return; const resourceName2 = GetCurrentResourceName(); - const currentVersion = (_a4 = GetResourceMetadata(resourceName2, "version", 0)) == null ? void 0 : _a4.match(/(\d)\.(\d)\.(\d)/); - if (!currentVersion) - return console.log(`^1Unable to determine current resource version for '${resourceName2}'^0`); + const currentVersion = (_a4 = GetResourceMetadata(resourceName2, "version", 0)) == null ? void 0 : _a4.match(/(\d+)\.(\d+)\.(\d+)/); + if (!currentVersion) return; setTimeout(async () => { - const response = await fetch(`https://api.github.com/repos/overextended/oxmysql/releases/latest`); - if (response.status !== 200) - return; + const response = await fetch(`https://api.github.com/repos/overextended/oxmysql/releases/latest`).catch((err) => { + console.warn(`Failed to retrieve latest version of oxmysql (${err.code}).`); + }); + if ((response == null ? void 0 : response.status) !== 200) return; const release = await response.json(); - if (release.prerelease) - return; - const latestVersion = release.tag_name.match(/(\d)\.(\d)\.(\d)/); - if (!latestVersion || latestVersion[0] === currentVersion[0]) - return; + if (release.prerelease) return; + const latestVersion = release.tag_name.match(/(\d+)\.(\d+)\.(\d+)/); + if (!latestVersion || latestVersion[0] === currentVersion[0]) return; for (let i2 = 1; i2 < currentVersion.length; i2++) { const current = parseInt(currentVersion[i2]); const latest = parseInt(latestVersion[i2]); @@ -25971,8 +25501,7 @@ var init_update = __esm({ `^3An update is available for ${resourceName2} (current version: ${currentVersion[0]})\r ${release.html_url}^0` ); - else - break; + else break; } } }, 1e3); @@ -25982,35 +25511,59 @@ ${release.html_url}^0` // src/utils/typeCast.ts var BINARY_CHARSET = 63; -var typeCast = /* @__PURE__ */ __name((field, next) => { +function typeCastExecute(field, next) { switch (field.type) { case "DATETIME": case "DATETIME2": case "TIMESTAMP": case "TIMESTAMP2": - case "NEWDATE": - return new Date(field.string()).getTime(); - case "DATE": - return (/* @__PURE__ */ new Date(field.string() + " 00:00:00")).getTime(); + case "NEWDATE": { + const value = field.string(); + return value ? new Date(value).getTime() : null; + } + case "DATE": { + const value = field.string(); + return value ? (/* @__PURE__ */ new Date(value + " 00:00:00")).getTime() : null; + } + default: + return next(); + } +} +__name(typeCastExecute, "typeCastExecute"); +function typeCast(field, next) { + var _a4, _b; + switch (field.type) { + case "DATETIME": + case "DATETIME2": + case "TIMESTAMP": + case "TIMESTAMP2": + case "NEWDATE": { + const value = field.string(); + return value ? new Date(value).getTime() : null; + } + case "DATE": { + const value = field.string(); + return value ? (/* @__PURE__ */ new Date(value + " 00:00:00")).getTime() : null; + } case "TINY": return field.length === 1 ? field.string() === "1" : next(); case "BIT": - return field.length === 1 ? field.buffer()[0] === 1 : field.buffer()[0]; + return field.length === 1 ? ((_a4 = field.buffer()) == null ? void 0 : _a4[0]) === 1 : (_b = field.buffer()) == null ? void 0 : _b[0]; case "TINY_BLOB": case "MEDIUM_BLOB": case "LONG_BLOB": case "BLOB": if (field.charset === BINARY_CHARSET) { const value = field.buffer(); - if (value === null) - return [value]; + if (value === null) return [value]; return [...value]; } return field.string(); default: return next(); } -}, "typeCast"); +} +__name(typeCast, "typeCast"); // src/config.ts var mysql_connection_string = GetConvar("mysql_connection_string", ""); @@ -26045,21 +25598,21 @@ var mysql_transaction_isolation_level = (() => { return `${query} READ COMMITTED`; } })(); -var parseUri = /* @__PURE__ */ __name((connectionString) => { +function parseUri(connectionString) { + var _a4; const splitMatchGroups = connectionString.match( new RegExp( "^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?$" ) ); - if (!splitMatchGroups) - throw new Error(`mysql_connection_string structure was invalid (${connectionString})`); + if (!splitMatchGroups) throw new Error(`mysql_connection_string structure was invalid (${connectionString})`); const authTarget = splitMatchGroups[2] ? splitMatchGroups[2].split(":") : []; const options = { user: authTarget[0] || void 0, password: authTarget[1] || void 0, host: splitMatchGroups[3], port: parseInt(splitMatchGroups[4]), - database: splitMatchGroups[5].replace(/^\/+/, ""), + database: (_a4 = splitMatchGroups[5]) == null ? void 0 : _a4.replace(/^\/+/, ""), ...splitMatchGroups[6] && splitMatchGroups[6].split("&").reduce((connectionInfo, parameter) => { const [key, value] = parameter.split("="); connectionInfo[key] = value; @@ -26067,13 +25620,13 @@ var parseUri = /* @__PURE__ */ __name((connectionString) => { }, {}) }; return options; -}, "parseUri"); +} +__name(parseUri, "parseUri"); var convertNamedPlaceholders; -var connectionOptions = (() => { +function getConnectionOptions() { const options = mysql_connection_string.includes("mysql://") ? parseUri(mysql_connection_string) : mysql_connection_string.replace(/(?:host(?:name)|ip|server|data\s?source|addr(?:ess)?)=/gi, "host=").replace(/(?:user\s?(?:id|name)?|uid)=/gi, "user=").replace(/(?:pwd|pass)=/gi, "password=").replace(/(?:db)=/gi, "database=").split(";").reduce((connectionInfo, parameter) => { const [key, value] = parameter.split("="); - if (key) - connectionInfo[key] = value; + if (key) connectionInfo[key] = value; return connectionInfo; }, {}); convertNamedPlaceholders = options.namedPlaceholders === "false" ? null : require_named_placeholders()(); @@ -26083,7 +25636,7 @@ var connectionOptions = (() => { try { options[key] = JSON.parse(value); } catch (err) { - // console.log(`^3Failed to parse property ${key} in configuration (${err})!^0`); + console.log(`^3Failed to parse property ${key} in configuration (${err})!^0`); } } } @@ -26093,33 +25646,31 @@ var connectionOptions = (() => { connectTimeout: 6e4, trace: false, supportBigNumbers: true, + jsonStrings: true, ...options, typeCast, namedPlaceholders: false, // we use our own named-placeholders patch, disable mysql2s flags }; -})(); +} +__name(getConnectionOptions, "getConnectionOptions"); RegisterCommand( "oxmysql_debug", (source2, args) => { - if (source2 !== 0) - return console.log("^3This command can only be run server side^0"); + if (source2 !== 0) return console.log("^3This command can only be run server side^0"); switch (args[0]) { case "add": - if (!Array.isArray(mysql_debug)) - mysql_debug = []; + if (!Array.isArray(mysql_debug)) mysql_debug = []; mysql_debug.push(args[1]); SetConvar("mysql_debug", JSON.stringify(mysql_debug)); return console.log(`^3Added ${args[1]} to mysql_debug^0`); case "remove": if (Array.isArray(mysql_debug)) { const index = mysql_debug.indexOf(args[1]); - if (index === -1) - return; + if (index === -1) return; mysql_debug.splice(index, 1); - if (mysql_debug.length === 0) - mysql_debug = false; + if (mysql_debug.length === 0) mysql_debug = false; SetConvar("mysql_debug", JSON.stringify(mysql_debug) || "false"); return console.log(`^3Removed ${args[1]} from mysql_debug^0`); } @@ -26136,8 +25687,36 @@ function sleep(ms) { } __name(sleep, "sleep"); -// src/database/connection.ts +// src/database/pool.ts var import_promise = __toESM(require_promise(), 1); +var pool; +var dbVersion = ""; +async function createConnectionPool() { + const config = getConnectionOptions(); + try { + const dbPool = (0, import_promise.createPool)(config); + dbPool.on("connection", (connection) => { + connection.query(mysql_transaction_isolation_level); + }); + const [result] = await dbPool.query("SELECT VERSION() as version"); + dbVersion = `^5[${result[0].version}]`; + console.log(`${dbVersion} ^2Database server connection established!^0`); + if (config.multipleStatements) { + console.warn(`multipleStatements is enabled. Used incorrectly, this option may cause SQL injection.`); + } + pool = dbPool; + } catch (err) { + const message = err.message.includes("auth_gssapi_client") ? `Requested authentication using unknown plugin auth_gssapi_client.` : err.message; + console.log( + `^3Unable to establish a connection to the database (${err.code})! +^1Error${err.errno ? ` ${err.errno}` : ""}: ${message}^0` + ); + console.log(`See https://github.com/overextended/oxmysql/issues/154 for more information.`); + if (config.password) config.password = "******"; + console.log(config); + } +} +__name(createConnectionPool, "createConnectionPool"); // src/utils/scheduleTick.ts var resourceName = GetCurrentResourceName(); @@ -26147,75 +25726,82 @@ async function scheduleTick() { __name(scheduleTick, "scheduleTick"); // src/database/connection.ts -var pool; -var isServerConnected = false; -var dbVersion = ""; -async function waitForConnection() { - while (!isServerConnected) { - await sleep(0); +Symbol.dispose ??= Symbol("Symbol.dispose"); +var activeConnections = {}; +var _MySql = class _MySql { + constructor(connection) { + this.id = connection.connection.threadId; + this.connection = connection; + activeConnections[this.id] = this; } -} -__name(waitForConnection, "waitForConnection"); -async function createConnectionPool() { - try { - pool = (0, import_promise.createPool)(connectionOptions); - pool.on("connection", (connection2) => { - connection2.query(mysql_transaction_isolation_level); + async query(query, values = []) { + scheduleTick(); + const [result] = await this.connection.query(query, values); + return result; + } + async execute(query, values = []) { + scheduleTick(); + const [result] = await this.connection.execute({ + sql: query, + values, + typeCast: typeCastExecute }); - const connection = await pool.getConnection(); - const [result] = await connection.query("SELECT VERSION() as version"); - dbVersion = `^5[${result[0].version}]`; - connection.release(); - console.log(`${dbVersion} ^2Database server connection established!^0`); - isServerConnected = true; - } catch (err) { - isServerConnected = false; - console.log( - `^3Unable to establish a connection to the database (${err.code})! -^1Error ${err.errno}: ${err.message}^0` - ); + return result; } + beginTransaction() { + this.transaction = true; + return this.connection.beginTransaction(); + } + rollback() { + delete this.transaction; + return this.connection.rollback(); + } + commit() { + delete this.transaction; + return this.connection.commit(); + } + [Symbol.dispose]() { + if (this.transaction) this.commit(); + delete activeConnections[this.id]; + this.connection.release(); + } +}; +__name(_MySql, "MySql"); +var MySql = _MySql; +async function getConnection(connectionId) { + while (!pool) await sleep(0); + return connectionId ? activeConnections[connectionId] : new MySql(await pool.getConnection()); } -__name(createConnectionPool, "createConnectionPool"); -async function getPoolConnection() { - if (!isServerConnected) - await waitForConnection(); - scheduleTick(); - return pool.getConnection(); -} -__name(getPoolConnection, "getPoolConnection"); +__name(getConnection, "getConnection"); // src/utils/parseArguments.ts var parseArguments = /* @__PURE__ */ __name((query, parameters) => { - if (typeof query !== "string") - throw new Error(`Expected query to be a string but received ${typeof query} instead.`); + var _a4; + if (typeof query !== "string") throw new Error(`Expected query to be a string but received ${typeof query} instead.`); if (convertNamedPlaceholders && parameters && typeof parameters === "object" && !Array.isArray(parameters)) { if (query.includes(":") || query.includes("@")) { - const placeholders = convertNamedPlaceholders(query, parameters); - query = placeholders[0]; - parameters = placeholders[1]; + [query, parameters] = convertNamedPlaceholders(query, parameters); } } - if (!parameters || typeof parameters === "function") - parameters = []; + if (!parameters || typeof parameters === "function") parameters = []; + const placeholders = ((_a4 = query.match(/\?(?!\?)/g)) == null ? void 0 : _a4.length) ?? 0; if (parameters && !Array.isArray(parameters)) { let arr = []; - Object.entries(parameters).forEach((entry) => arr[parseInt(entry[0]) - 1] = entry[1]); + for (let i2 = 0; i2 < placeholders; i2++) { + arr[i2] = parameters[i2 + 1] ?? null; + } parameters = arr; } else { - const queryParams = query.match(/\?(?!\?)/g); - if (queryParams !== null) { + if (placeholders) { if (parameters.length === 0) { - for (let i2 = 0; i2 < queryParams.length; i2++) - parameters[i2] = null; + for (let i2 = 0; i2 < placeholders; i2++) parameters[i2] = null; return [query, parameters]; } - const diff = queryParams.length - parameters.length; + const diff = placeholders - parameters.length; if (diff > 0) { - for (let i2 = 0; i2 < diff; i2++) - parameters[queryParams.length + i2] = null; + for (let i2 = 0; i2 < diff; i2++) parameters[placeholders + i2] = null; } else if (diff < 0) { - throw new Error(`Expected ${queryParams.length} parameters, but received ${parameters.length}.`); + throw new Error(`Expected ${placeholders} parameters, but received ${parameters.length}.`); } } } @@ -26224,98 +25810,82 @@ var parseArguments = /* @__PURE__ */ __name((query, parameters) => { // src/utils/setCallback.ts var setCallback = /* @__PURE__ */ __name((parameters, cb) => { - if (cb && typeof cb === "function") - return cb; - if (parameters && typeof parameters === "function") - return parameters; + if (cb && typeof cb === "function") return cb; + if (parameters && typeof parameters === "function") return parameters; }, "setCallback"); // src/utils/parseResponse.ts -var isOkPacket = /* @__PURE__ */ __name((result, insertId) => insertId ? result.insertId !== void 0 : result.affectedRows !== void 0, "isOkPacket"); -var isRowDataPacket = /* @__PURE__ */ __name((result) => result.length !== void 0, "isRowDataPacket"); -var isRowDataPacketArray = /* @__PURE__ */ __name((result) => result.length !== void 0 && result[0] !== void 0 && Object.values(result[0])[0] !== void 0, "isRowDataPacketArray"); var parseResponse = /* @__PURE__ */ __name((type, result) => { switch (type) { case "insert": - return isOkPacket(result) ? result.insertId : null; + return (result == null ? void 0 : result.insertId) ?? null; case "update": - return isOkPacket(result) ? result.affectedRows : null; + return (result == null ? void 0 : result.affectedRows) ?? null; case "single": - return isRowDataPacket(result) ? result[0] : null; + return (result == null ? void 0 : result[0]) ?? null; case "scalar": - return isRowDataPacketArray(result) ? Object.values(result[0])[0] : null; + const row = result == null ? void 0 : result[0]; + return (row && Object.values(row)[0]) ?? null; default: - return result || null; + return result ?? null; } }, "parseResponse"); // src/logger/index.ts -function logError(invokingResource, cb, isPromise, err, query, parameters, includeParameters) { - const message = `${invokingResource} was unable to execute a query!${query ? ` +var loggerResource = ""; +var loggerService = GetConvar("mysql_logger_service", ""); +if (loggerService) { + if (loggerService.startsWith("@")) { + const [resource, ...path] = loggerService.slice(1).split("/"); + if (resource && path) { + loggerResource = resource; + loggerService = path.join("/"); + } + } else loggerService = `logger/${loggerService}`; +} +var logger = loggerService && new Function(LoadResourceFile(loggerResource || GetCurrentResourceName(), `${loggerService}.js`))() || (() => { +}); +function logError(invokingResource, cb, isPromise, err = "", query, parameters, includeParameters) { + const message = typeof err === "object" ? err.message : err.replace(/SCRIPT ERROR: citizen:[\w\/\.]+:\d+[:\s]+/, ""); + const output = `${invokingResource} was unable to execute a query!${query ? ` ${`Query: ${query}`}` : ""}${includeParameters ? ` ${JSON.stringify(parameters)}` : ""} -${err.message}`; +${message}`; TriggerEvent("oxmysql:error", { query, parameters, - message: err.message, + message, err, resource: invokingResource }); - if (cb && isPromise) - return cb(null, message); - console.error(message); + if (typeof err === "object" && err.message) delete err.sqlMessage; + logger({ + level: "error", + resource: invokingResource, + message, + metadata: err + }); + if (cb && isPromise) { + try { + return cb(null, output); + } catch (e2) { + } + return; + } + console.error(output); } __name(logError, "logError"); -var profilerStatements = [ - "SET profiling_history_size = 0", - "SET profiling = 0", - "SET profiling_history_size = 100", - "SET profiling = 1" -]; -async function runProfiler(connection, invokingResource) { - if (!mysql_debug) - return; - if (Array.isArray(mysql_debug) && !mysql_debug.includes(invokingResource)) - return; - for (const statement of profilerStatements) - await connection.query(statement); - return true; -} -__name(runProfiler, "runProfiler"); -async function profileBatchStatements(connection, invokingResource, query, parameters, offset) { - const [profiler] = await connection.query( - "SELECT FORMAT(SUM(DURATION) * 1000, 4) AS `duration` FROM INFORMATION_SCHEMA.PROFILING GROUP BY QUERY_ID" - ); - for (const statement of profilerStatements) - await connection.query(statement); - if (profiler.length === 0) - return; - if (typeof query === "string" && parameters) - for (let i2 = 0; i2 < profiler.length; i2++) { - logQuery(invokingResource, query, parseFloat(profiler[i2].duration), parameters[offset + i2]); - } - else if (typeof query === "object") - for (let i2 = 0; i2 < profiler.length; i2++) { - const transaction = query[offset + i2]; - if (transaction) - logQuery(invokingResource, transaction.query, parseFloat(profiler[i2].duration), transaction.params); - else - break; - } -} -__name(profileBatchStatements, "profileBatchStatements"); var logStorage = {}; var logQuery = /* @__PURE__ */ __name((invokingResource, query, executionTime, parameters) => { if (executionTime >= mysql_slow_query_warning || mysql_debug && (!Array.isArray(mysql_debug) || mysql_debug.includes(invokingResource))) { - // console.log(`${dbVersion} ^3${invokingResource} took ${executionTime.toFixed(4)}ms to execute a query! ${query}${parameters ? ` ${JSON.stringify(parameters)}` : ""}^0`); + console.log( + `${dbVersion} ^3${invokingResource} took ${executionTime.toFixed(4)}ms to execute a query! +${query}${parameters ? ` ${JSON.stringify(parameters)}` : ""}^0` + ); } - if (!mysql_ui) - return; - if (!logStorage[invokingResource]) - logStorage[invokingResource] = []; - else if (logStorage[invokingResource].length > mysql_log_size) - logStorage[invokingResource].splice(0, 1); + if (!mysql_ui) return; + if (!logStorage[invokingResource]) logStorage[invokingResource] = []; + else if (logStorage[invokingResource].length > mysql_log_size) logStorage[invokingResource].splice(0, 1); logStorage[invokingResource].push({ query, executionTime, @@ -26326,10 +25896,9 @@ var logQuery = /* @__PURE__ */ __name((invokingResource, query, executionTime, p RegisterCommand( "mysql", (source2) => { - if (!mysql_ui) - return; + if (!mysql_ui) return; if (source2 < 1) { - // console.log("^3This command cannot run server side^0"); + console.log("^3This command cannot run server side^0"); return; } let totalQueries = 0; @@ -26372,24 +25941,22 @@ var sortQueries = /* @__PURE__ */ __name((queries, sort) => { onNet( `oxmysql:fetchResource`, (data) => { - if (typeof data.resource !== "string" || !IsPlayerAceAllowed(source, "command.mysql")) - return; - const resourceLog = logStorage[data.resource]; + if (typeof data.resource !== "string" || !IsPlayerAceAllowed(source, "command.mysql")) return; + if (data.search) data.search = data.search.toLowerCase(); + const resourceLog = data.search ? logStorage[data.resource].filter((q) => q.query.toLowerCase().includes(data.search)) : logStorage[data.resource]; const sort = data.sortBy && data.sortBy.length > 0 ? data.sortBy[0] : false; const startRow = data.pageIndex * 10; const endRow = startRow + 10; - const queries = sort ? sortQueries(logStorage[data.resource], sort).slice(startRow, endRow) : logStorage[data.resource].slice(startRow, endRow); + const queries = sort ? sortQueries(resourceLog, sort).slice(startRow, endRow) : resourceLog.slice(startRow, endRow); const pageCount = Math.ceil(resourceLog.length / 10); - if (!queries) - return; + if (!queries) return; let resourceTime = 0; let resourceSlowQueries = 0; const resourceQueriesCount = resourceLog.length; for (let i2 = 0; i2 < resourceQueriesCount; i2++) { const query = resourceLog[i2]; resourceTime += query.executionTime; - if (query.slow) - resourceSlowQueries += 1; + if (query.slow) resourceSlowQueries += 1; } emitNet(`oxmysql:loadResource`, source, { queries, @@ -26403,48 +25970,98 @@ onNet( // src/database/rawQuery.ts var import_perf_hooks = require("perf_hooks"); -var rawQuery = /* @__PURE__ */ __name(async (type, invokingResource, query, parameters, cb, isPromise) => { - cb = setCallback(parameters, cb); - try { - [query, parameters] = parseArguments(query, parameters); - } catch (err) { - return logError(invokingResource, cb, err, isPromise, query, parameters); - } - const connection = await getPoolConnection(); - if (!connection) - return; - try { - const hasProfiler = await runProfiler(connection, invokingResource); - const startTime = !hasProfiler && import_perf_hooks.performance.now(); - const [result] = await connection.query(query, parameters); - if (hasProfiler) { - const [profiler] = await connection.query("SELECT FORMAT(SUM(DURATION) * 1000, 4) AS `duration` FROM INFORMATION_SCHEMA.PROFILING"); - if (profiler[0]) - logQuery(invokingResource, query, parseFloat(profiler[0].duration), parameters); - } else if (startTime) { - logQuery(invokingResource, query, import_perf_hooks.performance.now() - startTime, parameters); + +// src/utils/validateResultSet.ts +var oversizedResultSet = GetConvarInt("mysql_resultset_warning", 1e3); +function validateResultSet_default(invokingResource, query, rows) { + const length = Array.isArray(rows) ? rows.length : 0; + if (length < oversizedResultSet) return; + console.warn(`${invokingResource} executed a query with an oversized result set (${length} results)! +${query}`); +} +__name(validateResultSet_default, "default"); + +// src/profiler/index.ts +var profilerStatements = [ + "SET profiling_history_size = 0", + "SET profiling = 0", + "SET profiling_history_size = 100", + "SET profiling = 1" +]; +async function runProfiler(connection, invokingResource) { + if (!mysql_debug) return; + if (Array.isArray(mysql_debug) && !mysql_debug.includes(invokingResource)) return; + for (const statement of profilerStatements) await connection.query(statement); + return true; +} +__name(runProfiler, "runProfiler"); +async function profileBatchStatements(connection, invokingResource, query, parameters, offset) { + const profiler = await connection.query( + "SELECT FORMAT(SUM(DURATION) * 1000, 4) AS `duration` FROM INFORMATION_SCHEMA.PROFILING GROUP BY QUERY_ID" + ); + for (const statement of profilerStatements) await connection.query(statement); + if (profiler.length === 0) return; + if (typeof query === "string" && parameters) { + for (let i2 = 0; i2 < profiler.length; i2++) { + logQuery(invokingResource, query, parseFloat(profiler[i2].duration), parameters[offset + i2]); } - if (cb) + return; + } + if (typeof query === "object") { + for (let i2 = 0; i2 < profiler.length; i2++) { + const transaction = query[offset + i2]; + if (!transaction) break; + logQuery(invokingResource, transaction.query, parseFloat(profiler[i2].duration), transaction.params); + } + } +} +__name(profileBatchStatements, "profileBatchStatements"); + +// src/database/rawQuery.ts +var rawQuery = /* @__PURE__ */ __name(async (type, invokingResource, query, parameters, cb, isPromise, connectionId) => { + var _stack = []; + try { + cb = setCallback(parameters, cb); + try { + [query, parameters] = parseArguments(query, parameters); + } catch (err) { + return logError(invokingResource, cb, isPromise, err, query, parameters); + } + const connection = __using(_stack, await getConnection(connectionId)); + if (!connection) return; + try { + const hasProfiler = await runProfiler(connection, invokingResource); + const startTime = !hasProfiler && import_perf_hooks.performance.now(); + const result = await connection.query(query, parameters); + if (hasProfiler) { + const profiler = await connection.query("SELECT FORMAT(SUM(DURATION) * 1000, 4) AS `duration` FROM INFORMATION_SCHEMA.PROFILING"); + if (profiler[0]) logQuery(invokingResource, query, parseFloat(profiler[0].duration), parameters); + } else if (startTime) { + logQuery(invokingResource, query, import_perf_hooks.performance.now() - startTime, parameters); + } + validateResultSet_default(invokingResource, query, result); + if (!cb) return parseResponse(type, result); try { cb(parseResponse(type, result)); } catch (err) { if (typeof err === "string") { - if (err.includes("SCRIPT ERROR:")) - return console.log(err); - // console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); + if (err.includes("SCRIPT ERROR:")) return console.log(err); + console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); } } - } catch (err) { - logError(invokingResource, cb, isPromise, err, query, parameters, true); + } catch (err) { + logError(invokingResource, cb, isPromise, err, query, parameters, true); + } + } catch (_) { + var _error = _, _hasError = true; } finally { - connection.release(); + __callDispose(_stack, _error, _hasError); } }, "rawQuery"); // src/utils/parseExecute.ts var executeType = /* @__PURE__ */ __name((query) => { - if (typeof query !== "string") - throw new Error(`Expected query to be a string but received ${typeof query} instead.`); + if (typeof query !== "string") throw new Error(`Expected query to be a string but received ${typeof query} instead.`); switch (query.substring(0, query.indexOf(" "))) { case "INSERT": return "insert"; @@ -26458,15 +26075,13 @@ var executeType = /* @__PURE__ */ __name((query) => { }, "executeType"); var parseExecute = /* @__PURE__ */ __name((placeholders, parameters) => { const parametersType = typeof parameters; - if (!parameters || parametersType !== "object") - return []; + if (!parameters || parametersType !== "object") return []; if (!Array.isArray(parameters)) { if (typeof parameters === "object") { const arr = []; Object.entries(parameters).forEach((entry) => arr[parseInt(entry[0]) - 1] = entry[1]); parameters = arr; - } else - throw new Error(`Parameters expected an array but received ${typeof parameters} instead`); + } else throw new Error(`Parameters expected an array but received ${typeof parameters} instead`); } if (!parameters.every(Array.isArray)) { if (parameters.every((item) => typeof item === "object")) { @@ -26477,99 +26092,93 @@ var parseExecute = /* @__PURE__ */ __name((placeholders, parameters) => { Object.entries(value).forEach((entry) => { arr[index][parseInt(entry[0]) - 1] = entry[1]; }); - } else - arr[index] = parameters[index]; + } else arr[index] = parameters[index]; for (let i2 = 0; i2 < placeholders; i2++) { - if (arr[index][i2] === void 0) - arr[index][i2] = null; + if (arr[index][i2] === void 0) arr[index][i2] = null; } }); parameters = arr; - } else - parameters = [[...parameters]]; + } else parameters = [[...parameters]]; } return parameters; }, "parseExecute"); // src/database/rawExecute.ts var import_perf_hooks2 = require("perf_hooks"); -var rawExecute = /* @__PURE__ */ __name(async (invokingResource, query, parameters, cb, isPromise, unpack) => { - cb = setCallback(parameters, cb); - let type; - let placeholders; +var rawExecute = /* @__PURE__ */ __name(async (invokingResource, query, parameters, cb, isPromise, unpack, connectionId) => { + var _stack = []; try { - type = executeType(query); - placeholders = query.split("?").length - 1; - parameters = parseExecute(placeholders, parameters); - } catch (err) { - return logError(invokingResource, cb, isPromise, err, query, parameters); - } - const connection = await getPoolConnection(); - if (!connection) - return; - try { - const hasProfiler = await runProfiler(connection, invokingResource); - const parametersLength = parameters.length == 0 ? 1 : parameters.length; - const response = []; - for (let index = 0; index < parametersLength; index++) { - const values = parameters[index]; - if (values && placeholders > values.length) { - for (let i2 = values.length; i2 < placeholders; i2++) { - values[i2] = null; + cb = setCallback(parameters, cb); + let type; + let placeholders; + try { + type = executeType(query); + placeholders = query.split("?").length - 1; + parameters = parseExecute(placeholders, parameters); + } catch (err) { + return logError(invokingResource, cb, isPromise, err, query, parameters); + } + const connection = __using(_stack, await getConnection(connectionId)); + if (!connection) return; + try { + const hasProfiler = await runProfiler(connection, invokingResource); + const parametersLength = parameters.length == 0 ? 1 : parameters.length; + const response = []; + for (let index = 0; index < parametersLength; index++) { + const values = parameters[index]; + if (values && placeholders > values.length) { + for (let i2 = values.length; i2 < placeholders; i2++) { + values[i2] = null; + } } - } - const startTime = !hasProfiler && import_perf_hooks2.performance.now(); - const [result] = await connection.execute(query, values); - if (cb) { + const startTime = !hasProfiler && import_perf_hooks2.performance.now(); + const result = await connection.execute(query, values); if (Array.isArray(result) && result.length > 1) { for (const value of result) { response.push(unpack ? parseResponse(type, value) : value); } - } else - response.push(unpack ? parseResponse(type, result) : result); - } - if (hasProfiler && (index > 0 && index % 100 === 0 || index === parametersLength - 1)) { - await profileBatchStatements(connection, invokingResource, query, parameters, index < 100 ? 0 : index); - } else if (startTime) { - logQuery(invokingResource, query, import_perf_hooks2.performance.now() - startTime, values); - } - } - if (!cb) - return; - try { - if (response.length === 1) { - if (unpack && type === null) { - if (response[0][0] && Object.keys(response[0][0]).length === 1) { - cb(Object.values(response[0][0])[0]); - } else - cb(response[0][0]); - } else { - cb(response[0]); + } else response.push(unpack ? parseResponse(type, result) : result); + if (hasProfiler && (index > 0 && index % 100 === 0 || index === parametersLength - 1)) { + await profileBatchStatements(connection, invokingResource, query, parameters, index < 100 ? 0 : index); + } else if (startTime) { + logQuery(invokingResource, query, import_perf_hooks2.performance.now() - startTime, values); + } + validateResultSet_default(invokingResource, query, result); + } + if (!cb) return response.length === 1 ? response[0] : response; + try { + if (response.length === 1) { + if (unpack && type === null) { + if (response[0][0] && Object.keys(response[0][0]).length === 1) { + cb(Object.values(response[0][0])[0]); + } else cb(response[0][0]); + } else { + cb(response[0]); + } + } else { + cb(response); + } + } catch (err) { + if (typeof err === "string") { + if (err.includes("SCRIPT ERROR:")) return console.log(err); + console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); } - } else { - cb(response); } } catch (err) { - if (typeof err === "string") { - if (err.includes("SCRIPT ERROR:")) - return console.log(err); - // console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); - } + logError(invokingResource, cb, isPromise, err, query, parameters); } - } catch (err) { - logError(invokingResource, cb, isPromise, err, query, parameters); + } catch (_) { + var _error = _, _hasError = true; } finally { - connection.release(); + __callDispose(_stack, _error, _hasError); } }, "rawExecute"); // src/utils/parseTransaction.ts var isTransactionQuery = /* @__PURE__ */ __name((query) => query.query !== void 0, "isTransactionQuery"); var parseTransaction = /* @__PURE__ */ __name((queries, parameters) => { - if (!Array.isArray(queries)) - throw new Error(`Transaction queries must be array, received '${typeof queries}'.`); - if (!parameters || typeof parameters === "function") - parameters = []; + if (!Array.isArray(queries)) throw new Error(`Transaction queries must be array, received '${typeof queries}'.`); + if (!parameters || typeof parameters === "function") parameters = []; if (Array.isArray(queries[0])) { const transactions2 = queries.map((query) => { if (typeof query[1] !== "object") @@ -26598,76 +26207,128 @@ ${JSON.stringify( )}`; }, "transactionError"); var rawTransaction = /* @__PURE__ */ __name(async (invokingResource, queries, parameters, cb, isPromise) => { - let transactions; - cb = setCallback(parameters, cb); + var _stack = []; try { - transactions = parseTransaction(queries, parameters); - } catch (err) { - return logError(invokingResource, cb, isPromise, err); - } - const connection = await getPoolConnection(); - if (!connection) - return; - let response = false; - try { - const hasProfiler = await runProfiler(connection, invokingResource); - await connection.beginTransaction(); - const transactionsLength = transactions.length; - for (let i2 = 0; i2 < transactionsLength; i2++) { - const transaction = transactions[i2]; - const startTime = !hasProfiler && import_perf_hooks3.performance.now(); - await connection.query(transaction.query, transaction.params); - if (hasProfiler && (i2 > 0 && i2 % 100 === 0 || i2 === transactionsLength - 1)) { - await profileBatchStatements(connection, invokingResource, transactions, null, i2 < 100 ? 0 : i2); - } else if (startTime) { - logQuery(invokingResource, transaction.query, import_perf_hooks3.performance.now() - startTime, transaction.params); - } + let transactions; + cb = setCallback(parameters, cb); + try { + transactions = parseTransaction(queries, parameters); + } catch (err) { + return logError(invokingResource, cb, isPromise, err); } - await connection.commit(); - response = true; - } catch (err) { - await connection.rollback().catch(() => { - }); - const transactionErrorMessage = err.sql || transactionError(transactions, parameters); - const msg = `${invokingResource} was unable to complete a transaction! + const connection = __using(_stack, await getConnection()); + if (!connection) return; + let response = false; + try { + const hasProfiler = await runProfiler(connection, invokingResource); + await connection.beginTransaction(); + const transactionsLength = transactions.length; + for (let i2 = 0; i2 < transactionsLength; i2++) { + const transaction = transactions[i2]; + const startTime = !hasProfiler && import_perf_hooks3.performance.now(); + await connection.query(transaction.query, transaction.params); + if (hasProfiler && (i2 > 0 && i2 % 100 === 0 || i2 === transactionsLength - 1)) { + await profileBatchStatements(connection, invokingResource, transactions, null, i2 < 100 ? 0 : i2); + } else if (startTime) { + logQuery(invokingResource, transaction.query, import_perf_hooks3.performance.now() - startTime, transaction.params); + } + } + await connection.commit(); + response = true; + } catch (err) { + await connection.rollback().catch(() => { + }); + const transactionErrorMessage = err.sql || transactionError(transactions, parameters); + const msg = `${invokingResource} was unable to complete a transaction! ${transactionErrorMessage} ${err.message}`; - console.error(msg); - TriggerEvent("oxmysql:transaction-error", { - query: transactionErrorMessage, - parameters, - message: err.message, - err, - resource: invokingResource - }); - } finally { - connection.release(); - } - if (cb) - try { - cb(response); - } catch (err) { - if (typeof err === "string") { - if (err.includes("SCRIPT ERROR:")) - return console.log(err); - // console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); - } + console.error(msg); + TriggerEvent("oxmysql:transaction-error", { + query: transactionErrorMessage, + parameters, + message: err.message, + err, + resource: invokingResource + }); + if (typeof err === "object" && err.message) delete err.sqlMessage; + logger({ + level: "error", + resource: invokingResource, + message: msg, + metadata: err + }); } + if (cb) + try { + cb(response); + } catch (err) { + if (typeof err === "string") { + if (err.includes("SCRIPT ERROR:")) return console.log(err); + console.log(`^1SCRIPT ERROR in invoking resource ${invokingResource}: ${err}^0`); + } + } + } catch (_) { + var _error = _, _hasError = true; + } finally { + __callDispose(_stack, _error, _hasError); + } }, "rawTransaction"); // src/database/index.ts setTimeout(async () => { setDebug(); - while (!isServerConnected) { + while (!pool) { await createConnectionPool(); - if (!isServerConnected) - await sleep(3e4); + if (!pool) await sleep(3e4); } }); setInterval(() => { setDebug(); }, 1e3); +// src/database/startTransaction.ts +async function runQuery(conn, sql, values) { + [sql, values] = parseArguments(sql, values); + try { + if (!conn) throw new Error(`Connection used by transaction timed out after 30 seconds.`); + return await conn.query(sql, values); + } catch (err) { + throw new Error(`Query: ${sql} +${JSON.stringify(values)} +${err.message}`); + } +} +__name(runQuery, "runQuery"); +var startTransaction = /* @__PURE__ */ __name(async (invokingResource, queries, cb, isPromise) => { + var _stack = []; + try { + const conn = __using(_stack, await getConnection()); + let response = false; + let closed = false; + if (!conn) return; + setTimeout(() => closed = true, 3e4); + try { + await conn.beginTransaction(); + const commit = await queries( + (sql, values) => runQuery(closed ? null : conn, sql, values) + ); + if (closed) throw new Error(`Transaction has timed out after 30 seconds.`); + response = commit === false ? false : true; + if (!response) conn.rollback(); + } catch (err) { + conn.rollback(); + logError(invokingResource, cb, isPromise, err); + } finally { + closed = true; + } + return cb ? cb(response) : response; + } catch (_) { + var _error = _, _hasError = true; + } finally { + __callDispose(_stack, _error, _hasError); + } +}, "startTransaction"); + // src/compatibility/ghmattimysql.ts var ghmattimysql_default = { query: "execute", @@ -26690,10 +26351,10 @@ var mysql_async_default = { Promise.resolve().then(() => init_update()); var MySQL = {}; MySQL.isReady = () => { - return isServerConnected; + return pool ? true : false; }; MySQL.awaitConnection = async () => { - await waitForConnection(); + while (!pool) await sleep(0); return true; }; MySQL.query = (query, parameters, cb, invokingResource = GetInvokingResource(), isPromise) => { @@ -26714,6 +26375,10 @@ MySQL.insert = (query, parameters, cb, invokingResource = GetInvokingResource(), MySQL.transaction = (queries, parameters, cb, invokingResource = GetInvokingResource(), isPromise) => { rawTransaction(invokingResource, queries, parameters, cb, isPromise); }; +MySQL.startTransaction = (transactions, invokingResource = GetInvokingResource()) => { + console.warn(`MySQL.startTransaction is "experimental" and may receive breaking changes.`); + return startTransaction(invokingResource, transactions, void 0, true); +}; MySQL.prepare = (query, parameters, cb, invokingResource = GetInvokingResource(), isPromise) => { rawExecute(invokingResource, query, parameters, cb, isPromise, true); }; @@ -26737,8 +26402,7 @@ for (const key in MySQL) { query, parameters, (result, err) => { - if (err) - return reject(new Error(err)); + if (err) return reject(new Error(err)); resolve(result); }, invokingResource, diff --git a/resources/[standalone]/oxmysql/fxmanifest.lua b/resources/[standalone]/oxmysql/fxmanifest.lua index ed83f44..9e8d554 100644 --- a/resources/[standalone]/oxmysql/fxmanifest.lua +++ b/resources/[standalone]/oxmysql/fxmanifest.lua @@ -1,11 +1,11 @@ -fx_version 'adamant' +fx_version 'cerulean' game 'common' use_experimental_fxv2_oal 'yes' lua54 'yes' name 'oxmysql' author 'Overextended' -version '2.8.0' +version '2.12.0' license 'LGPL-3.0-or-later' repository 'https://github.com/overextended/oxmysql.git' description 'FXServer to MySQL communication via node-mysql2' diff --git a/resources/[standalone]/oxmysql/lib/MySQL.lua b/resources/[standalone]/oxmysql/lib/MySQL.lua index e6677e4..0de5f20 100644 --- a/resources/[standalone]/oxmysql/lib/MySQL.lua +++ b/resources/[standalone]/oxmysql/lib/MySQL.lua @@ -1,17 +1,28 @@ local promise = promise local Await = Citizen.Await -local GetCurrentResourceName = GetCurrentResourceName() +local resourceName = GetCurrentResourceName() local GetResourceState = GetResourceState +local options = { + return_callback_errors = false +} + +for i = 1, GetNumResourceMetadata(resourceName, 'mysql_option') do + local option = GetResourceMetadata(resourceName, 'mysql_option', i - 1) + options[option] = true +end + local function await(fn, query, parameters) local p = promise.new() + fn(nil, query, parameters, function(result, error) if error then return p:reject(error) end p:resolve(result) - end, GetCurrentResourceName, true) + end, resourceName, true) + return Await(p) end @@ -23,6 +34,7 @@ local function safeArgs(query, parameters, cb, transaction) if queryType == 'number' then query = queryStore[query] + assert(query, "First argument received invalid query store reference") elseif transaction then if queryType ~= 'table' then error(("First argument expected table, received '%s'"):format(query)) @@ -60,7 +72,7 @@ local oxmysql = exports.oxmysql local mysql_method_mt = { __call = function(self, query, parameters, cb) query, parameters, cb = safeArgs(query, parameters, cb, self.method == 'transaction') - return oxmysql[self.method](nil, query, parameters, cb, GetCurrentResourceName, false) + return oxmysql[self.method](nil, query, parameters, cb, resourceName, options.return_callback_errors) end } @@ -136,4 +148,8 @@ MySQL.ready = setmetatable({ end, }) +function MySQL.startTransaction(cb) + return oxmysql:startTransaction(cb, resourceName) +end + _ENV.MySQL = MySQL diff --git a/resources/[standalone]/oxmysql/lib/define.lua b/resources/[standalone]/oxmysql/lib/define.lua deleted file mode 100644 index 1847bd5..0000000 --- a/resources/[standalone]/oxmysql/lib/define.lua +++ /dev/null @@ -1,153 +0,0 @@ ----@meta ----Lua Language Server annotations ----https://marketplace.visualstudio.com/items?itemName=sumneko.lua - -MySQL = {} - ----@class QueryResult ----@field affectedRows number? ----@field fieldCount number? ----@field info string? ----@field insertId number? ----@field serverStatus number? ----@field warningStatus number? ----@field changedRows number? - ----@alias MySQLColumn unknown ----@alias MySQLRow { [string]?: MySQLColumn } ----@alias MySQLQuery QueryResult | { [number]?: { [string]: MySQLColumn } } ----@alias MySQLParameters any[] | { [string]: any } ----@alias MySQLTransaction ----| string[] ----| { [1]: string, [2]: MySQLParameters }[] ----| { query: string, values: MySQLParameters }[] ----| { query: string, parameters: MySQLParameters }[] - ----@param query string ----@param parameters? MySQLParameters | fun(result: number) ----@param cb? fun(affectedRows: number) -function MySQL.update(query, parameters, cb) end - -MySQL.Async.execute = MySQL.update - ----@param query string ----@param parameters? MySQLParameters ----@return number affectedRows ----@async -function MySQL.update.await(query, parameters) end - -MySQL.Sync.execute = MySQL.update.await - ----@param query string ----@param parameters? MySQLParameters | fun(result: MySQLQuery) ----@param cb? fun(result: MySQLQuery) -function MySQL.query(query, parameters, cb) end - -MySQL.Async.fetchAll = MySQL.query - ----@param query string ----@param parameters? MySQLParameters ----@return MySQLQuery result ----@async -function MySQL.query.await(query, parameters) end - -MySQL.Sync.fetchAll = MySQL.query.await - ----@param query string ----@param parameters? MySQLParameters | fun(column?: MySQLColumn) ----@param cb? fun(column?: MySQLColumn) -function MySQL.scalar(query, parameters, cb) end - -MySQL.Async.fetchScalar = MySQL.scalar - ----@param query string ----@param parameters? MySQLParameters | fun(row?: MySQLRow) ----@param cb? fun(row?: MySQLRow) -function MySQL.single(query, parameters, cb) end - -MySQL.Async.fetchSingle = MySQL.single - ----@param query string ----@param parameters? MySQLParameters ----@return table | nil row ----@async -function MySQL.single.await(query, parameters) end - -MySQL.Sync.fetchSingle = MySQL.single.await - ----@param query string ----@param parameters? MySQLParameters ----@return unknown | nil column ----@async -function MySQL.scalar.await(query, parameters) end - -MySQL.Sync.fetchScalar = MySQL.scalar.await - ----@param query string ----@param parameters? MySQLParameters | fun(insertId: number) ----@param cb? fun(insertId: number) -function MySQL.insert(query, parameters, cb) end - -MySQL.Async.insert = MySQL.insert - ----@param query string ----@param parameters? MySQLParameters ----@return number insertId ----@async -function MySQL.insert.await(query, parameters) end - -MySQL.Sync.insert = MySQL.insert.await - ----@param queries MySQLTransaction ----@param parameters? MySQLParameters | fun(success: boolean) ----@param cb? fun(success: boolean) -function MySQL.transaction(queries, parameters, cb) end - -MySQL.Async.transaction = MySQL.transaction - ----@param queries MySQLTransaction ----@param parameters? MySQLParameters ----@return boolean success ----@async -function MySQL.transaction.await(queries, parameters) end - -MySQL.Sync.transaction = MySQL.transaction.await - ----@param query string ----@param parameters? MySQLParameters | fun(result?: MySQLColumn | MySQLRow | MySQLQuery) ----@param cb? fun(result?: MySQLColumn | MySQLRow | MySQLQuery) -function MySQL.prepare(query, parameters, cb) end - -MySQL.Async.prepare = MySQL.prepare - ----@param query string ----@param parameters? MySQLParameters ----@return MySQLColumn | MySQLRow | MySQLQuery | nil result ----@async -function MySQL.prepare.await(query, parameters) end - -MySQL.Sync.prepare = MySQL.prepare.await - ----@param query string ----@param parameters? MySQLParameters | fun(result?: MySQLQuery) ----@param cb? fun(result?: MySQLQuery) -function MySQL.rawExecute(query, parameters, cb) end - ----@param query string ----@param parameters? MySQLParameters ----@return MySQLQuery? result ----@async -function MySQL.rawExecute.await(query, parameters) end - ----@param cb function -function MySQL.ready(cb) end - ----@async -function MySQL.ready.await() end - ----@return boolean -function MySQL.isReady() end - ----@return true ----@async -function MySQL.awaitConnection() end \ No newline at end of file diff --git a/resources/[standalone]/oxmysql/logger/fivemanage.js b/resources/[standalone]/oxmysql/logger/fivemanage.js new file mode 100644 index 0000000..6fb8e36 --- /dev/null +++ b/resources/[standalone]/oxmysql/logger/fivemanage.js @@ -0,0 +1,38 @@ +// https://fivemanage.com/?ref=overextended + +const apiKey = GetConvar('FIVEMANAGE_LOGS_API_KEY', ''); + +if (!apiKey) return console.warning(`convar "FIVEMANAGE_LOGS_API_KEY" has not been set`); + +const batchedLogs = []; +const endpoint = 'https://api.fivemanage.com/api/logs/batch'; +const headers = { + ['Content-Type']: 'application/json', + ['Authorization']: apiKey, + ['User-Agent']: 'oxmysql', +}; + +async function sendLogs() { + try { + const body = JSON.stringify(batchedLogs); + batchedLogs.length = 0; + + const response = await fetch(endpoint, { + method: 'POST', + body: body, + headers: headers, + }); + + if (response.ok) return; + + console.error(`Failed to submit logs to fivemanage - ${response.status} ${response.statusText}`); + } catch (err) { + console.error(err); + } +} + +return function logger(data) { + if (batchedLogs.length === 0) setTimeout(sendLogs, 500); + + batchedLogs.push(data); +}; diff --git a/resources/[standalone]/oxmysql/web/build/assets/index-37a4a4fa.css b/resources/[standalone]/oxmysql/web/build/assets/index-37a4a4fa.css new file mode 100644 index 0000000..8801c72 --- /dev/null +++ b/resources/[standalone]/oxmysql/web/build/assets/index-37a4a4fa.css @@ -0,0 +1 @@ +@import"https://use.typekit.net/qgr5ebd.css";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.visible{visibility:visible}.absolute{position:absolute}.m-4{margin:1rem}.mb-4{margin-bottom:1rem}.mt-0{margin-top:0}.mt-6{margin-top:1.5rem}.flex{display:flex}.table{display:table}.grid{display:grid}.h-\[700px\]{height:700px}.h-full{height:100%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-12{width:3rem}.w-2\/3{width:66.666667%}.w-3\/4{width:75%}.w-\[1200px\]{width:1200px}.w-full{width:100%}.max-w-\[200px\]{max-width:200px}.max-w-xl{max-width:36rem}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.self-center{align-self:center}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-md{border-radius:.375rem}.border-\[1px\]{border-width:1px}.border-transparent{border-color:transparent}.bg-dark-50{--tw-bg-opacity: 1;background-color:rgb(193 194 197 / var(--tw-bg-opacity))}.bg-dark-600{--tw-bg-opacity: 1;background-color:rgb(37 38 43 / var(--tw-bg-opacity))}.bg-dark-700{--tw-bg-opacity: 1;background-color:rgb(26 27 30 / var(--tw-bg-opacity))}.bg-dark-800{--tw-bg-opacity: 1;background-color:rgb(20 21 23 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-5{padding-bottom:1.25rem}.pr-0{padding-right:0}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-end{text-align:end}.font-main{font-family:Roboto}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-dark-100{--tw-text-opacity: 1;color:rgb(166 167 171 / var(--tw-text-opacity))}.text-dark-300{--tw-text-opacity: 1;color:rgb(92 95 102 / var(--tw-text-opacity))}.text-dark-400{--tw-text-opacity: 1;color:rgb(55 58 64 / var(--tw-text-opacity))}.text-dark-50{--tw-text-opacity: 1;color:rgb(193 194 197 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity))}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}*{margin:0;padding:0}#app{width:100vw;height:100vh}::-webkit-scrollbar{width:2px}::-webkit-scrollbar-track{background:#25262b}::-webkit-scrollbar-thumb{background:#909296}::-webkit-scrollbar-thumb:hover{background:#a6a7ab}.focus-within\:border-cyan-600:focus-within{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity))}.hover\:bg-dark-400:hover{--tw-bg-opacity: 1;background-color:rgb(55 58 64 / var(--tw-bg-opacity))}.hover\:bg-dark-500:hover{--tw-bg-opacity: 1;background-color:rgb(44 46 51 / var(--tw-bg-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus-visible\:border-cyan-600:focus-visible{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity))}.focus-visible\:text-white:focus-visible{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.active\:translate-y-\[3px\]:active{--tw-translate-y: 3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-dark-300:disabled{--tw-bg-opacity: 1;background-color:rgb(92 95 102 / var(--tw-bg-opacity))}.disabled\:text-dark-400:disabled{--tw-text-opacity: 1;color:rgb(55 58 64 / var(--tw-text-opacity))} diff --git a/resources/[standalone]/oxmysql/web/build/assets/index-5e39ce18.js b/resources/[standalone]/oxmysql/web/build/assets/index-5e39ce18.js deleted file mode 100644 index cfdaf01..0000000 --- a/resources/[standalone]/oxmysql/web/build/assets/index-5e39ce18.js +++ /dev/null @@ -1,46 +0,0 @@ -var $l=Object.defineProperty;var Al=(e,t,n)=>t in e?$l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var I=(e,t,n)=>(Al(e,typeof t!="symbol"?t+"":t,n),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function ht(){}const ea=e=>e;function N(e,t){for(const n in t)e[n]=t[n];return e}function na(e){return e()}function rs(){return Object.create(null)}function Jt(e){e.forEach(na)}function ae(e){return typeof e=="function"}function Y(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Pl(e){return Object.keys(e).length===0}function Ds(e,...t){if(e==null)return ht;const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function Fl(e){let t;return Ds(e,n=>t=n)(),t}function gt(e,t,n){e.$$.on_destroy.push(Ds(t,n))}function Rt(e,t,n,i){if(e){const s=ia(e,t,n,i);return e[0](s)}}function ia(e,t,n,i){return e[1]&&i?N(n.ctx.slice(),e[1](i(t))):n.ctx}function $t(e,t,n,i){if(e[2]&&i){const s=e[2](i(n));if(t.dirty===void 0)return s;if(typeof s=="object"){const o=[],r=Math.max(t.dirty.length,s.length);for(let a=0;a32){const t=[],n=e.ctx.length/32;for(let i=0;iwindow.performance.now():()=>Date.now(),Es=sa?e=>requestAnimationFrame(e):ht;const We=new Set;function oa(e){We.forEach(t=>{t.c(e)||(We.delete(t),t.f())}),We.size!==0&&Es(oa)}function Ol(e){let t;return We.size===0&&Es(oa),{promise:new Promise(n=>{We.add(t={c:e,f:n})}),abort(){We.delete(t)}}}let Ri=!1;function El(){Ri=!0}function Ll(){Ri=!1}function Tl(e,t,n,i){for(;e>1);n(s)<=i?e=s+1:t=s}return e}function Il(e){if(e.hydrate_init)return;e.hydrate_init=!0;let t=e.childNodes;if(e.nodeName==="HEAD"){const l=[];for(let c=0;c0&&t[n[s]].claim_order<=c?s+1:Tl(1,s,d=>t[n[d]].claim_order,c))-1;i[l]=n[u]+1;const f=u+1;n[f]=l,s=Math.max(f,s)}const o=[],r=[];let a=t.length-1;for(let l=n[s]+1;l!=0;l=i[l-1]){for(o.push(t[l-1]);a>=l;a--)r.push(t[a]);a--}for(;a>=0;a--)r.push(t[a]);o.reverse(),r.sort((l,c)=>l.claim_order-c.claim_order);for(let l=0,c=0;l=o[c].claim_order;)c++;const u=ce.removeEventListener(t,n,i)}function O(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Bl(e,t){const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const i in t)t[i]==null?e.removeAttribute(i):i==="style"?e.style.cssText=t[i]:i==="__value"?e.value=e[i]=t[i]:n[i]&&n[i].set?e[i]=t[i]:O(e,i,t[i])}function ii(e,t){for(const n in t)O(e,n,t[n])}function jl(e){return Array.from(e.childNodes)}function Wl(e){e.claim_info===void 0&&(e.claim_info={last_index:0,total_claimed:0})}function Gl(e,t,n,i,s=!1){Wl(e);const o=(()=>{for(let r=e.claim_info.last_index;r=0;r--){const a=e[r];if(t(a)){const l=n(a);return l===void 0?e.splice(r,1):e[r]=l,s?l===void 0&&e.claim_info.last_index--:e.claim_info.last_index=r,a}}return i()})();return o.claim_order=e.claim_info.total_claimed,e.claim_info.total_claimed+=1,o}function ql(e,t){return Gl(e,n=>n.nodeType===3,n=>{const i=""+t;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>J(t),!0)}function jt(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function io(e,t){e.value=t??""}function Fn(e,t,n){e.classList[n?"add":"remove"](t)}function Yl(e,t,{bubbles:n=!1,cancelable:i=!1}={}){const s=document.createEvent("CustomEvent");return s.initCustomEvent(e,n,i,t),s}function Xe(e,t){return new e(t)}const si=new Map;let oi=0;function Ul(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}function Xl(e,t){const n={stylesheet:Vl(t),rules:{}};return si.set(e,n),n}function so(e,t,n,i,s,o,r,a=0){const l=16.666/i;let c=`{ -`;for(let m=0;m<=1;m+=l){const _=t+(n-t)*o(m);c+=m*100+`%{${r(_,1-_)}} -`}const u=c+`100% {${r(n,1-n)}} -}`,f=`__svelte_${Ul(u)}_${a}`,d=ra(e),{stylesheet:h,rules:g}=si.get(d)||Xl(d,e);g[f]||(g[f]=!0,h.insertRule(`@keyframes ${f} ${u}`,h.cssRules.length));const p=e.style.animation||"";return e.style.animation=`${p?`${p}, `:""}${f} ${i}ms linear ${s}ms 1 both`,oi+=1,f}function Kl(e,t){const n=(e.style.animation||"").split(", "),i=n.filter(t?o=>o.indexOf(t)<0:o=>o.indexOf("__svelte")===-1),s=n.length-i.length;s&&(e.style.animation=i.join(", "),oi-=s,oi||Ql())}function Ql(){Es(()=>{oi||(si.forEach(e=>{const{ownerNode:t}=e.stylesheet;t&&X(t)}),si.clear())})}let De;function Ae(e){De=e}function tn(){if(!De)throw new Error("Function called outside component initialization");return De}function $i(e){tn().$$.on_mount.push(e)}function Zl(e){tn().$$.after_update.push(e)}function en(e){tn().$$.on_destroy.push(e)}function Jl(e,t){return tn().$$.context.set(e,t),t}function Ls(e){return tn().$$.context.get(e)}function tc(e){return tn().$$.context.has(e)}function ec(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach(i=>i.call(this,t))}const Be=[],Ke=[];let Ge=[];const as=[],la=Promise.resolve();let ls=!1;function ca(){ls||(ls=!0,la.then(fa))}function Ts(){return ca(),la}function Qe(e){Ge.push(e)}function ua(e){as.push(e)}const Vi=new Set;let Ve=0;function fa(){if(Ve!==0)return;const e=De;do{try{for(;Vee.indexOf(i)===-1?t.push(i):n.push(i)),n.forEach(i=>i()),Ge=t}let nn;function sc(){return nn||(nn=Promise.resolve(),nn.then(()=>{nn=null})),nn}function zi(e,t,n){e.dispatchEvent(Yl(`${t?"intro":"outro"}${n}`))}const Kn=new Set;let re;function Lt(){re={r:0,c:[],p:re}}function Tt(){re.r||Jt(re.c),re=re.p}function S(e,t){e&&e.i&&(Kn.delete(e),e.i(t))}function M(e,t,n,i){if(e&&e.o){if(Kn.has(e))return;Kn.add(e),re.c.push(()=>{Kn.delete(e),i&&(n&&e.d(1),i())}),e.o(t)}else i&&i()}const oc={duration:0};function ri(e,t,n,i){const s={direction:"both"};let o=t(e,n,s),r=i?0:1,a=null,l=null,c=null;function u(){c&&Kl(e,c)}function f(h,g){const p=h.b-r;return g*=Math.abs(p),{a:r,b:h.b,d:p,duration:g,start:h.start,end:h.start+g,group:h.group}}function d(h){const{delay:g=0,duration:p=300,easing:m=ea,tick:_=ht,css:b}=o||oc,y={start:Dl()+g,b:h};h||(y.group=re,re.r+=1),a||l?l=y:(b&&(u(),c=so(e,r,h,p,g,m,b)),h&&_(0,1),a=f(y,p),Qe(()=>zi(e,h,"start")),Ol(x=>{if(l&&x>l.start&&(a=f(l,p),l=null,zi(e,a.b,"start"),b&&(u(),c=so(e,r,a.b,a.duration,0,m,o.css))),a){if(x>=a.end)_(r=a.b,1-r),zi(e,a.b,"end"),l||(a.b?u():--a.group.r||Jt(a.group.c)),a=null;else if(x>=a.start){const v=x-a.start;r=a.a+a.d*m(v/a.duration),_(r,1-r)}}return!!(a||l)}))}return{run(h){ae(o)?sc().then(()=>{o=o(s),d(h)}):d(h)},end(){u(),a=l=null}}}function Vt(e,t){const n={},i={},s={$$scope:1};let o=e.length;for(;o--;){const r=e[o],a=t[o];if(a){for(const l in r)l in a||(i[l]=1);for(const l in a)s[l]||(n[l]=a[l],s[l]=1);e[o]=a}else for(const l in r)s[l]=1}for(const r in i)r in n||(n[r]=void 0);return n}function te(e){return typeof e=="object"&&e!==null?e:{}}const rc=/[&"]/g,ac=/[&<]/g;function lc(e,t=!1){const n=String(e),i=t?rc:ac;i.lastIndex=0;let s="",o=0;for(;i.test(n);){const r=i.lastIndex-1,a=n[r];s+=n.substring(o,r)+(a==="&"?"&":a==='"'?""":"<"),o=r+1}return s+n.substring(o)}function cc(e,t){if(!e||!e.$$render)throw t==="svelte:component"&&(t+=" this={...}"),new Error(`<${t}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${t}>.`);return e}let Hi;function da(e){function t(n,i,s,o,r){const a=De,l={on_destroy:Hi,context:new Map(r||(a?a.$$.context:[])),on_mount:[],before_update:[],after_update:[],callbacks:rs()};Ae({$$:l});const c=e(n,i,s,o);return Ae(a),c}return{render:(n={},{$$slots:i={},context:s=new Map}={})=>{Hi=[];const o={title:"",head:"",css:new Set},r=t(o,n,{},i,s);return Jt(Hi),{html:r,css:{code:Array.from(o.css).map(a=>a.code).join(` -`),map:null},head:o.title+o.head}},$$render:t}}function ha(e,t,n){const i=e.$$.props[t];i!==void 0&&(e.$$.bound[i]=n,n(e.$$.ctx[i]))}function H(e){e&&e.c()}function uc(e,t){e&&e.l(t)}function V(e,t,n,i){const{fragment:s,after_update:o}=e.$$;s&&s.m(t,n),i||Qe(()=>{const r=e.$$.on_mount.map(na).filter(ae);e.$$.on_destroy?e.$$.on_destroy.push(...r):Jt(r),e.$$.on_mount=[]}),o.forEach(Qe)}function z(e,t){const n=e.$$;n.fragment!==null&&(ic(n.after_update),Jt(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function fc(e,t){e.$$.dirty[0]===-1&&(Be.push(e),ca(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const g=h.length?h[0]:d;return c.ctx&&s(c.ctx[f],c.ctx[f]=g)&&(!c.skip_bound&&c.bound[f]&&c.bound[f](g),u&&fc(e,f)),d}):[],c.update(),u=!0,Jt(c.before_update),c.fragment=i?i(c.ctx):!1,t.target){if(t.hydrate){El();const f=jl(t.target);c.fragment&&c.fragment.l(f),f.forEach(X)}else c.fragment&&c.fragment.c();t.intro&&S(e.$$.fragment),V(e,t.target,t.anchor,t.customElement),Ll(),fa()}Ae(l)}class K{$destroy(){z(this,1),this.$destroy=ht}$on(t,n){if(!ae(n))return ht;const i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(n),()=>{const s=i.indexOf(n);s!==-1&&i.splice(s,1)}}$set(t){this.$$set&&!Pl(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const ze=[];function cs(e,t){return{subscribe:Ft(e,t).subscribe}}function Ft(e,t=ht){let n;const i=new Set;function s(a){if(Y(e,a)&&(e=a,n)){const l=!ze.length;for(const c of i)c[1](),ze.push(c,e);if(l){for(let c=0;c{i.delete(c),i.size===0&&n&&(n(),n=null)}}return{set:s,update:o,subscribe:r}}function Ai(e,t,n){const i=!Array.isArray(e),s=i?[e]:e,o=t.length<2;return cs(n,r=>{let a=!1;const l=[];let c=0,u=ht;const f=()=>{if(c)return;u();const h=t(i?l[0]:l,r);o?r(h):u=ae(h)?h:ht},d=s.map((h,g)=>Ds(h,p=>{l[g]=p,c&=~(1<{c|=1<a.startsWith(":")?(n.push(a.slice(1)),"([^\\/]+)"):a).join("\\/"),r=t.match(new RegExp(`^${o}$`));return r||(s=!1,r=t.match(new RegExp(`^${o}`))),r?(n.forEach((a,l)=>i[a]=r[l+1]),{exact:s,params:i,part:r[0].slice(0,-1)}):null}function ga(e,t,n){if(n==="")return e;if(n[0]==="/")return n;let i=r=>r.split("/").filter(a=>a!==""),s=i(e);return"/"+(t?i(t):[]).map((r,a)=>s[a]).join("/")+"/"+n}function oo(e,t,n,i){let s=[t,"data-"+t].reduce((o,r)=>{let a=e.getAttribute(r);return n&&e.removeAttribute(r),a===null?o:a},!1);return!i&&s===""?!0:s||i||!1}function hc(e){let t=e.split("&").map(n=>n.split("=")).reduce((n,i)=>{let s=i[0];if(!s)return n;let o=i.length>1?i[i.length-1]:!0;return typeof o=="string"&&o.includes(",")&&(o=o.split(",")),n[s]===void 0?n[s]=[o]:n[s].push(o),n},{});return Object.entries(t).reduce((n,i)=>(n[i[0]]=i[1].length>1?i[1]:i[1][0],n),{})}function gc(e){return Object.entries(e).map(([t,n])=>n?n===!0?t:`${t}=${Array.isArray(n)?n.join(","):n}`:null).filter(t=>t).join("&")}function ro(e,t){return e?t+e:""}function pa(e){throw new Error("[Tinro] "+e)}var Ht={HISTORY:1,HASH:2,MEMORY:3,OFF:4,run(e,t,n,i){return e===this.HISTORY?t&&t():e===this.HASH?n&&n():i&&i()},getDefault(){return!window||window.location.pathname==="srcdoc"?this.MEMORY:this.HISTORY}},Is,ma,_a,ai="",zt=pc();function pc(){let e=Ht.getDefault(),t,n=r=>window.onhashchange=window.onpopstate=Is=null,i=r=>t&&t(Ni(e)),s=r=>{r&&(e=r),n(),e!==Ht.OFF&&Ht.run(e,a=>window.onpopstate=i,a=>window.onhashchange=i)&&i()},o=r=>{let a=Object.assign(Ni(e),r);return a.path+ro(gc(a.query),"?")+ro(a.hash,"#")};return{mode:s,get:r=>Ni(e),go(r,a){mc(e,r,a),i()},start(r){t=r,s()},stop(){t=null,s(Ht.OFF)},set(r){this.go(o(r),!r.path)},methods(){return _c(this)},base:r=>ai=r}}function mc(e,t,n){!n&&(ma=_a);let i=s=>history[`${n?"replace":"push"}State`]({},"",s);Ht.run(e,s=>i(ai+t),s=>i(`#${t}`),s=>Is=t)}function Ni(e){let t=window.location,n=Ht.run(e,s=>(ai?t.pathname.replace(ai,""):t.pathname)+t.search+t.hash,s=>String(t.hash.slice(1)||"/"),s=>Is||"/"),i=n.match(/^([^?#]+)(?:\?([^#]+))?(?:\#(.+))?$/);return _a=n,{url:n,from:ma,path:i[1]||"",query:hc(i[2]||""),hash:i[3]||""}}function _c(e){let t=()=>e.get().query,n=r=>e.set({query:r}),i=r=>n(r(t())),s=()=>e.get().hash,o=r=>e.set({hash:r});return{hash:{get:s,set:o,clear:()=>o("")},query:{replace:n,clear:()=>n(""),get(r){return r?t()[r]:t()},set(r,a){i(l=>(l[r]=a,l))},delete(r){i(a=>(a[r]&&delete a[r],a))}}}}var Oe=bc();function bc(){let{subscribe:e}=Ft(zt.get(),t=>{zt.start(t);let n=yc(zt.go);return()=>{zt.stop(),n()}});return{subscribe:e,goto:zt.go,params:vc,meta:Vs,useHashNavigation:t=>zt.mode(t?Ht.HASH:Ht.HISTORY),mode:{hash:()=>zt.mode(Ht.HASH),history:()=>zt.mode(Ht.HISTORY),memory:()=>zt.mode(Ht.MEMORY)},base:zt.base,location:zt.methods()}}function yc(e){let t=n=>{let i=n.target.closest("a[href]"),s=i&&oo(i,"target",!1,"_self"),o=i&&oo(i,"tinro-ignore"),r=n.ctrlKey||n.metaKey||n.altKey||n.shiftKey;if(s=="_self"&&!o&&!r&&i){let a=i.getAttribute("href").replace(/^\/#/,"");/^\/\/|^#|^[a-zA-Z]+:/.test(a)||(n.preventDefault(),e(a.startsWith("/")?a:i.href.replace(window.location.origin,"")))}};return addEventListener("click",t),()=>removeEventListener("click",t)}function vc(){return Ls("tinro").meta.params}var li="tinro",xc=ba({pattern:"",matched:!0});function wc(e){let t=Ls(li)||xc;(t.exact||t.fallback)&&pa(`${e.fallback?"":``} can't be inside ${t.fallback?"":` with exact path`}`);let n=e.fallback?"fallbacks":"childs",i=Ft({}),s=ba({fallback:e.fallback,parent:t,update(o){s.exact=!o.path.endsWith("/*"),s.pattern=us(`${s.parent.pattern||""}${o.path}`),s.redirect=o.redirect,s.firstmatch=o.firstmatch,s.breadcrumb=o.breadcrumb,s.match()},register:()=>(s.parent[n].add(s),async()=>{s.parent[n].delete(s),s.parent.activeChilds.delete(s),s.router.un&&s.router.un(),s.parent.match()}),show:()=>{e.onShow(),!s.fallback&&s.parent.activeChilds.add(s)},hide:()=>{e.onHide(),s.parent.activeChilds.delete(s)},match:async()=>{s.matched=!1;let{path:o,url:r,from:a,query:l}=s.router.location,c=dc(s.pattern,o);if(!s.fallback&&c&&s.redirect&&(!s.exact||s.exact&&c.exact)){let u=ga(o,s.parent.pattern,s.redirect);return Oe.goto(u,!0)}s.meta=c&&{from:a,url:r,query:l,match:c.part,pattern:s.pattern,breadcrumbs:s.parent.meta&&s.parent.meta.breadcrumbs.slice()||[],params:c.params,subscribe:i.subscribe},s.breadcrumb&&s.meta&&s.meta.breadcrumbs.push({name:s.breadcrumb,path:c.part}),i.set(s.meta),c&&!s.fallback&&(!s.exact||s.exact&&c.exact)&&(!s.parent.firstmatch||!s.parent.matched)?(e.onMeta(s.meta),s.parent.matched=!0,s.show()):s.hide(),c&&s.showFallbacks()}});return Jl(li,s),$i(()=>s.register()),s}function Vs(){return tc(li)?Ls(li).meta:pa("meta() function must be run inside any `` child component only")}function ba(e){let t={router:{},exact:!1,pattern:null,meta:null,parent:null,fallback:!1,redirect:!1,firstmatch:!1,breadcrumb:null,matched:!1,childs:new Set,activeChilds:new Set,fallbacks:new Set,async showFallbacks(){if(!this.fallback&&(await Ts(),this.childs.size>0&&this.activeChilds.size==0||this.childs.size==0&&this.fallbacks.size>0)){let n=this;for(;n.fallbacks.size==0;)if(n=n.parent,!n)return;n&&n.fallbacks.forEach(i=>{if(i.redirect){let s=ga("/",i.parent.pattern,i.redirect);Oe.goto(s,!0)}else i.show()})}},start(){this.router.un||(this.router.un=Oe.subscribe(n=>{this.router.location=n,this.pattern!==null&&this.match()}))},match(){this.showFallbacks()}};return Object.assign(t,e),t.start(),t}const Sc=e=>({params:e&2,meta:e&4}),ao=e=>({params:e[1],meta:e[2]});function lo(e){let t;const n=e[9].default,i=Rt(n,e,e[8],ao);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&262)&&At(i,n,s,s[8],t?$t(n,s[8],o,Sc):Pt(s[8]),ao)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function Cc(e){let t,n,i=e[0]&&lo(e);return{c(){i&&i.c(),t=kn()},m(s,o){i&&i.m(s,o),ot(s,t,o),n=!0},p(s,[o]){s[0]?i?(i.p(s,o),o&1&&S(i,1)):(i=lo(s),i.c(),S(i,1),i.m(t.parentNode,t)):i&&(Lt(),M(i,1,1,()=>{i=null}),Tt())},i(s){n||(S(i),n=!0)},o(s){M(i),n=!1},d(s){i&&i.d(s),s&&X(t)}}}function Mc(e,t,n){let{$$slots:i={},$$scope:s}=t,{path:o="/*"}=t,{fallback:r=!1}=t,{redirect:a=!1}=t,{firstmatch:l=!1}=t,{breadcrumb:c=null}=t,u=!1,f={},d={};const h=wc({fallback:r,onShow(){n(0,u=!0)},onHide(){n(0,u=!1)},onMeta(g){n(2,d=g),n(1,f=d.params)}});return e.$$set=g=>{"path"in g&&n(3,o=g.path),"fallback"in g&&n(4,r=g.fallback),"redirect"in g&&n(5,a=g.redirect),"firstmatch"in g&&n(6,l=g.firstmatch),"breadcrumb"in g&&n(7,c=g.breadcrumb),"$$scope"in g&&n(8,s=g.$$scope)},e.$$.update=()=>{e.$$.dirty&232&&h.update({path:o,redirect:a,firstmatch:l,breadcrumb:c})},[u,f,d,o,r,a,l,c,s,i]}class co extends K{constructor(t){super(),Q(this,t,Mc,Cc,Y,{path:3,fallback:4,redirect:5,firstmatch:6,breadcrumb:7})}}async function ya(e,t={}){const n={method:"post",headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(t)},i=window.GetParentResourceName?window.GetParentResourceName():"nui-frame-app";return await(await fetch(`https://${i}/${e}`,n)).json()}var uo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function fo(e,t,n){const i=e.slice();return i[9]=t[n][0],i[10]=t[n][1],i}function Bi(e){let t,n=[e[10]],i={};for(let s=0;s{n(6,t=N(N({},t),nt(d))),n(5,s=no(t,i)),"name"in d&&n(0,a=d.name),"color"in d&&n(1,l=d.color),"size"in d&&n(2,c=d.size),"stroke"in d&&n(3,u=d.stroke),"iconNode"in d&&n(4,f=d.iconNode),"$$scope"in d&&n(7,r=d.$$scope)},t=nt(t),[a,l,c,u,f,s,t,r,o]}class $c extends K{constructor(t){super(),Q(this,t,Rc,kc,Y,{name:0,color:1,size:2,stroke:3,iconNode:4})}}const le=$c;function Ac(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function Pc(e){let t,n;const i=[{name:"chevron-left"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Ac]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class Dc extends K{constructor(t){super(),Q(this,t,Fc,Pc,Y,{})}}const va=Dc;function Oc(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function Ec(e){let t,n;const i=[{name:"chevron-right"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Oc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class Tc extends K{constructor(t){super(),Q(this,t,Lc,Ec,Y,{})}}const Ic=Tc;function Vc(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function zc(e){let t,n;const i=[{name:"chevrons-left"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Vc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class Nc extends K{constructor(t){super(),Q(this,t,Hc,zc,Y,{})}}const Bc=Nc;function jc(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function Wc(e){let t,n;const i=[{name:"chevrons-right"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[jc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class qc extends K{constructor(t){super(),Q(this,t,Gc,Wc,Y,{})}}const Yc=qc,ji=Ft(!1),fs=Ft("");let go;const Uc=Ai(fs,(e,t)=>(go=setTimeout(()=>t(e),500),()=>clearTimeout(go))),ds=Ft([]),Xc=Ai([ds,Uc],([e,t],n)=>{if(t===""||!t)return n(e);const i=t.toLowerCase();return n(e.filter(s=>s.toLowerCase().includes(i)))}),hs=Ft({queries:0,timeQuerying:0,slowQueries:0}),gs=Ft({labels:[],data:[]}),Qn=Ft([]),ps=Ft({resourceQueriesCount:0,resourceSlowQueries:0,resourceTime:0}),de=Ft(0);let po;const Kc=Ai(de,(e,t)=>{clearTimeout(po),po=setTimeout(()=>{t(e)},300)});function Qc(e){let t,n,i,s,o,r,a,l,c,u,f,d=e[1]+1+"",h,g,p,m,_,b,y,x,v,R,k,$,A,F;return i=new Bc({}),a=new va({}),b=new Ic({}),R=new Yc({}),{c(){t=P("div"),n=P("button"),H(i.$$.fragment),o=q(),r=P("button"),H(a.$$.fragment),c=q(),u=P("p"),f=J("Page "),h=J(d),g=J(" of "),p=J(e[0]),m=q(),_=P("button"),H(b.$$.fragment),x=q(),v=P("button"),H(R.$$.fragment),n.disabled=s=e[1]===0,O(n,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 disabled:cursor-not-allowed text-dark-100 hover:text-white focus-visible:text-white rounded-md hover:bg-dark-500 p-2 active:translate-y-[3px] outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),r.disabled=l=e[1]===0,O(r,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 disabled:cursor-not-allowed text-dark-100 hover:text-white focus-visible:text-white rounded-md hover:bg-dark-500 p-2 active:translate-y-[3px] outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),_.disabled=y=e[1]>=e[0]-1,O(_,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 disabled:cursor-not-allowed text-dark-100 hover:text-white focus-visible:text-white rounded-md hover:bg-dark-500 p-2 active:translate-y-[3px] outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),v.disabled=k=e[1]===e[0]-1,O(v,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 disabled:cursor-not-allowed text-dark-100 hover:text-white focus-visible:text-white rounded-md hover:bg-dark-500 p-2 active:translate-y-[3px] outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),O(t,"class","flex justify-center items-center gap-6 pb-5")},m(C,D){ot(C,t,D),w(t,n),V(i,n,null),w(t,o),w(t,r),V(a,r,null),w(t,c),w(t,u),w(u,f),w(u,h),w(u,g),w(u,p),w(t,m),w(t,_),V(b,_,null),w(t,x),w(t,v),V(R,v,null),$=!0,A||(F=[Nt(n,"click",e[2]),Nt(r,"click",e[3]),Nt(_,"click",e[4]),Nt(v,"click",e[5])],A=!0)},p(C,[D]){(!$||D&2&&s!==(s=C[1]===0))&&(n.disabled=s),(!$||D&2&&l!==(l=C[1]===0))&&(r.disabled=l),(!$||D&2)&&d!==(d=C[1]+1+"")&&jt(h,d),(!$||D&1)&&jt(p,C[0]),(!$||D&3&&y!==(y=C[1]>=C[0]-1))&&(_.disabled=y),(!$||D&3&&k!==(k=C[1]===C[0]-1))&&(v.disabled=k)},i(C){$||(S(i.$$.fragment,C),S(a.$$.fragment,C),S(b.$$.fragment,C),S(R.$$.fragment,C),$=!0)},o(C){M(i.$$.fragment,C),M(a.$$.fragment,C),M(b.$$.fragment,C),M(R.$$.fragment,C),$=!1},d(C){C&&X(t),z(i),z(a),z(b),z(R),A=!1,Jt(F)}}}function Zc(e,t,n){let i;gt(e,de,c=>n(1,i=c));let{maxPage:s}=t;en(()=>n(0,s=0));const o=()=>St(de,i=0,i),r=()=>St(de,i--,i),a=()=>St(de,i++,i),l=()=>St(de,i=s-1,i);return e.$$set=c=>{"maxPage"in c&&n(0,s=c.maxPage)},[s,i,o,r,a,l]}let Jc=class extends K{constructor(t){super(),Q(this,t,Zc,Qc,Y,{maxPage:0})}};function tu(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function eu(e){let t,n;const i=[{name:"chevron-down"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[tu]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class iu extends K{constructor(t){super(),Q(this,t,nu,eu,Y,{})}}const su=iu;function ou(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function ru(e){let t,n;const i=[{name:"chevron-up"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[ou]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class lu extends K{constructor(t){super(),Q(this,t,au,ru,Y,{})}}const cu=lu;/** - * table-core - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function he(e,t){return typeof e=="function"?e(t):e}function It(e,t){return n=>{t.setState(i=>({...i,[e]:he(n,i[e])}))}}function ci(e){return e instanceof Function}function uu(e,t){const n=[],i=s=>{s.forEach(o=>{n.push(o);const r=t(o);r!=null&&r.length&&i(r)})};return i(e),n}function L(e,t,n){let i=[],s;return()=>{let o;n.key&&n.debug&&(o=Date.now());const r=e();if(!(r.length!==i.length||r.some((c,u)=>i[u]!==c)))return s;i=r;let l;if(n.key&&n.debug&&(l=Date.now()),s=t(...r),n==null||n.onChange==null||n.onChange(s),n.key&&n.debug&&n!=null&&n.debug()){const c=Math.round((Date.now()-o)*100)/100,u=Math.round((Date.now()-l)*100)/100,f=u/16,d=(h,g)=>{for(h=String(h);h.length{let h=d;for(const p of l.split(".")){var g;h=(g=h)==null?void 0:g[p]}return h}:u=d=>d[a.accessorKey]),!c)throw new Error;let f={id:`${String(c)}`,accessorFn:u,parent:i,depth:n,columnDef:a,columns:[],getFlatColumns:L(()=>[!0],()=>{var d;return[f,...(d=f.columns)==null?void 0:d.flatMap(h=>h.getFlatColumns())]},{key:"column.getFlatColumns",debug:()=>{var d;return(d=e.options.debugAll)!=null?d:e.options.debugColumns}}),getLeafColumns:L(()=>[e._getOrderColumnsFn()],d=>{var h;if((h=f.columns)!=null&&h.length){let g=f.columns.flatMap(p=>p.getLeafColumns());return d(g)}return[f]},{key:"column.getLeafColumns",debug:()=>{var d;return(d=e.options.debugAll)!=null?d:e.options.debugColumns}})};return f=e._features.reduce((d,h)=>Object.assign(d,h.createColumn==null?void 0:h.createColumn(f,e)),f),f}function mo(e,t,n){var i;let o={id:(i=n.id)!=null?i:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const r=[],a=l=>{l.subHeaders&&l.subHeaders.length&&l.subHeaders.map(a),r.push(l)};return a(o),r},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(r=>{Object.assign(o,r.createHeader==null?void 0:r.createHeader(o,e))}),o}const du={createTable:e=>({getHeaderGroups:L(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i,s)=>{var o,r;const a=(o=i==null?void 0:i.map(f=>n.find(d=>d.id===f)).filter(Boolean))!=null?o:[],l=(r=s==null?void 0:s.map(f=>n.find(d=>d.id===f)).filter(Boolean))!=null?r:[],c=n.filter(f=>!(i!=null&&i.includes(f.id))&&!(s!=null&&s.includes(f.id)));return Dn(t,[...a,...c,...l],e)},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterHeaderGroups:L(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i,s)=>(n=n.filter(o=>!(i!=null&&i.includes(o.id))&&!(s!=null&&s.includes(o.id))),Dn(t,n,e,"center")),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftHeaderGroups:L(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,i)=>{var s;const o=(s=i==null?void 0:i.map(r=>n.find(a=>a.id===r)).filter(Boolean))!=null?s:[];return Dn(t,o,e,"left")},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightHeaderGroups:L(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,i)=>{var s;const o=(s=i==null?void 0:i.map(r=>n.find(a=>a.id===r)).filter(Boolean))!=null?s:[];return Dn(t,o,e,"right")},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getFooterGroups:L(()=>[e.getHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftFooterGroups:L(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterFooterGroups:L(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightFooterGroups:L(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getFlatHeaders:L(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftFlatHeaders:L(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterFlatHeaders:L(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightFlatHeaders:L(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterLeafHeaders:L(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftLeafHeaders:L(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightLeafHeaders:L(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeafHeaders:L(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,i)=>{var s,o,r,a,l,c;return[...(s=(o=t[0])==null?void 0:o.headers)!=null?s:[],...(r=(a=n[0])==null?void 0:a.headers)!=null?r:[],...(l=(c=i[0])==null?void 0:c.headers)!=null?l:[]].map(u=>u.getLeafHeaders()).flat()},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}})})};function Dn(e,t,n,i){var s,o;let r=0;const a=function(d,h){h===void 0&&(h=1),r=Math.max(r,h),d.filter(g=>g.getIsVisible()).forEach(g=>{var p;(p=g.columns)!=null&&p.length&&a(g.columns,h+1)},0)};a(e);let l=[];const c=(d,h)=>{const g={depth:h,id:[i,`${h}`].filter(Boolean).join("_"),headers:[]},p=[];d.forEach(m=>{const _=[...p].reverse()[0],b=m.column.depth===g.depth;let y,x=!1;if(b&&m.column.parent?y=m.column.parent:(y=m.column,x=!0),_&&(_==null?void 0:_.column)===y)_.subHeaders.push(m);else{const v=mo(n,y,{id:[i,h,y.id,m==null?void 0:m.id].filter(Boolean).join("_"),isPlaceholder:x,placeholderId:x?`${p.filter(R=>R.column===y).length}`:void 0,depth:h,index:p.length});v.subHeaders.push(m),p.push(v)}g.headers.push(m),m.headerGroup=g}),l.push(g),h>0&&c(p,h-1)},u=t.map((d,h)=>mo(n,d,{depth:r,index:h}));c(u,r-1),l.reverse();const f=d=>d.filter(g=>g.column.getIsVisible()).map(g=>{let p=0,m=0,_=[0];g.subHeaders&&g.subHeaders.length?(_=[],f(g.subHeaders).forEach(y=>{let{colSpan:x,rowSpan:v}=y;p+=x,_.push(v)})):p=1;const b=Math.min(..._);return m=m+b,g.colSpan=p,g.rowSpan=m,{colSpan:p,rowSpan:m}});return f((s=(o=l[0])==null?void 0:o.headers)!=null?s:[]),l}const On={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},Wi=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),hu={getDefaultColumnDef:()=>On,getInitialState:e=>({columnSizing:{},columnSizingInfo:Wi(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",onColumnSizingChange:It("columnSizing",e),onColumnSizingInfoChange:It("columnSizingInfo",e)}),createColumn:(e,t)=>({getSize:()=>{var n,i,s;const o=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:On.minSize,(i=o??e.columnDef.size)!=null?i:On.size),(s=e.columnDef.maxSize)!=null?s:On.maxSize)},getStart:n=>{const i=n?n==="left"?t.getLeftVisibleLeafColumns():t.getRightVisibleLeafColumns():t.getVisibleLeafColumns(),s=i.findIndex(o=>o.id===e.id);if(s>0){const o=i[s-1];return o.getStart(n)+o.getSize()}return 0},resetSize:()=>{t.setColumnSizing(n=>{let{[e.id]:i,...s}=n;return s})},getCanResize:()=>{var n,i;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((i=t.options.enableColumnResizing)!=null?i:!0)},getIsResizing:()=>t.getState().columnSizingInfo.isResizingColumn===e.id}),createHeader:(e,t)=>({getSize:()=>{let n=0;const i=s=>{if(s.subHeaders.length)s.subHeaders.forEach(i);else{var o;n+=(o=s.column.getSize())!=null?o:0}};return i(e),n},getStart:()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},getResizeHandler:()=>{const n=t.getColumn(e.column.id),i=n==null?void 0:n.getCanResize();return s=>{if(!n||!i||(s.persist==null||s.persist(),Gi(s)&&s.touches&&s.touches.length>1))return;const o=e.getSize(),r=e?e.getLeafHeaders().map(p=>[p.column.id,p.column.getSize()]):[[n.id,n.getSize()]],a=Gi(s)?Math.round(s.touches[0].clientX):s.clientX,l={},c=(p,m)=>{typeof m=="number"&&(t.setColumnSizingInfo(_=>{var b,y;const x=m-((b=_==null?void 0:_.startOffset)!=null?b:0),v=Math.max(x/((y=_==null?void 0:_.startSize)!=null?y:0),-.999999);return _.columnSizingStart.forEach(R=>{let[k,$]=R;l[k]=Math.round(Math.max($+$*v,0)*100)/100}),{..._,deltaOffset:x,deltaPercentage:v}}),(t.options.columnResizeMode==="onChange"||p==="end")&&t.setColumnSizing(_=>({..._,...l})))},u=p=>c("move",p),f=p=>{c("end",p),t.setColumnSizingInfo(m=>({...m,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},d={moveHandler:p=>u(p.clientX),upHandler:p=>{document.removeEventListener("mousemove",d.moveHandler),document.removeEventListener("mouseup",d.upHandler),f(p.clientX)}},h={moveHandler:p=>(p.cancelable&&(p.preventDefault(),p.stopPropagation()),u(p.touches[0].clientX),!1),upHandler:p=>{var m;document.removeEventListener("touchmove",h.moveHandler),document.removeEventListener("touchend",h.upHandler),p.cancelable&&(p.preventDefault(),p.stopPropagation()),f((m=p.touches[0])==null?void 0:m.clientX)}},g=gu()?{passive:!1}:!1;Gi(s)?(document.addEventListener("touchmove",h.moveHandler,g),document.addEventListener("touchend",h.upHandler,g)):(document.addEventListener("mousemove",d.moveHandler,g),document.addEventListener("mouseup",d.upHandler,g)),t.setColumnSizingInfo(p=>({...p,startOffset:a,startSize:o,deltaOffset:0,deltaPercentage:0,columnSizingStart:r,isResizingColumn:n.id}))}}}),createTable:e=>({setColumnSizing:t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),setColumnSizingInfo:t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),resetColumnSizing:t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},resetHeaderSizeInfo:t=>{var n;e.setColumnSizingInfo(t?Wi():(n=e.initialState.columnSizingInfo)!=null?n:Wi())},getTotalSize:()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getLeftTotalSize:()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getCenterTotalSize:()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getRightTotalSize:()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0}})};let En=null;function gu(){if(typeof En=="boolean")return En;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return En=e,En}function Gi(e){return e.type==="touchstart"}const pu={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:It("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;return{_autoResetExpanded:()=>{var i,s;if(!t){e._queue(()=>{t=!0});return}if((i=(s=e.options.autoResetAll)!=null?s:e.options.autoResetExpanded)!=null?i:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},setExpanded:i=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(i),toggleAllRowsExpanded:i=>{i??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},resetExpanded:i=>{var s,o;e.setExpanded(i?{}:(s=(o=e.initialState)==null?void 0:o.expanded)!=null?s:{})},getCanSomeRowsExpand:()=>e.getRowModel().flatRows.some(i=>i.getCanExpand()),getToggleAllRowsExpandedHandler:()=>i=>{i.persist==null||i.persist(),e.toggleAllRowsExpanded()},getIsSomeRowsExpanded:()=>{const i=e.getState().expanded;return i===!0||Object.values(i).some(Boolean)},getIsAllRowsExpanded:()=>{const i=e.getState().expanded;return typeof i=="boolean"?i===!0:!(!Object.keys(i).length||e.getRowModel().flatRows.some(s=>!s.getIsExpanded()))},getExpandedDepth:()=>{let i=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(o=>{const r=o.split(".");i=Math.max(i,r.length)}),i},getPreExpandedRowModel:()=>e.getSortedRowModel(),getExpandedRowModel:()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())}},createRow:(e,t)=>({toggleExpanded:n=>{t.setExpanded(i=>{var s;const o=i===!0?!0:!!(i!=null&&i[e.id]);let r={};if(i===!0?Object.keys(t.getRowModel().rowsById).forEach(a=>{r[a]=!0}):r=i,n=(s=n)!=null?s:!o,!o&&n)return{...r,[e.id]:!0};if(o&&!n){const{[e.id]:a,...l}=r;return l}return i})},getIsExpanded:()=>{var n;const i=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:i===!0||i!=null&&i[e.id])},getCanExpand:()=>{var n,i,s;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((i=t.options.enableExpanding)!=null?i:!0)&&!!((s=e.subRows)!=null&&s.length)},getToggleExpandedHandler:()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}})},xa=(e,t,n)=>{var i;const s=n.toLowerCase();return!!((i=e.getValue(t))!=null&&i.toLowerCase().includes(s))};xa.autoRemove=e=>Wt(e);const wa=(e,t,n)=>{var i;return!!((i=e.getValue(t))!=null&&i.includes(n))};wa.autoRemove=e=>Wt(e);const Sa=(e,t,n)=>{var i;return((i=e.getValue(t))==null?void 0:i.toLowerCase())===n.toLowerCase()};Sa.autoRemove=e=>Wt(e);const Ca=(e,t,n)=>{var i;return(i=e.getValue(t))==null?void 0:i.includes(n)};Ca.autoRemove=e=>Wt(e)||!(e!=null&&e.length);const Ma=(e,t,n)=>!n.some(i=>{var s;return!((s=e.getValue(t))!=null&&s.includes(i))});Ma.autoRemove=e=>Wt(e)||!(e!=null&&e.length);const ka=(e,t,n)=>n.some(i=>{var s;return(s=e.getValue(t))==null?void 0:s.includes(i)});ka.autoRemove=e=>Wt(e)||!(e!=null&&e.length);const Ra=(e,t,n)=>e.getValue(t)===n;Ra.autoRemove=e=>Wt(e);const $a=(e,t,n)=>e.getValue(t)==n;$a.autoRemove=e=>Wt(e);const zs=(e,t,n)=>{let[i,s]=n;const o=e.getValue(t);return o>=i&&o<=s};zs.resolveFilterValue=e=>{let[t,n]=e,i=typeof t!="number"?parseFloat(t):t,s=typeof n!="number"?parseFloat(n):n,o=t===null||Number.isNaN(i)?-1/0:i,r=n===null||Number.isNaN(s)?1/0:s;if(o>r){const a=o;o=r,r=a}return[o,r]};zs.autoRemove=e=>Wt(e)||Wt(e[0])&&Wt(e[1]);const ee={includesString:xa,includesStringSensitive:wa,equalsString:Sa,arrIncludes:Ca,arrIncludesAll:Ma,arrIncludesSome:ka,equals:Ra,weakEquals:$a,inNumberRange:zs};function Wt(e){return e==null||e===""}const mu={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],globalFilter:void 0,...e}),getDefaultOptions:e=>({onColumnFiltersChange:It("columnFilters",e),onGlobalFilterChange:It("globalFilter",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100,globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n,i;const s=(n=e.getCoreRowModel().flatRows[0])==null||(i=n._getAllCellsByColumnId()[t.id])==null?void 0:i.getValue();return typeof s=="string"||typeof s=="number"}}),createColumn:(e,t)=>({getAutoFilterFn:()=>{const n=t.getCoreRowModel().flatRows[0],i=n==null?void 0:n.getValue(e.id);return typeof i=="string"?ee.includesString:typeof i=="number"?ee.inNumberRange:typeof i=="boolean"||i!==null&&typeof i=="object"?ee.equals:Array.isArray(i)?ee.arrIncludes:ee.weakEquals},getFilterFn:()=>{var n,i;return ci(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(i=t.options.filterFns)==null?void 0:i[e.columnDef.filterFn])!=null?n:ee[e.columnDef.filterFn]},getCanFilter:()=>{var n,i,s;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((i=t.options.enableColumnFilters)!=null?i:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&!!e.accessorFn},getCanGlobalFilter:()=>{var n,i,s,o;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((i=t.options.enableGlobalFilter)!=null?i:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&((o=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?o:!0)&&!!e.accessorFn},getIsFiltered:()=>e.getFilterIndex()>-1,getFilterValue:()=>{var n,i;return(n=t.getState().columnFilters)==null||(i=n.find(s=>s.id===e.id))==null?void 0:i.value},getFilterIndex:()=>{var n,i;return(n=(i=t.getState().columnFilters)==null?void 0:i.findIndex(s=>s.id===e.id))!=null?n:-1},setFilterValue:n=>{t.setColumnFilters(i=>{const s=e.getFilterFn(),o=i==null?void 0:i.find(u=>u.id===e.id),r=he(n,o?o.value:void 0);if(_o(s,r,e)){var a;return(a=i==null?void 0:i.filter(u=>u.id!==e.id))!=null?a:[]}const l={id:e.id,value:r};if(o){var c;return(c=i==null?void 0:i.map(u=>u.id===e.id?l:u))!=null?c:[]}return i!=null&&i.length?[...i,l]:[l]})},_getFacetedRowModel:t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),getFacetedRowModel:()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),_getFacetedUniqueValues:t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),getFacetedUniqueValues:()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,_getFacetedMinMaxValues:t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),getFacetedMinMaxValues:()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}),createRow:(e,t)=>({columnFilters:{},columnFiltersMeta:{}}),createTable:e=>({getGlobalAutoFilterFn:()=>ee.includesString,getGlobalFilterFn:()=>{var t,n;const{globalFilterFn:i}=e.options;return ci(i)?i:i==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[i])!=null?t:ee[i]},setColumnFilters:t=>{const n=e.getAllLeafColumns(),i=s=>{var o;return(o=he(t,s))==null?void 0:o.filter(r=>{const a=n.find(l=>l.id===r.id);if(a){const l=a.getFilterFn();if(_o(l,r.value,a))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(i)},setGlobalFilter:t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},resetGlobalFilter:t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)},resetColumnFilters:t=>{var n,i;e.setColumnFilters(t?[]:(n=(i=e.initialState)==null?void 0:i.columnFilters)!=null?n:[])},getPreFilteredRowModel:()=>e.getCoreRowModel(),getFilteredRowModel:()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel()),_getGlobalFacetedRowModel:e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),getGlobalFacetedRowModel:()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),_getGlobalFacetedUniqueValues:e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),getGlobalFacetedUniqueValues:()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,_getGlobalFacetedMinMaxValues:e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),getGlobalFacetedMinMaxValues:()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}})};function _o(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const _u=(e,t,n)=>n.reduce((i,s)=>{const o=s.getValue(e);return i+(typeof o=="number"?o:0)},0),bu=(e,t,n)=>{let i;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(i>o||i===void 0&&o>=o)&&(i=o)}),i},yu=(e,t,n)=>{let i;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(i=o)&&(i=o)}),i},vu=(e,t,n)=>{let i,s;return n.forEach(o=>{const r=o.getValue(e);r!=null&&(i===void 0?r>=r&&(i=s=r):(i>r&&(i=r),s{let n=0,i=0;if(t.forEach(s=>{let o=s.getValue(e);o!=null&&(o=+o)>=o&&(++n,i+=o)}),n)return i/n},wu=(e,t)=>{if(!t.length)return;let n=0,i=0;return t.forEach(s=>{let o=s.getValue(e);typeof o=="number"&&(n=Math.min(n,o),i=Math.max(i,o))}),(n+i)/2},Su=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),Cu=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,Mu=(e,t)=>t.length,qi={sum:_u,min:bu,max:yu,extent:vu,mean:xu,median:wu,unique:Su,uniqueCount:Cu,count:Mu},ku={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:It("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>({toggleGrouping:()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(i=>i!==e.id):[...n??[],e.id])},getCanGroup:()=>{var n,i,s,o;return(n=(i=(s=(o=e.columnDef.enableGrouping)!=null?o:!0)!=null?s:t.options.enableGrouping)!=null?i:!0)!=null?n:!!e.accessorFn},getIsGrouped:()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},getGroupedIndex:()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},getToggleGroupingHandler:()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},getAutoAggregationFn:()=>{const n=t.getCoreRowModel().flatRows[0],i=n==null?void 0:n.getValue(e.id);if(typeof i=="number")return qi.sum;if(Object.prototype.toString.call(i)==="[object Date]")return qi.extent},getAggregationFn:()=>{var n,i;if(!e)throw new Error;return ci(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(i=t.options.aggregationFns)==null?void 0:i[e.columnDef.aggregationFn])!=null?n:qi[e.columnDef.aggregationFn]}}),createTable:e=>({setGrouping:t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),resetGrouping:t=>{var n,i;e.setGrouping(t?[]:(n=(i=e.initialState)==null?void 0:i.grouping)!=null?n:[])},getPreGroupedRowModel:()=>e.getFilteredRowModel(),getGroupedRowModel:()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())}),createRow:e=>({getIsGrouped:()=>!!e.groupingColumnId,_groupingValuesCache:{}}),createCell:(e,t,n,i)=>({getIsGrouped:()=>t.getIsGrouped()&&t.id===n.groupingColumnId,getIsPlaceholder:()=>!e.getIsGrouped()&&t.getIsGrouped(),getIsAggregated:()=>{var s;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((s=n.subRows)!=null&&s.length)}})};function Ru(e,t,n){if(!(t!=null&&t.length)||!n)return e;const i=e.filter(o=>!t.includes(o.id));return n==="remove"?i:[...t.map(o=>e.find(r=>r.id===o)).filter(Boolean),...i]}const $u={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:It("columnOrder",e)}),createTable:e=>({setColumnOrder:t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),resetColumnOrder:t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},_getOrderColumnsFn:L(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,i)=>s=>{let o=[];if(!(t!=null&&t.length))o=s;else{const r=[...t],a=[...s];for(;a.length&&r.length;){const l=r.shift(),c=a.findIndex(u=>u.id===l);c>-1&&o.push(a.splice(c,1)[0])}o=[...o,...a]}return Ru(o,n,i)},{key:!1})})},ms=0,_s=10,Yi=()=>({pageIndex:ms,pageSize:_s}),Au={getInitialState:e=>({...e,pagination:{...Yi(),...e==null?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:It("pagination",e)}),createTable:e=>{let t=!1,n=!1;return{_autoResetPageIndex:()=>{var i,s;if(!t){e._queue(()=>{t=!0});return}if((i=(s=e.options.autoResetAll)!=null?s:e.options.autoResetPageIndex)!=null?i:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},setPagination:i=>{const s=o=>he(i,o);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(s)},resetPagination:i=>{var s;e.setPagination(i?Yi():(s=e.initialState.pagination)!=null?s:Yi())},setPageIndex:i=>{e.setPagination(s=>{let o=he(i,s.pageIndex);const r=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return o=Math.max(0,Math.min(o,r)),{...s,pageIndex:o}})},resetPageIndex:i=>{var s,o,r;e.setPageIndex(i?ms:(s=(o=e.initialState)==null||(r=o.pagination)==null?void 0:r.pageIndex)!=null?s:ms)},resetPageSize:i=>{var s,o,r;e.setPageSize(i?_s:(s=(o=e.initialState)==null||(r=o.pagination)==null?void 0:r.pageSize)!=null?s:_s)},setPageSize:i=>{e.setPagination(s=>{const o=Math.max(1,he(i,s.pageSize)),r=s.pageSize*s.pageIndex,a=Math.floor(r/o);return{...s,pageIndex:a,pageSize:o}})},setPageCount:i=>e.setPagination(s=>{var o;let r=he(i,(o=e.options.pageCount)!=null?o:-1);return typeof r=="number"&&(r=Math.max(-1,r)),{...s,pageCount:r}}),getPageOptions:L(()=>[e.getPageCount()],i=>{let s=[];return i&&i>0&&(s=[...new Array(i)].fill(null).map((o,r)=>r)),s},{key:!1,debug:()=>{var i;return(i=e.options.debugAll)!=null?i:e.options.debugTable}}),getCanPreviousPage:()=>e.getState().pagination.pageIndex>0,getCanNextPage:()=>{const{pageIndex:i}=e.getState().pagination,s=e.getPageCount();return s===-1?!0:s===0?!1:ie.setPageIndex(i=>i-1),nextPage:()=>e.setPageIndex(i=>i+1),getPrePaginationRowModel:()=>e.getExpandedRowModel(),getPaginationRowModel:()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),getPageCount:()=>{var i;return(i=e.options.pageCount)!=null?i:Math.ceil(e.getPrePaginationRowModel().rows.length/e.getState().pagination.pageSize)}}}},Ui=()=>({left:[],right:[]}),Pu={getInitialState:e=>({columnPinning:Ui(),...e}),getDefaultOptions:e=>({onColumnPinningChange:It("columnPinning",e)}),createColumn:(e,t)=>({pin:n=>{const i=e.getLeafColumns().map(s=>s.id).filter(Boolean);t.setColumnPinning(s=>{var o,r;if(n==="right"){var a,l;return{left:((a=s==null?void 0:s.left)!=null?a:[]).filter(f=>!(i!=null&&i.includes(f))),right:[...((l=s==null?void 0:s.right)!=null?l:[]).filter(f=>!(i!=null&&i.includes(f))),...i]}}if(n==="left"){var c,u;return{left:[...((c=s==null?void 0:s.left)!=null?c:[]).filter(f=>!(i!=null&&i.includes(f))),...i],right:((u=s==null?void 0:s.right)!=null?u:[]).filter(f=>!(i!=null&&i.includes(f)))}}return{left:((o=s==null?void 0:s.left)!=null?o:[]).filter(f=>!(i!=null&&i.includes(f))),right:((r=s==null?void 0:s.right)!=null?r:[]).filter(f=>!(i!=null&&i.includes(f)))}})},getCanPin:()=>e.getLeafColumns().some(i=>{var s,o;return((s=i.columnDef.enablePinning)!=null?s:!0)&&((o=t.options.enablePinning)!=null?o:!0)}),getIsPinned:()=>{const n=e.getLeafColumns().map(a=>a.id),{left:i,right:s}=t.getState().columnPinning,o=n.some(a=>i==null?void 0:i.includes(a)),r=n.some(a=>s==null?void 0:s.includes(a));return o?"left":r?"right":!1},getPinnedIndex:()=>{var n,i,s;const o=e.getIsPinned();return o?(n=(i=t.getState().columnPinning)==null||(s=i[o])==null?void 0:s.indexOf(e.id))!=null?n:-1:0}}),createRow:(e,t)=>({getCenterVisibleCells:L(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,i,s)=>{const o=[...i??[],...s??[]];return n.filter(r=>!o.includes(r.column.id))},{key:"row.getCenterVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getLeftVisibleCells:L(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,,],(n,i)=>(i??[]).map(o=>n.find(r=>r.column.id===o)).filter(Boolean).map(o=>({...o,position:"left"})),{key:"row.getLeftVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getRightVisibleCells:L(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,i)=>(i??[]).map(o=>n.find(r=>r.column.id===o)).filter(Boolean).map(o=>({...o,position:"right"})),{key:"row.getRightVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}})}),createTable:e=>({setColumnPinning:t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),resetColumnPinning:t=>{var n,i;return e.setColumnPinning(t?Ui():(n=(i=e.initialState)==null?void 0:i.columnPinning)!=null?n:Ui())},getIsSomeColumnsPinned:t=>{var n;const i=e.getState().columnPinning;if(!t){var s,o;return!!((s=i.left)!=null&&s.length||(o=i.right)!=null&&o.length)}return!!((n=i[t])!=null&&n.length)},getLeftLeafColumns:L(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(i=>t.find(s=>s.id===i)).filter(Boolean),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}}),getRightLeafColumns:L(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(i=>t.find(s=>s.id===i)).filter(Boolean),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}}),getCenterLeafColumns:L(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i)=>{const s=[...n??[],...i??[]];return t.filter(o=>!s.includes(o.id))},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}})})},Fu={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:It("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>({setRowSelection:t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),resetRowSelection:t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},toggleAllRowsSelected:t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const i={...n},s=e.getPreGroupedRowModel().flatRows;return t?s.forEach(o=>{o.getCanSelect()&&(i[o.id]=!0)}):s.forEach(o=>{delete i[o.id]}),i})},toggleAllPageRowsSelected:t=>e.setRowSelection(n=>{const i=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),s={...n};return e.getRowModel().rows.forEach(o=>{bs(s,o.id,i,e)}),s}),getPreSelectedRowModel:()=>e.getCoreRowModel(),getSelectedRowModel:L(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?Xi(e,n):{rows:[],flatRows:[],rowsById:{}},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getFilteredSelectedRowModel:L(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?Xi(e,n):{rows:[],flatRows:[],rowsById:{}},{key:"getFilteredSelectedRowModel",debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getGroupedSelectedRowModel:L(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?Xi(e,n):{rows:[],flatRows:[],rowsById:{}},{key:"getGroupedSelectedRowModel",debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getIsAllRowsSelected:()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let i=!!(t.length&&Object.keys(n).length);return i&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(i=!1),i},getIsAllPageRowsSelected:()=>{const t=e.getPaginationRowModel().flatRows,{rowSelection:n}=e.getState();let i=!!t.length;return i&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(i=!1),i},getIsSomeRowsSelected:()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.some(n=>n.getIsSelected()||n.getIsSomeSelected())},getToggleAllRowsSelectedHandler:()=>t=>{e.toggleAllRowsSelected(t.target.checked)},getToggleAllPageRowsSelectedHandler:()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}}),createRow:(e,t)=>({toggleSelected:n=>{const i=e.getIsSelected();t.setRowSelection(s=>{if(n=typeof n<"u"?n:!i,i===n)return s;const o={...s};return bs(o,e.id,n,t),o})},getIsSelected:()=>{const{rowSelection:n}=t.getState();return Hs(e,n)},getIsSomeSelected:()=>{const{rowSelection:n}=t.getState();return bo(e,n)==="some"},getIsAllSubRowsSelected:()=>{const{rowSelection:n}=t.getState();return bo(e,n)==="all"},getCanSelect:()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},getCanSelectSubRows:()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},getCanMultiSelect:()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},getToggleSelectedHandler:()=>{const n=e.getCanSelect();return i=>{var s;n&&e.toggleSelected((s=i.target)==null?void 0:s.checked)}}})},bs=(e,t,n,i)=>{var s;const o=i.getRow(t);n?(o.getCanMultiSelect()||Object.keys(e).forEach(r=>delete e[r]),o.getCanSelect()&&(e[t]=!0)):delete e[t],(s=o.subRows)!=null&&s.length&&o.getCanSelectSubRows()&&o.subRows.forEach(r=>bs(e,r.id,n,i))};function Xi(e,t){const n=e.getState().rowSelection,i=[],s={},o=function(r,a){return r.map(l=>{var c;const u=Hs(l,n);if(u&&(i.push(l),s[l.id]=l),(c=l.subRows)!=null&&c.length&&(l={...l,subRows:o(l.subRows)}),u)return l}).filter(Boolean)};return{rows:o(t.rows),flatRows:i,rowsById:s}}function Hs(e,t){var n;return(n=t[e.id])!=null?n:!1}function bo(e,t,n){if(e.subRows&&e.subRows.length){let i=!0,s=!1;return e.subRows.forEach(o=>{s&&!i||(Hs(o,t)?s=!0:i=!1)}),i?"all":s?"some":!1}return!1}const ys=/([0-9]+)/gm,Du=(e,t,n)=>Aa(ye(e.getValue(n)).toLowerCase(),ye(t.getValue(n)).toLowerCase()),Ou=(e,t,n)=>Aa(ye(e.getValue(n)),ye(t.getValue(n))),Eu=(e,t,n)=>Ns(ye(e.getValue(n)).toLowerCase(),ye(t.getValue(n)).toLowerCase()),Lu=(e,t,n)=>Ns(ye(e.getValue(n)),ye(t.getValue(n))),Tu=(e,t,n)=>{const i=e.getValue(n),s=t.getValue(n);return i>s?1:iNs(e.getValue(n),t.getValue(n));function Ns(e,t){return e===t?0:e>t?1:-1}function ye(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function Aa(e,t){const n=e.split(ys).filter(Boolean),i=t.split(ys).filter(Boolean);for(;n.length&&i.length;){const s=n.shift(),o=i.shift(),r=parseInt(s,10),a=parseInt(o,10),l=[r,a].sort();if(isNaN(l[0])){if(s>o)return 1;if(o>s)return-1;continue}if(isNaN(l[1]))return isNaN(r)?-1:1;if(r>a)return 1;if(a>r)return-1}return n.length-i.length}const sn={alphanumeric:Du,alphanumericCaseSensitive:Ou,text:Eu,textCaseSensitive:Lu,datetime:Tu,basic:Iu},Vu={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto"}),getDefaultOptions:e=>({onSortingChange:It("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>({getAutoSortingFn:()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let i=!1;for(const s of n){const o=s==null?void 0:s.getValue(e.id);if(Object.prototype.toString.call(o)==="[object Date]")return sn.datetime;if(typeof o=="string"&&(i=!0,o.split(ys).length>1))return sn.alphanumeric}return i?sn.text:sn.basic},getAutoSortDir:()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof(n==null?void 0:n.getValue(e.id))=="string"?"asc":"desc"},getSortingFn:()=>{var n,i;if(!e)throw new Error;return ci(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(i=t.options.sortingFns)==null?void 0:i[e.columnDef.sortingFn])!=null?n:sn[e.columnDef.sortingFn]},toggleSorting:(n,i)=>{const s=e.getNextSortingOrder(),o=typeof n<"u"&&n!==null;t.setSorting(r=>{const a=r==null?void 0:r.find(h=>h.id===e.id),l=r==null?void 0:r.findIndex(h=>h.id===e.id);let c=[],u,f=o?n:s==="desc";if(r!=null&&r.length&&e.getCanMultiSort()&&i?a?u="toggle":u="add":r!=null&&r.length&&l!==r.length-1?u="replace":a?u="toggle":u="replace",u==="toggle"&&(o||s||(u="remove")),u==="add"){var d;c=[...r,{id:e.id,desc:f}],c.splice(0,c.length-((d=t.options.maxMultiSortColCount)!=null?d:Number.MAX_SAFE_INTEGER))}else u==="toggle"?c=r.map(h=>h.id===e.id?{...h,desc:f}:h):u==="remove"?c=r.filter(h=>h.id!==e.id):c=[{id:e.id,desc:f}];return c})},getFirstSortDir:()=>{var n,i;return((n=(i=e.columnDef.sortDescFirst)!=null?i:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},getNextSortingOrder:n=>{var i,s;const o=e.getFirstSortDir(),r=e.getIsSorted();return r?r!==o&&((i=t.options.enableSortingRemoval)==null||i)&&(!(n&&(s=t.options.enableMultiRemove)!=null)||s)?!1:r==="desc"?"asc":"desc":o},getCanSort:()=>{var n,i;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((i=t.options.enableSorting)!=null?i:!0)&&!!e.accessorFn},getCanMultiSort:()=>{var n,i;return(n=(i=e.columnDef.enableMultiSort)!=null?i:t.options.enableMultiSort)!=null?n:!!e.accessorFn},getIsSorted:()=>{var n;const i=(n=t.getState().sorting)==null?void 0:n.find(s=>s.id===e.id);return i?i.desc?"desc":"asc":!1},getSortIndex:()=>{var n,i;return(n=(i=t.getState().sorting)==null?void 0:i.findIndex(s=>s.id===e.id))!=null?n:-1},clearSorting:()=>{t.setSorting(n=>n!=null&&n.length?n.filter(i=>i.id!==e.id):[])},getToggleSortingHandler:()=>{const n=e.getCanSort();return i=>{n&&(i.persist==null||i.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(i):!1))}}}),createTable:e=>({setSorting:t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),resetSorting:t=>{var n,i;e.setSorting(t?[]:(n=(i=e.initialState)==null?void 0:i.sorting)!=null?n:[])},getPreSortedRowModel:()=>e.getGroupedRowModel(),getSortedRowModel:()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())})},zu={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:It("columnVisibility",e)}),createColumn:(e,t)=>({toggleVisibility:n=>{e.getCanHide()&&t.setColumnVisibility(i=>({...i,[e.id]:n??!e.getIsVisible()}))},getIsVisible:()=>{var n,i;return(n=(i=t.getState().columnVisibility)==null?void 0:i[e.id])!=null?n:!0},getCanHide:()=>{var n,i;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((i=t.options.enableHiding)!=null?i:!0)},getToggleVisibilityHandler:()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}}),createRow:(e,t)=>({_getAllVisibleCells:L(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(i=>i.column.getIsVisible()),{key:"row._getAllVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getVisibleCells:L(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,i,s)=>[...n,...i,...s],{key:!1,debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}})}),createTable:e=>{const t=(n,i)=>L(()=>[i(),i().filter(s=>s.getIsVisible()).map(s=>s.id).join("_")],s=>s.filter(o=>o.getIsVisible==null?void 0:o.getIsVisible()),{key:n,debug:()=>{var s;return(s=e.options.debugAll)!=null?s:e.options.debugColumns}});return{getVisibleFlatColumns:t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),getVisibleLeafColumns:t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),getLeftVisibleLeafColumns:t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),getRightVisibleLeafColumns:t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),getCenterVisibleLeafColumns:t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),setColumnVisibility:n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),resetColumnVisibility:n=>{var i;e.setColumnVisibility(n?{}:(i=e.initialState.columnVisibility)!=null?i:{})},toggleAllColumnsVisible:n=>{var i;n=(i=n)!=null?i:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((s,o)=>({...s,[o.id]:n||!(o.getCanHide!=null&&o.getCanHide())}),{}))},getIsAllColumnsVisible:()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),getIsSomeColumnsVisible:()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),getToggleAllColumnsVisibilityHandler:()=>n=>{var i;e.toggleAllColumnsVisible((i=n.target)==null?void 0:i.checked)}}}},yo=[du,zu,$u,Pu,mu,Vu,ku,pu,Au,Fu,hu];function Hu(e){var t;(e.debugAll||e.debugTable)&&console.info("Creating Table Instance...");let n={_features:yo};const i=n._features.reduce((u,f)=>Object.assign(u,f.getDefaultOptions==null?void 0:f.getDefaultOptions(n)),{}),s=u=>n.options.mergeOptions?n.options.mergeOptions(i,u):{...i,...u};let r={...{},...(t=e.initialState)!=null?t:{}};n._features.forEach(u=>{var f;r=(f=u.getInitialState==null?void 0:u.getInitialState(r))!=null?f:r});const a=[];let l=!1;const c={_features:yo,options:{...i,...e},initialState:r,_queue:u=>{a.push(u),l||(l=!0,Promise.resolve().then(()=>{for(;a.length;)a.shift()();l=!1}).catch(f=>setTimeout(()=>{throw f})))},reset:()=>{n.setState(n.initialState)},setOptions:u=>{const f=he(u,n.options);n.options=s(f)},getState:()=>n.options.state,setState:u=>{n.options.onStateChange==null||n.options.onStateChange(u)},_getRowId:(u,f,d)=>{var h;return(h=n.options.getRowId==null?void 0:n.options.getRowId(u,f,d))!=null?h:`${d?[d.id,f].join("."):f}`},getCoreRowModel:()=>(n._getCoreRowModel||(n._getCoreRowModel=n.options.getCoreRowModel(n)),n._getCoreRowModel()),getRowModel:()=>n.getPaginationRowModel(),getRow:u=>{const f=n.getRowModel().rowsById[u];if(!f)throw new Error;return f},_getDefaultColumnDef:L(()=>[n.options.defaultColumn],u=>{var f;return u=(f=u)!=null?f:{},{header:d=>{const h=d.header.column.columnDef;return h.accessorKey?h.accessorKey:h.accessorFn?h.id:null},cell:d=>{var h,g;return(h=(g=d.renderValue())==null||g.toString==null?void 0:g.toString())!=null?h:null},...n._features.reduce((d,h)=>Object.assign(d,h.getDefaultColumnDef==null?void 0:h.getDefaultColumnDef()),{}),...u}},{debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns},key:!1}),_getColumnDefs:()=>n.options.columns,getAllColumns:L(()=>[n._getColumnDefs()],u=>{const f=function(d,h,g){return g===void 0&&(g=0),d.map(p=>{const m=fu(n,p,g,h),_=p;return m.columns=_.columns?f(_.columns,m,g+1):[],m})};return f(u)},{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getAllFlatColumns:L(()=>[n.getAllColumns()],u=>u.flatMap(f=>f.getFlatColumns()),{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),_getAllFlatColumnsById:L(()=>[n.getAllFlatColumns()],u=>u.reduce((f,d)=>(f[d.id]=d,f),{}),{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getAllLeafColumns:L(()=>[n.getAllColumns(),n._getOrderColumnsFn()],(u,f)=>{let d=u.flatMap(h=>h.getLeafColumns());return f(d)},{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getColumn:u=>n._getAllFlatColumnsById()[u]};return Object.assign(n,c),n._features.forEach(u=>Object.assign(n,u.createTable==null?void 0:u.createTable(n))),n}function Nu(e,t,n,i){const s=()=>{var r;return(r=o.getValue())!=null?r:e.options.renderFallbackValue},o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(i),renderValue:s,getContext:L(()=>[e,n,t,o],(r,a,l,c)=>({table:r,column:a,row:l,cell:c,getValue:c.getValue,renderValue:c.renderValue}),{key:!1,debug:()=>e.options.debugAll})};return e._features.forEach(r=>{Object.assign(o,r.createCell==null?void 0:r.createCell(o,n,t,e))},{}),o}const Bu=(e,t,n,i,s,o,r)=>{let a={id:t,index:i,original:n,depth:s,parentRow:r,_valuesCache:{},_uniqueValuesCache:{},getValue:l=>{if(a._valuesCache.hasOwnProperty(l))return a._valuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return a._valuesCache[l]=c.accessorFn(a.original,i),a._valuesCache[l]},getUniqueValues:l=>{if(a._uniqueValuesCache.hasOwnProperty(l))return a._uniqueValuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return c.columnDef.getUniqueValues?(a._uniqueValuesCache[l]=c.columnDef.getUniqueValues(a.original,i),a._uniqueValuesCache[l]):(a._uniqueValuesCache[l]=[a.getValue(l)],a._uniqueValuesCache[l])},renderValue:l=>{var c;return(c=a.getValue(l))!=null?c:e.options.renderFallbackValue},subRows:o??[],getLeafRows:()=>uu(a.subRows,l=>l.subRows),getAllCells:L(()=>[e.getAllLeafColumns()],l=>l.map(c=>Nu(e,a,c,c.id)),{key:!1,debug:()=>{var l;return(l=e.options.debugAll)!=null?l:e.options.debugRows}}),_getAllCellsByColumnId:L(()=>[a.getAllCells()],l=>l.reduce((c,u)=>(c[u.column.id]=u,c),{}),{key:"row.getAllCellsByColumnId",debug:()=>{var l;return(l=e.options.debugAll)!=null?l:e.options.debugRows}})};for(let l=0;lL(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},i=function(s,o,r){o===void 0&&(o=0);const a=[];for(let c=0;c{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable},onChange:()=>{e._autoResetPageIndex()}})}/** - * svelte-table - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Wu(e){let t;return{c(){t=J(e[0])},l(n){t=ql(n,e[0])},m(n,i){Nl(n,t,i)},p(n,[i]){i&1&&jt(t,n[0])},i:ht,o:ht,d(n){n&&X(t)}}}function Gu(e,t,n){let{content:i}=t;return e.$$set=s=>{"content"in s&&n(0,i=s.content)},[i]}class qu extends K{constructor(t){super(),Q(this,t,Gu,Wu,Y,{content:0})}}const Yu=da((e,t,n,i)=>`${lc(t.content)}`);var Uu=typeof document>"u"?Yu:qu;function Xu(e,t,n){let i,s;return i=new t({props:n,$$inline:!0}),{c(){H(i.$$.fragment)},l(o){uc(i.$$.fragment,o)},m(o,r){V(i,o,r),s=!0},p:ht,i(o){s||(S(i.$$.fragment,o),s=!0)},o(o){M(i.$$.fragment,o),s=!1},d(o){z(i,o)}}}function Ku(e,t){return class extends K{constructor(i){super(),Q(this,i,null,s=>Xu(s,e,t),Y,{},void 0)}}}function Qu(e,t){return da((i,s,o,r)=>`${cc(e,"TableComponent").$$render(i,t,{},{})}`)}const Pa=typeof window>"u"?Qu:Ku;function Zu(e){return typeof e=="object"&&typeof e.$$render=="function"&&typeof e.render=="function"}function Ju(e){var t,n;let i="__SVELTE_HMR"in window;return e.prototype instanceof K||i&&((t=e.name)==null?void 0:t.startsWith("Proxy<"))&&((n=e.name)==null?void 0:n.endsWith(">"))}function vo(e){return typeof document>"u"?Zu(e):Ju(e)}function xo(e){return Pa(Uu,{content:e})}function ui(e,t){if(!e)return null;if(vo(e))return Pa(e,t);if(typeof e=="function"){const n=e(t);return vo(n)?n:xo(n)}return xo(e)}function tf(e){let t;"subscribe"in e?t=e:t=cs(e);let n={state:{},onStateChange:()=>{},renderFallbackValue:null,...Fl(t)},i=Hu(n),s=Ft(i.initialState),o=Ai([s,t],a=>a);return cs(i,function(l){const c=o.subscribe(u=>{let[f,d]=u;i.setOptions(h=>({...h,...d,state:{...f,...d.state},onStateChange:g=>{g instanceof Function?s.update(g):s.set(g),n.onStateChange==null||n.onStateChange(g)}})),l(i)});return function(){c()}})}function Pi(e){return e.split("-")[1]}function Fa(e){return e==="y"?"height":"width"}function Pe(e){return e.split("-")[0]}function Fi(e){return["top","bottom"].includes(Pe(e))?"x":"y"}function wo(e,t,n){let{reference:i,floating:s}=e;const o=i.x+i.width/2-s.width/2,r=i.y+i.height/2-s.height/2,a=Fi(t),l=Fa(a),c=i[l]/2-s[l]/2,u=a==="x";let f;switch(Pe(t)){case"top":f={x:o,y:i.y-s.height};break;case"bottom":f={x:o,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:r};break;case"left":f={x:i.x-s.width,y:r};break;default:f={x:i.x,y:i.y}}switch(Pi(t)){case"start":f[a]-=c*(n&&u?-1:1);break;case"end":f[a]+=c*(n&&u?-1:1)}return f}const ef=async(e,t,n)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:r}=n,a=o.filter(Boolean),l=await(r.isRTL==null?void 0:r.isRTL(t));let c=await r.getElementRects({reference:e,floating:t,strategy:s}),{x:u,y:f}=wo(c,i,l),d=i,h={},g=0;for(let p=0;pe.concat(t,t+"-start",t+"-end"),[]);const af={left:"right",right:"left",bottom:"top",top:"bottom"};function di(e){return e.replace(/left|right|bottom|top/g,t=>af[t])}function lf(e,t,n){n===void 0&&(n=!1);const i=Pi(e),s=Fi(e),o=Fa(s);let r=s==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(r=di(r)),{main:r,cross:di(r)}}const cf={start:"end",end:"start"};function Ki(e){return e.replace(/start|end/g,t=>cf[t])}const uf=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:i,middlewareData:s,rects:o,initialPlacement:r,platform:a,elements:l}=t,{mainAxis:c=!0,crossAxis:u=!0,fallbackPlacements:f,fallbackStrategy:d="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:g=!0,...p}=e,m=Pe(i),_=Pe(r)===r,b=await(a.isRTL==null?void 0:a.isRTL(l.floating)),y=f||(_||!g?[di(r)]:function(C){const D=di(C);return[Ki(C),D,Ki(D)]}(r));f||h==="none"||y.push(...function(C,D,U,Z){const E=Pi(C);let T=function(B,ft,it){const xt=["left","right"],Ut=["right","left"],pt=["top","bottom"],mt=["bottom","top"];switch(B){case"top":case"bottom":return it?ft?Ut:xt:ft?xt:Ut;case"left":case"right":return ft?pt:mt;default:return[]}}(Pe(C),U==="start",Z);return E&&(T=T.map(B=>B+"-"+E),D&&(T=T.concat(T.map(Ki)))),T}(r,g,h,b));const x=[r,...y],v=await Da(t,p),R=[];let k=((n=s.flip)==null?void 0:n.overflows)||[];if(c&&R.push(v[m]),u){const{main:C,cross:D}=lf(i,o,b);R.push(v[C],v[D])}if(k=[...k,{placement:i,overflows:R}],!R.every(C=>C<=0)){var $,A;const C=((($=s.flip)==null?void 0:$.index)||0)+1,D=x[C];if(D)return{data:{index:C,overflows:k},reset:{placement:D}};let U=(A=k.filter(Z=>Z.overflows[0]<=0).sort((Z,E)=>Z.overflows[1]-E.overflows[1])[0])==null?void 0:A.placement;if(!U)switch(d){case"bestFit":{var F;const Z=(F=k.map(E=>[E.placement,E.overflows.filter(T=>T>0).reduce((T,B)=>T+B,0)]).sort((E,T)=>E[1]-T[1])[0])==null?void 0:F[0];Z&&(U=Z);break}case"initialPlacement":U=r}if(i!==U)return{reset:{placement:U}}}return{}}}},ff=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:i}=t,s=await async function(o,r){const{placement:a,platform:l,elements:c}=o,u=await(l.isRTL==null?void 0:l.isRTL(c.floating)),f=Pe(a),d=Pi(a),h=Fi(a)==="x",g=["left","top"].includes(f)?-1:1,p=u&&h?-1:1,m=typeof r=="function"?r(o):r;let{mainAxis:_,crossAxis:b,alignmentAxis:y}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...m};return d&&typeof y=="number"&&(b=d==="end"?-1*y:y),h?{x:b*p,y:_*g}:{x:_*g,y:b*p}}(t,e);return{x:n+s.x,y:i+s.y,data:s}}}};function df(e){return e==="x"?"y":"x"}const hf=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:r=!1,limiter:a={fn:m=>{let{x:_,y:b}=m;return{x:_,y:b}}},...l}=e,c={x:n,y:i},u=await Da(t,l),f=Fi(Pe(s)),d=df(f);let h=c[f],g=c[d];if(o){const m=f==="y"?"bottom":"right";h=So(h+u[f==="y"?"top":"left"],h,h-u[m])}if(r){const m=d==="y"?"bottom":"right";g=So(g+u[d==="y"?"top":"left"],g,g-u[m])}const p=a.fn({...t,[f]:h,[d]:g});return{...p,data:{x:p.x-n,y:p.y-i}}}}};function Ct(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Zt(e){return Ct(e).getComputedStyle(e)}function Oa(e){return e instanceof Ct(e).Node}function ve(e){return Oa(e)?(e.nodeName||"").toLowerCase():""}let Ln;function Ea(){if(Ln)return Ln;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(Ln=e.brands.map(t=>t.brand+"/"+t.version).join(" "),Ln):navigator.userAgent}function qt(e){return e instanceof Ct(e).HTMLElement}function Gt(e){return e instanceof Ct(e).Element}function Co(e){return typeof ShadowRoot>"u"?!1:e instanceof Ct(e).ShadowRoot||e instanceof ShadowRoot}function Di(e){const{overflow:t,overflowX:n,overflowY:i,display:s}=Zt(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!["inline","contents"].includes(s)}function gf(e){return["table","td","th"].includes(ve(e))}function vs(e){const t=/firefox/i.test(Ea()),n=Zt(e),i=n.backdropFilter||n.WebkitBackdropFilter;return n.transform!=="none"||n.perspective!=="none"||!!i&&i!=="none"||t&&n.willChange==="filter"||t&&!!n.filter&&n.filter!=="none"||["transform","perspective"].some(s=>n.willChange.includes(s))||["paint","layout","strict","content"].some(s=>{const o=n.contain;return o!=null&&o.includes(s)})}function xs(){return/^((?!chrome|android).)*safari/i.test(Ea())}function Bs(e){return["html","body","#document"].includes(ve(e))}const Mo=Math.min,hn=Math.max,hi=Math.round;function La(e){const t=Zt(e);let n=parseFloat(t.width),i=parseFloat(t.height);const s=qt(e),o=s?e.offsetWidth:n,r=s?e.offsetHeight:i,a=hi(n)!==o||hi(i)!==r;return a&&(n=o,i=r),{width:n,height:i,fallback:a}}function Ta(e){return Gt(e)?e:e.contextElement}const Ia={x:1,y:1};function qe(e){const t=Ta(e);if(!qt(t))return Ia;const n=t.getBoundingClientRect(),{width:i,height:s,fallback:o}=La(t);let r=(o?hi(n.width):n.width)/i,a=(o?hi(n.height):n.height)/s;return r&&Number.isFinite(r)||(r=1),a&&Number.isFinite(a)||(a=1),{x:r,y:a}}function Ee(e,t,n,i){var s,o;t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),a=Ta(e);let l=Ia;t&&(i?Gt(i)&&(l=qe(i)):l=qe(e));const c=a?Ct(a):window,u=xs()&&n;let f=(r.left+(u&&((s=c.visualViewport)==null?void 0:s.offsetLeft)||0))/l.x,d=(r.top+(u&&((o=c.visualViewport)==null?void 0:o.offsetTop)||0))/l.y,h=r.width/l.x,g=r.height/l.y;if(a){const p=Ct(a),m=i&&Gt(i)?Ct(i):i;let _=p.frameElement;for(;_&&i&&m!==p;){const b=qe(_),y=_.getBoundingClientRect(),x=getComputedStyle(_);y.x+=(_.clientLeft+parseFloat(x.paddingLeft))*b.x,y.y+=(_.clientTop+parseFloat(x.paddingTop))*b.y,f*=b.x,d*=b.y,h*=b.x,g*=b.y,f+=y.x,d+=y.y,_=Ct(_).frameElement}}return fi({width:h,height:g,x:f,y:d})}function _e(e){return((Oa(e)?e.ownerDocument:e.document)||window.document).documentElement}function Oi(e){return Gt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Va(e){return Ee(_e(e)).left+Oi(e).scrollLeft}function vn(e){if(ve(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Co(e)&&e.host||_e(e);return Co(t)?t.host:t}function za(e){const t=vn(e);return Bs(t)?t.ownerDocument.body:qt(t)&&Di(t)?t:za(t)}function gn(e,t){var n;t===void 0&&(t=[]);const i=za(e),s=i===((n=e.ownerDocument)==null?void 0:n.body),o=Ct(i);return s?t.concat(o,o.visualViewport||[],Di(i)?i:[]):t.concat(i,gn(i))}function ko(e,t,n){let i;if(t==="viewport")i=function(r,a){const l=Ct(r),c=_e(r),u=l.visualViewport;let f=c.clientWidth,d=c.clientHeight,h=0,g=0;if(u){f=u.width,d=u.height;const p=xs();(!p||p&&a==="fixed")&&(h=u.offsetLeft,g=u.offsetTop)}return{width:f,height:d,x:h,y:g}}(e,n);else if(t==="document")i=function(r){const a=_e(r),l=Oi(r),c=r.ownerDocument.body,u=hn(a.scrollWidth,a.clientWidth,c.scrollWidth,c.clientWidth),f=hn(a.scrollHeight,a.clientHeight,c.scrollHeight,c.clientHeight);let d=-l.scrollLeft+Va(r);const h=-l.scrollTop;return Zt(c).direction==="rtl"&&(d+=hn(a.clientWidth,c.clientWidth)-u),{width:u,height:f,x:d,y:h}}(_e(e));else if(Gt(t))i=function(r,a){const l=Ee(r,!0,a==="fixed"),c=l.top+r.clientTop,u=l.left+r.clientLeft,f=qt(r)?qe(r):{x:1,y:1};return{width:r.clientWidth*f.x,height:r.clientHeight*f.y,x:u*f.x,y:c*f.y}}(t,n);else{const r={...t};if(xs()){var s,o;const a=Ct(e);r.x-=((s=a.visualViewport)==null?void 0:s.offsetLeft)||0,r.y-=((o=a.visualViewport)==null?void 0:o.offsetTop)||0}i=r}return fi(i)}function Ro(e,t){return qt(e)&&Zt(e).position!=="fixed"?t?t(e):e.offsetParent:null}function $o(e,t){const n=Ct(e);if(!qt(e))return n;let i=Ro(e,t);for(;i&&gf(i)&&Zt(i).position==="static";)i=Ro(i,t);return i&&(ve(i)==="html"||ve(i)==="body"&&Zt(i).position==="static"&&!vs(i))?n:i||function(s){let o=vn(s);for(;qt(o)&&!Bs(o);){if(vs(o))return o;o=vn(o)}return null}(e)||n}function pf(e,t,n){const i=qt(t),s=_e(t),o=Ee(e,!0,n==="fixed",t);let r={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(i||!i&&n!=="fixed")if((ve(t)!=="body"||Di(s))&&(r=Oi(t)),qt(t)){const l=Ee(t,!0);a.x=l.x+t.clientLeft,a.y=l.y+t.clientTop}else s&&(a.x=Va(s));return{x:o.left+r.scrollLeft-a.x,y:o.top+r.scrollTop-a.y,width:o.width,height:o.height}}const mf={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:i,strategy:s}=e;const o=n==="clippingAncestors"?function(c,u){const f=u.get(c);if(f)return f;let d=gn(c).filter(m=>Gt(m)&&ve(m)!=="body"),h=null;const g=Zt(c).position==="fixed";let p=g?vn(c):c;for(;Gt(p)&&!Bs(p);){const m=Zt(p),_=vs(p);m.position==="fixed"?h=null:(g?_||h:_||m.position!=="static"||!h||!["absolute","fixed"].includes(h.position))?h=m:d=d.filter(b=>b!==p),p=vn(p)}return u.set(c,d),d}(t,this._c):[].concat(n),r=[...o,i],a=r[0],l=r.reduce((c,u)=>{const f=ko(t,u,s);return c.top=hn(f.top,c.top),c.right=Mo(f.right,c.right),c.bottom=Mo(f.bottom,c.bottom),c.left=hn(f.left,c.left),c},ko(t,a,s));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:i}=e;const s=qt(n),o=_e(n);if(n===o)return t;let r={scrollLeft:0,scrollTop:0},a={x:1,y:1};const l={x:0,y:0};if((s||!s&&i!=="fixed")&&((ve(n)!=="body"||Di(o))&&(r=Oi(n)),qt(n))){const c=Ee(n);a=qe(n),l.x=c.x+n.clientLeft,l.y=c.y+n.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-r.scrollLeft*a.x+l.x,y:t.y*a.y-r.scrollTop*a.y+l.y}},isElement:Gt,getDimensions:function(e){return La(e)},getOffsetParent:$o,getDocumentElement:_e,getScale:qe,async getElementRects(e){let{reference:t,floating:n,strategy:i}=e;const s=this.getOffsetParent||$o,o=this.getDimensions;return{reference:pf(t,await s(n),i),floating:{x:0,y:0,...await o(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Zt(e).direction==="rtl"};function _f(e,t,n,i){i===void 0&&(i={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:r=!0,animationFrame:a=!1}=i,l=s&&!a,c=l||o?[...Gt(e)?gn(e):e.contextElement?gn(e.contextElement):[],...gn(t)]:[];c.forEach(h=>{l&&h.addEventListener("scroll",n,{passive:!0}),o&&h.addEventListener("resize",n)});let u,f=null;r&&(f=new ResizeObserver(()=>{n()}),Gt(e)&&!a&&f.observe(e),Gt(e)||!e.contextElement||a||f.observe(e.contextElement),f.observe(t));let d=a?Ee(e):null;return a&&function h(){const g=Ee(e);!d||g.x===d.x&&g.y===d.y&&g.width===d.width&&g.height===d.height||n(),d=g,u=requestAnimationFrame(h)}(),n(),()=>{var h;c.forEach(g=>{l&&g.removeEventListener("scroll",n),o&&g.removeEventListener("resize",n)}),(h=f)==null||h.disconnect(),f=null,a&&cancelAnimationFrame(u)}}const bf=(e,t,n)=>{const i=new Map,s={platform:mf,...n},o={...s.platform,_c:i};return ef(e,t,{...s,platform:o})};function yf(e){let t,n;const i={autoUpdate:!0};let s=e;const o=u=>({...i,...e||{},...u||{}}),r=u=>{t&&n&&(s=o(u),bf(t,n,s).then(f=>{Object.assign(n.style,{position:f.strategy,left:`${f.x}px`,top:`${f.y}px`}),s!=null&&s.onComputed&&s.onComputed(f)}))},a=u=>{if("subscribe"in u)return c(u),{};t=u,r()},l=(u,f)=>{let d;n=u,s=o(f),setTimeout(()=>r(f),0),r(f);const h=()=>{d&&(d(),d=void 0)},g=({autoUpdate:p}=s||{})=>{h(),p!==!1&&Ts().then(()=>_f(t,n,()=>r(s),p===!0?{}:p))};return d=g(),{update(p){r(p),d=g(p)},destroy(){h()}}},c=u=>{const f=u.subscribe(d=>{t===void 0?(t=d,r()):(Object.assign(t,d),r())});en(f)};return[a,l,r]}function vf(e){const t=e-1;return t*t*t+1}function Ao(e,{delay:t=0,duration:n=400,easing:i=ea}={}){const s=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:i,css:o=>`opacity: ${o*s}`}}function Po(e,{delay:t=0,duration:n=400,easing:i=vf,start:s=0,opacity:o=0}={}){const r=getComputedStyle(e),a=+r.opacity,l=r.transform==="none"?"":r.transform,c=1-s,u=a*(1-o);return{delay:t,duration:n,easing:i,css:(f,d)=>` - transform: ${l} scale(${1-c*d}); - opacity: ${a-u*d} - `}}function xf(e){let t,n,i,s,o;const r=e[2].default,a=Rt(r,e,e[1],null);return{c(){t=P("div"),a&&a.c(),t.hidden=!0},m(l,c){ot(l,t,c),a&&a.m(t,null),i=!0,s||(o=Os(n=wf.call(null,t,e[0])),s=!0)},p(l,[c]){a&&a.p&&(!i||c&2)&&At(a,r,l,l[1],i?$t(r,l[1],c,null):Pt(l[1]),null),n&&ae(n.update)&&c&1&&n.update.call(null,l[0])},i(l){i||(S(a,l),i=!0)},o(l){M(a,l),i=!1},d(l){l&&X(t),a&&a.d(l),s=!1,o()}}}function wf(e,t="body"){let n;async function i(o){if(t=o,typeof t=="string"){if(n=document.querySelector(t),n===null&&(await Ts(),n=document.querySelector(t)),n===null)throw new Error(`No element found matching css selector: "${t}"`)}else if(t instanceof HTMLElement)n=t;else throw new TypeError(`Unknown portal target type: ${t===null?"null":typeof t}. Allowed types: string (CSS selector) or HTMLElement.`);n.appendChild(e),e.hidden=!1}function s(){e.parentNode&&e.parentNode.removeChild(e)}return i(t),{update:i,destroy:s}}function Sf(e,t,n){let{$$slots:i={},$$scope:s}=t,{target:o="body"}=t;return e.$$set=r=>{"target"in r&&n(0,o=r.target),"$$scope"in r&&n(1,s=r.$$scope)},[o,s,i]}class Cf extends K{constructor(t){super(),Q(this,t,Sf,xf,Y,{target:0})}}const Mf=e=>({}),Fo=e=>({floatingRef:e[3],displayTooltip:e[5],hideTooltip:e[6]});function Do(e){let t,n;return t=new Cf({props:{target:"body",$$slots:{default:[kf]},$$scope:{ctx:e}}}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},p(i,s){const o={};s&257&&(o.$$scope={dirty:s,ctx:i}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function kf(e){let t,n,i,s,o,r;return{c(){t=P("div"),n=J(e[0]),O(t,"class","absolute p-2 text-sm bg-dark-50 text-dark-400 rounded-md max-w-xl font-main")},m(a,l){ot(a,t,l),w(t,n),s=!0,o||(r=Os(e[4].call(null,t)),o=!0)},p(a,l){(!s||l&1)&&jt(n,a[0])},i(a){s||(Qe(()=>{s&&(i||(i=ri(t,Ao,{duration:150},!0)),i.run(1))}),s=!0)},o(a){i||(i=ri(t,Ao,{duration:150},!1)),i.run(0),s=!1},d(a){a&&X(t),a&&i&&i.end(),o=!1,r()}}}function Rf(e){let t,n,i;const s=e[7].default,o=Rt(s,e,e[8],Fo);let r=e[2]&&!e[1]&&Do(e);return{c(){o&&o.c(),t=q(),r&&r.c(),n=kn()},m(a,l){o&&o.m(a,l),ot(a,t,l),r&&r.m(a,l),ot(a,n,l),i=!0},p(a,[l]){o&&o.p&&(!i||l&256)&&At(o,s,a,a[8],i?$t(s,a[8],l,Mf):Pt(a[8]),Fo),a[2]&&!a[1]?r?(r.p(a,l),l&6&&S(r,1)):(r=Do(a),r.c(),S(r,1),r.m(n.parentNode,n)):r&&(Lt(),M(r,1,1,()=>{r=null}),Tt())},i(a){i||(S(o,a),S(r),i=!0)},o(a){M(o,a),M(r),i=!1},d(a){o&&o.d(a),a&&X(t),r&&r.d(a),a&&X(n)}}}function $f(e,t,n){let{$$slots:i={},$$scope:s}=t,{content:o}=t,{disabled:r}=t;const[a,l]=yf({strategy:"absolute",placement:"top",middleware:[ff(6),uf(),hf()]});let c=!1,u;const f=()=>{r||(clearTimeout(u),u=setTimeout(()=>{n(2,c=!0)},300))},d=()=>{r||(clearTimeout(u),n(2,c=!1))};return e.$$set=h=>{"content"in h&&n(0,o=h.content),"disabled"in h&&n(1,r=h.disabled),"$$scope"in h&&n(8,s=h.$$scope)},[o,r,c,a,l,f,d,i,s]}class Af extends K{constructor(t){super(),Q(this,t,$f,Rf,Y,{content:0,disabled:1})}}function Oo(e,t,n){const i=e.slice();return i[9]=t[n],i}function Eo(e,t,n){const i=e.slice();return i[12]=t[n],i}function Lo(e,t,n){const i=e.slice();return i[18]=t[n],i}function To(e,t,n){const i=e.slice();return i[21]=t[n],i}function Io(e){let t,n,i,s,o,r,a,l,c,u;var f=ui(e[21].column.columnDef.header,e[21].getContext());function d(m){return{}}f&&(n=Xe(f,d()));const h=[Ff,Pf],g=[];function p(m,_){return _&1&&(s=null),_&1&&(o=null),s==null&&(s=m[21].column.getIsSorted()==="asc"),s?0:(o==null&&(o=m[21].column.getIsSorted()==="desc"),o?1:-1)}return~(r=p(e,-1))&&(a=g[r]=h[r](e)),{c(){t=P("button"),n&&H(n.$$.fragment),i=q(),a&&a.c(),O(t,"class","flex items-center justify-center w-full gap-1"),Fn(t,"cursor-pointer",e[21].column.getCanSort()),Fn(t,"select-none",e[21].column.getCanSort())},m(m,_){ot(m,t,_),n&&V(n,t,null),w(t,i),~r&&g[r].m(t,null),l=!0,c||(u=Nt(t,"click",function(){ae(e[21].column.getToggleSortingHandler())&&e[21].column.getToggleSortingHandler().apply(this,arguments)}),c=!0)},p(m,_){if(e=m,_&1&&f!==(f=ui(e[21].column.columnDef.header,e[21].getContext()))){if(n){Lt();const y=n;M(y.$$.fragment,1,0,()=>{z(y,1)}),Tt()}f?(n=Xe(f,d()),H(n.$$.fragment),S(n.$$.fragment,1),V(n,t,i)):n=null}let b=r;r=p(e,_),r!==b&&(a&&(Lt(),M(g[b],1,1,()=>{g[b]=null}),Tt()),~r?(a=g[r],a||(a=g[r]=h[r](e),a.c()),S(a,1),a.m(t,null)):a=null),(!l||_&1)&&Fn(t,"cursor-pointer",e[21].column.getCanSort()),(!l||_&1)&&Fn(t,"select-none",e[21].column.getCanSort())},i(m){l||(n&&S(n.$$.fragment,m),S(a),l=!0)},o(m){n&&M(n.$$.fragment,m),M(a),l=!1},d(m){m&&X(t),n&&z(n),~r&&g[r].d(),c=!1,u()}}}function Pf(e){let t,n;return t=new su({}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function Ff(e){let t,n;return t=new cu({}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function Vo(e){let t,n,i,s=!e[21].isPlaceholder&&Io(e);return{c(){t=P("th"),s&&s.c(),O(t,"class",n=`p-1 bg-dark-600 select-none ${e[21].id==="executionTime"?"w-1/4":"w-3/4"}`)},m(o,r){ot(o,t,r),s&&s.m(t,null),i=!0},p(o,r){o[21].isPlaceholder?s&&(Lt(),M(s,1,1,()=>{s=null}),Tt()):s?(s.p(o,r),r&1&&S(s,1)):(s=Io(o),s.c(),S(s,1),s.m(t,null)),(!i||r&1&&n!==(n=`p-1 bg-dark-600 select-none ${o[21].id==="executionTime"?"w-1/4":"w-3/4"}`))&&O(t,"class",n)},i(o){i||(S(s),i=!0)},o(o){M(s),i=!1},d(o){o&&X(t),s&&s.d()}}}function zo(e){let t,n,i,s=e[18].headers,o=[];for(let a=0;aM(o[a],1,1,()=>{o[a]=null});return{c(){t=P("tr");for(let a=0;a{z(f,1)}),Tt()}a?(n=Xe(a,l()),H(n.$$.fragment),S(n.$$.fragment,1),V(n,t,null)):n=null}(!s||u&1&&i!==(i=`${e[12].column.id==="executionTime"&&"text-center"} p-2 bg-dark-700 ${e[9].original.slow&&"text-yellow-500"} truncate max-w-[200px]`))&&O(t,"class",i)},i(c){s||(n&&S(n.$$.fragment,c),s=!0)},o(c){n&&M(n.$$.fragment,c),s=!1},d(c){c&&X(t),n&&z(n),o=!1,Jt(r)}}}function Ho(e){let t,n;return t=new Af({props:{content:e[12].getValue(),disabled:e[12].column.id!=="query",$$slots:{default:[Df,({floatingRef:i,displayTooltip:s,hideTooltip:o})=>({15:i,16:s,17:o}),({floatingRef:i,displayTooltip:s,hideTooltip:o})=>(i?32768:0)|(s?65536:0)|(o?131072:0)]},$$scope:{ctx:e}}}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},p(i,s){const o={};s&1&&(o.content=i[12].getValue()),s&1&&(o.disabled=i[12].column.id!=="query"),s&16973825&&(o.$$scope={dirty:s,ctx:i}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function No(e){let t,n,i,s=e[9].getVisibleCells(),o=[];for(let a=0;aM(o[a],1,1,()=>{o[a]=null});return{c(){t=P("tr");for(let a=0;aM(l[h],1,1,()=>{l[h]=null});let u=e[0].getRowModel().rows,f=[];for(let h=0;hM(f[h],1,1,()=>{f[h]=null});return{c(){t=P("div"),n=P("table"),i=P("thead");for(let h=0;hn(3,i=d)),gt(e,Qn,d=>n(4,s=d));const r=Vs(),a=[{accessorKey:"query",header:"Query",cell:d=>d.getValue(),enableSorting:!0},{accessorKey:"executionTime",header:"Time (ms)",cell:d=>d.getValue().toFixed(4),enableSorting:!0}];let l=[];const c=d=>{d instanceof Function?n(2,l=d(l)):n(2,l=d),u.update(h=>({...h,state:{...h.state,sorting:l}}))},u=Ft({data:s,columns:a,manualPagination:!0,manualSorting:!0,pageCount:-1,getCoreRowModel:ju(),onSortingChange:c,state:{sorting:l}}),f=tf(u);return gt(e,f,d=>n(0,o=d)),e.$$.update=()=>{e.$$.dirty&16&&u.update(d=>({...d,data:s})),e.$$.dirty&12&&ya("fetchResource",{resource:r.params.resource,pageIndex:i,sortBy:l})},[o,f,l,i,s]}class Lf extends K{constructor(t){super(),Q(this,t,Ef,Of,Y,{})}}function Tf(e){let t,n,i,s,o,r,a,l,c,u=e[0].resourceQueriesCount+"",f,d,h,g,p=e[0].resourceTime.toFixed(4)+"",m,_,b,y,x,v=e[0].resourceSlowQueries+"",R,k,$,A;return i=new va({}),{c(){t=P("div"),n=P("button"),H(i.$$.fragment),s=q(),o=P("p"),o.textContent=`${e[1].params.resource}`,r=q(),a=P("div"),l=P("p"),c=J("Queries: "),f=J(u),d=q(),h=P("p"),g=J("Time: "),m=J(p),_=J(" ms"),b=q(),y=P("p"),x=J("Slow queries: "),R=J(v),O(n,"class","flex p-2 w-12 bg-dark-600 text-dark-100 hover:text-white rounded-md justify-center items-center hover:bg-dark-500 outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),O(o,"class","text-center text-lg"),O(y,"class","text-yellow-500"),O(a,"class","text-end text-dark-100 flex flex-col text-xs"),O(t,"class","p-4 grid grid-flow-col grid-cols-3 items-center ")},m(F,C){ot(F,t,C),w(t,n),V(i,n,null),w(t,s),w(t,o),w(t,r),w(t,a),w(a,l),w(l,c),w(l,f),w(a,d),w(a,h),w(h,g),w(h,m),w(h,_),w(a,b),w(a,y),w(y,x),w(y,R),k=!0,$||(A=Nt(n,"click",e[2]),$=!0)},p(F,[C]){(!k||C&1)&&u!==(u=F[0].resourceQueriesCount+"")&&jt(f,u),(!k||C&1)&&p!==(p=F[0].resourceTime.toFixed(4)+"")&&jt(m,p),(!k||C&1)&&v!==(v=F[0].resourceSlowQueries+"")&&jt(R,v)},i(F){k||(S(i.$$.fragment,F),k=!0)},o(F){M(i.$$.fragment,F),k=!1},d(F){F&&X(t),z(i),$=!1,A()}}}function If(e,t,n){let i;gt(e,ps,r=>n(0,i=r));const s=Vs();return[i,s,()=>Oe.goto("/")]}class Vf extends K{constructor(t){super(),Q(this,t,If,Tf,Y,{})}}function Ha(e,t){const n=i=>{const{action:s,data:o}=i.data;s===e&&t(o)};$i(()=>window.addEventListener("message",n)),en(()=>window.removeEventListener("message",n))}const Na=()=>!window.invokeNative,Ba=(e,t=1e3)=>{if(Na())for(const n of e)setTimeout(()=>{window.dispatchEvent(new MessageEvent("message",{data:{action:n.action,data:n.data}}))},t)};function zf(e){let t,n,i,s,o,r,a,l;return i=new Vf({}),o=new Lf({}),a=new Jc({props:{maxPage:e[0]}}),{c(){t=P("div"),n=P("div"),H(i.$$.fragment),s=q(),H(o.$$.fragment),r=q(),H(a.$$.fragment),O(t,"class","flex flex-col w-full justify-between")},m(c,u){ot(c,t,u),w(t,n),V(i,n,null),w(n,s),V(o,n,null),w(t,r),V(a,t,null),l=!0},p(c,[u]){const f={};u&1&&(f.maxPage=c[0]),a.$set(f)},i(c){l||(S(i.$$.fragment,c),S(o.$$.fragment,c),S(a.$$.fragment,c),l=!0)},o(c){M(i.$$.fragment,c),M(o.$$.fragment,c),M(a.$$.fragment,c),l=!1},d(c){c&&X(t),z(i),z(o),z(a)}}}function Hf(e,t,n){let i,s,o;gt(e,ps,a=>n(1,i=a)),gt(e,Qn,a=>n(2,s=a)),gt(e,de,a=>n(3,o=a));let r=0;return en(()=>{St(Qn,s=[],s),St(de,o=0,o)}),Ba([{action:"loadResource",data:{queries:[{query:"SELECT * FROM users WHERE ID = 1",executionTime:3,slow:!1,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:23,slow:!0,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:15,slow:!1,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:122,slow:!0,date:Date.now()}],resourceQueriesCount:3,resourceSlowQueries:2,resourceTime:1342,pageCount:3}}]),Ha("loadResource",a=>{n(0,r=a.pageCount),St(Qn,s=a.queries,s),St(ps,i={resourceQueriesCount:a.resourceQueriesCount,resourceSlowQueries:a.resourceSlowQueries,resourceTime:a.resourceTime},i)}),[r]}class Nf extends K{constructor(t){super(),Q(this,t,Hf,zf,Y,{})}}function Bf(e){let t,n,i,s,o,r,a,l;var c=e[1];function u(f){return{props:{class:"text-dark-300"}}}return c&&(i=Xe(c,u())),{c(){t=P("div"),n=P("div"),i&&H(i.$$.fragment),s=q(),o=P("input"),O(n,"class","pr-2"),O(o,"type","text"),O(o,"class","bg-transparent outline-none w-full"),O(o,"placeholder","Search resources..."),O(t,"class","p-2 flex items-center outline-none border-[1px] border-transparent transition-all duration-100 focus-within:border-cyan-600 rounded-md bg-dark-600")},m(f,d){ot(f,t,d),w(t,n),i&&V(i,n,null),w(t,s),w(t,o),io(o,e[0]),r=!0,a||(l=Nt(o,"input",e[2]),a=!0)},p(f,[d]){if(d&2&&c!==(c=f[1])){if(i){Lt();const h=i;M(h.$$.fragment,1,0,()=>{z(h,1)}),Tt()}c?(i=Xe(c,u()),H(i.$$.fragment),S(i.$$.fragment,1),V(i,n,null)):i=null}d&1&&o.value!==f[0]&&io(o,f[0])},i(f){r||(i&&S(i.$$.fragment,f),r=!0)},o(f){i&&M(i.$$.fragment,f),r=!1},d(f){f&&X(t),i&&z(i),a=!1,l()}}}function jf(e,t,n){let{icon:i}=t,{value:s}=t;function o(){s=this.value,n(0,s)}return e.$$set=r=>{"icon"in r&&n(1,i=r.icon),"value"in r&&n(0,s=r.value)},[s,i,o]}class Wf extends K{constructor(t){super(),Q(this,t,jf,Bf,Y,{icon:1,value:0})}}function Gf(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function qf(e){let t,n;const i=[{name:"file-analytics"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Gf]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class Uf extends K{constructor(t){super(),Q(this,t,Yf,qf,Y,{})}}const Xf=Uf;function Kf(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function Qf(e){let t,n;const i=[{name:"search"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Kf]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class Jf extends K{constructor(t){super(),Q(this,t,Zf,Qf,Y,{})}}const td=Jf;function ed(e){let t;const n=e[2].default,i=Rt(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&At(i,n,s,s[3],t?$t(n,s[3],o,null):Pt(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){M(i,s),t=!1},d(s){i&&i.d(s)}}}function nd(e){let t,n;const i=[{name:"source-code"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[ed]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=N(N({},t),nt(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=nt(t),[o,t,i,s]}class sd extends K{constructor(t){super(),Q(this,t,id,nd,Y,{})}}const od=sd;/*! - * @kurkle/color v0.3.2 - * https://github.com/kurkle/color#readme - * (c) 2023 Jukka Kurkela - * Released under the MIT License - */function Rn(e){return e+.5|0}const ge=(e,t,n)=>Math.max(Math.min(e,n),t);function un(e){return ge(Rn(e*2.55),0,255)}function be(e){return ge(Rn(e*255),0,255)}function oe(e){return ge(Rn(e/2.55)/100,0,1)}function Bo(e){return ge(Rn(e*100),0,100)}const Et={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ws=[..."0123456789ABCDEF"],rd=e=>ws[e&15],ad=e=>ws[(e&240)>>4]+ws[e&15],Tn=e=>(e&240)>>4===(e&15),ld=e=>Tn(e.r)&&Tn(e.g)&&Tn(e.b)&&Tn(e.a);function cd(e){var t=e.length,n;return e[0]==="#"&&(t===4||t===5?n={r:255&Et[e[1]]*17,g:255&Et[e[2]]*17,b:255&Et[e[3]]*17,a:t===5?Et[e[4]]*17:255}:(t===7||t===9)&&(n={r:Et[e[1]]<<4|Et[e[2]],g:Et[e[3]]<<4|Et[e[4]],b:Et[e[5]]<<4|Et[e[6]],a:t===9?Et[e[7]]<<4|Et[e[8]]:255})),n}const ud=(e,t)=>e<255?t(e):"";function fd(e){var t=ld(e)?rd:ad;return e?"#"+t(e.r)+t(e.g)+t(e.b)+ud(e.a,t):void 0}const dd=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function ja(e,t,n){const i=t*Math.min(n,1-n),s=(o,r=(o+e/30)%12)=>n-i*Math.max(Math.min(r-3,9-r,1),-1);return[s(0),s(8),s(4)]}function hd(e,t,n){const i=(s,o=(s+e/60)%6)=>n-n*t*Math.max(Math.min(o,4-o,1),0);return[i(5),i(3),i(1)]}function gd(e,t,n){const i=ja(e,1,.5);let s;for(t+n>1&&(s=1/(t+n),t*=s,n*=s),s=0;s<3;s++)i[s]*=1-t-n,i[s]+=t;return i}function pd(e,t,n,i,s){return e===s?(t-n)/i+(t.5?u/(2-o-r):u/(o+r),l=pd(n,i,s,u,o),l=l*60+.5),[l|0,c||0,a]}function Ws(e,t,n,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,i)).map(be)}function Gs(e,t,n){return Ws(ja,e,t,n)}function md(e,t,n){return Ws(gd,e,t,n)}function _d(e,t,n){return Ws(hd,e,t,n)}function Wa(e){return(e%360+360)%360}function bd(e){const t=dd.exec(e);let n=255,i;if(!t)return;t[5]!==i&&(n=t[6]?un(+t[5]):be(+t[5]));const s=Wa(+t[2]),o=+t[3]/100,r=+t[4]/100;return t[1]==="hwb"?i=md(s,o,r):t[1]==="hsv"?i=_d(s,o,r):i=Gs(s,o,r),{r:i[0],g:i[1],b:i[2],a:n}}function yd(e,t){var n=js(e);n[0]=Wa(n[0]+t),n=Gs(n),e.r=n[0],e.g=n[1],e.b=n[2]}function vd(e){if(!e)return;const t=js(e),n=t[0],i=Bo(t[1]),s=Bo(t[2]);return e.a<255?`hsla(${n}, ${i}%, ${s}%, ${oe(e.a)})`:`hsl(${n}, ${i}%, ${s}%)`}const jo={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Wo={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function xd(){const e={},t=Object.keys(Wo),n=Object.keys(jo);let i,s,o,r,a;for(i=0;i>16&255,o>>8&255,o&255]}return e}let In;function wd(e){In||(In=xd(),In.transparent=[0,0,0,0]);const t=In[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const Sd=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Cd(e){const t=Sd.exec(e);let n=255,i,s,o;if(t){if(t[7]!==i){const r=+t[7];n=t[8]?un(r):ge(r*255,0,255)}return i=+t[1],s=+t[3],o=+t[5],i=255&(t[2]?un(i):ge(i,0,255)),s=255&(t[4]?un(s):ge(s,0,255)),o=255&(t[6]?un(o):ge(o,0,255)),{r:i,g:s,b:o,a:n}}}function Md(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${oe(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Qi=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,He=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function kd(e,t,n){const i=He(oe(e.r)),s=He(oe(e.g)),o=He(oe(e.b));return{r:be(Qi(i+n*(He(oe(t.r))-i))),g:be(Qi(s+n*(He(oe(t.g))-s))),b:be(Qi(o+n*(He(oe(t.b))-o))),a:e.a+n*(t.a-e.a)}}function Vn(e,t,n){if(e){let i=js(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*n,t===0?360:1)),i=Gs(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function Ga(e,t){return e&&Object.assign(t||{},e)}function Go(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=be(e[3]))):(t=Ga(e,{r:0,g:0,b:0,a:1}),t.a=be(t.a)),t}function Rd(e){return e.charAt(0)==="r"?Cd(e):bd(e)}class xn{constructor(t){if(t instanceof xn)return t;const n=typeof t;let i;n==="object"?i=Go(t):n==="string"&&(i=cd(t)||wd(t)||Rd(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=Ga(this._rgb);return t&&(t.a=oe(t.a)),t}set rgb(t){this._rgb=Go(t)}rgbString(){return this._valid?Md(this._rgb):void 0}hexString(){return this._valid?fd(this._rgb):void 0}hslString(){return this._valid?vd(this._rgb):void 0}mix(t,n){if(t){const i=this.rgb,s=t.rgb;let o;const r=n===o?.5:n,a=2*r-1,l=i.a-s.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;o=1-c,i.r=255&c*i.r+o*s.r+.5,i.g=255&c*i.g+o*s.g+.5,i.b=255&c*i.b+o*s.b+.5,i.a=r*i.a+(1-r)*s.a,this.rgb=i}return this}interpolate(t,n){return t&&(this._rgb=kd(this._rgb,t._rgb,n)),this}clone(){return new xn(this.rgb)}alpha(t){return this._rgb.a=be(t),this}clearer(t){const n=this._rgb;return n.a*=1-t,this}greyscale(){const t=this._rgb,n=Rn(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=n,this}opaquer(t){const n=this._rgb;return n.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Vn(this._rgb,2,t),this}darken(t){return Vn(this._rgb,2,-t),this}saturate(t){return Vn(this._rgb,1,t),this}desaturate(t){return Vn(this._rgb,1,-t),this}rotate(t){return yd(this._rgb,t),this}}/*! - * Chart.js v4.2.1 - * https://www.chartjs.org - * (c) 2023 Chart.js Contributors - * Released under the MIT License - */function ne(){}const $d=(()=>{let e=0;return()=>e++})();function tt(e){return e===null||typeof e>"u"}function st(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function W(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function dt(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function wt(e,t){return dt(e)?e:t}function et(e,t){return typeof e>"u"?t:e}const Ad=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100:+e/t,qa=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t:+e;function rt(e,t,n){if(e&&typeof e.call=="function")return e.apply(n,t)}function G(e,t,n,i){let s,o,r;if(st(e))if(o=e.length,i)for(s=o-1;s>=0;s--)t.call(n,e[s],s);else for(s=0;se,x:e=>e.x,y:e=>e.y};function Dd(e){const t=e.split("."),n=[];let i="";for(const s of t)i+=s,i.endsWith("\\")?i=i.slice(0,-1)+".":(n.push(i),i="");return n}function Od(e){const t=Dd(e);return n=>{for(const i of t){if(i==="")break;n=n&&n[i]}return n}}function Ze(e,t){return(qo[t]||(qo[t]=Od(t)))(e)}function qs(e){return e.charAt(0).toUpperCase()+e.slice(1)}const Yt=e=>typeof e<"u",xe=e=>typeof e=="function",Yo=(e,t)=>{if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0};function Ed(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}const ct=Math.PI,at=2*ct,mi=Number.POSITIVE_INFINITY,Ld=ct/180,lt=ct/2,Ce=ct/4,Uo=ct*2/3,pe=Math.log10,_i=Math.sign;function Zn(e,t,n){return Math.abs(e-t)s-o).pop(),t}function bi(e){return!isNaN(parseFloat(e))&&isFinite(e)}function Id(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}function Ua(e,t,n){let i,s,o;for(i=0,s=e.length;il&&c=Math.min(t,n)-i&&e<=Math.max(t,n)+i}function Us(e,t,n){n=n||(r=>e[r]1;)o=s+i>>1,n(o)?s=o:i=o;return{lo:s,hi:i}}const Ss=(e,t,n,i)=>Us(e,n,i?s=>{const o=e[s][t];return oe[s][t]Us(e,n,i=>e[i][t]>=n);function Bd(e,t,n){let i=0,s=e.length;for(;ii&&e[s-1]>n;)s--;return i>0||s{const i="_onData"+qs(n),s=e[n];Object.defineProperty(e,n,{configurable:!0,enumerable:!1,value(...o){const r=s.apply(this,o);return e._chartjs.listeners.forEach(a=>{typeof a[i]=="function"&&a[i](...o)}),r}})})}function Qo(e,t){const n=e._chartjs;if(!n)return;const i=n.listeners,s=i.indexOf(t);s!==-1&&i.splice(s,1),!(i.length>0)&&(Ka.forEach(o=>{delete e[o]}),delete e._chartjs)}function Wd(e){const t=new Set;let n,i;for(n=0,i=e.length;n"u"?function(e){return e()}:window.requestAnimationFrame}();function Za(e,t){let n=[],i=!1;return function(...s){n=s,i||(i=!0,Qa.call(window,()=>{i=!1,e.apply(t,n)}))}}function Gd(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}const Ja=e=>e==="start"?"left":e==="end"?"right":"center",mn=(e,t,n)=>e==="start"?t:e==="end"?n:(t+n)/2,zn=e=>e===0||e===1,Zo=(e,t,n)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-t)*at/n)),Jo=(e,t,n)=>Math.pow(2,-10*e)*Math.sin((e-t)*at/n)+1,_n={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*lt)+1,easeOutSine:e=>Math.sin(e*lt),easeInOutSine:e=>-.5*(Math.cos(ct*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>zn(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>zn(e)?e:Zo(e,.075,.3),easeOutElastic:e=>zn(e)?e:Jo(e,.075,.3),easeInOutElastic(e){return zn(e)?e:e<.5?.5*Zo(e*2,.1125,.45):.5+.5*Jo(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-_n.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?_n.easeInBounce(e*2)*.5:_n.easeOutBounce(e*2-1)*.5+.5};function tl(e){if(e&&typeof e=="object"){const t=e.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function tr(e){return tl(e)?e:new xn(e)}function Zi(e){return tl(e)?e:new xn(e).saturate(.5).darken(.1).hexString()}const qd=["x","y","borderWidth","radius","tension"],Yd=["color","borderColor","backgroundColor"];function Ud(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),e.set("animations",{colors:{type:"color",properties:Yd},numbers:{type:"number",properties:qd}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Xd(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const er=new Map;function Kd(e,t){t=t||{};const n=e+JSON.stringify(t);let i=er.get(n);return i||(i=new Intl.NumberFormat(e,t),er.set(n,i)),i}function $n(e,t,n){return Kd(t,n).format(e)}const el={values(e){return st(e)?e:""+e},numeric(e,t,n){if(e===0)return"0";const i=this.chart.options.locale;let s,o=e;if(n.length>1){const c=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),o=Qd(e,n)}const r=pe(Math.abs(o)),a=Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:s,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),$n(e,i,l)},logarithmic(e,t,n){if(e===0)return"0";const i=n[t].significand||e/Math.pow(10,Math.floor(pe(e)));return[1,2,3,5,10,15].includes(i)||t>.8*n.length?el.numeric.call(this,e,t,n):""}};function Qd(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Ei={formatters:el};function Zd(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,n)=>n.lineWidth,tickColor:(t,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ei.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Le=Object.create(null),Cs=Object.create(null);function bn(e,t){if(!t)return e;const n=t.split(".");for(let i=0,s=n.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,s)=>Zi(s.backgroundColor),this.hoverBorderColor=(i,s)=>Zi(s.borderColor),this.hoverColor=(i,s)=>Zi(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(n)}set(t,n){return Ji(this,t,n)}get(t){return bn(this,t)}describe(t,n){return Ji(Cs,t,n)}override(t,n){return Ji(Le,t,n)}route(t,n,i,s){const o=bn(this,t),r=bn(this,i),a="_"+n;Object.defineProperties(o,{[a]:{value:o[n],writable:!0},[n]:{enumerable:!0,get(){const l=this[a],c=r[s];return W(l)?Object.assign({},c,l):et(l,c)},set(l){this[a]=l}}})}apply(t){t.forEach(n=>n(this))}}var ut=new Jd({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[Ud,Xd,Zd]);function th(e){return!e||tt(e.size)||tt(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function vi(e,t,n,i,s){let o=t[s];return o||(o=t[s]=e.measureText(s).width,n.push(s)),o>i&&(i=o),i}function eh(e,t,n,i){i=i||{};let s=i.data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(s=i.data={},o=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let r=0;const a=n.length;let l,c,u,f,d;for(l=0;ln.length){for(l=0;l0&&e.stroke()}}function nl(e,t,n){return n=n||.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&o.strokeColor!=="";let l,c;for(e.save(),e.font=s.string,ih(e,o),l=0;l+e||0;function Xs(e,t){const n={},i=W(t),s=i?Object.keys(t):t,o=W(e)?i?r=>et(e[r],e[t[r]]):r=>e[r]:()=>e;for(const r of s)n[r]=ch(o(r));return n}function uh(e){return Xs(e,{top:"y",right:"x",bottom:"y",left:"x"})}function yn(e){return Xs(e,["topLeft","topRight","bottomLeft","bottomRight"])}function kt(e){const t=uh(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function bt(e,t){e=e||{},t=t||ut.font;let n=et(e.size,t.size);typeof n=="string"&&(n=parseInt(n,10));let i=et(e.style,t.style);i&&!(""+i).match(ah)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const s={family:et(e.family,t.family),lineHeight:lh(et(e.lineHeight,t.lineHeight),n),size:n,style:i,weight:et(e.weight,t.weight),string:""};return s.string=th(s),s}function Hn(e,t,n,i){let s=!0,o,r,a;for(o=0,r=e.length;on&&a===0?0:a+l;return{min:r(i,-Math.abs(o)),max:r(s,o)}}function Te(e,t){return Object.assign(Object.create(e),t)}function Ks(e,t=[""],n=e,i,s=()=>e[0]){Yt(i)||(i=ll("_fallback",e));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:n,_fallback:i,_getTarget:s,override:r=>Ks([r,...e],t,n,i)};return new Proxy(o,{deleteProperty(r,a){return delete r[a],delete r._keys,delete e[0][a],!0},get(r,a){return rl(r,a,()=>yh(a,t,e,r))},getOwnPropertyDescriptor(r,a){return Reflect.getOwnPropertyDescriptor(r._scopes[0],a)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(r,a){return or(r).includes(a)},ownKeys(r){return or(r)},set(r,a,l){const c=r._storage||(r._storage=s());return r[a]=c[a]=l,delete r._keys,!0}})}function Je(e,t,n,i){const s={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:ol(e,i),setContext:o=>Je(e,o,n,i),override:o=>Je(e.override(o),t,n,i)};return new Proxy(s,{deleteProperty(o,r){return delete o[r],delete e[r],!0},get(o,r,a){return rl(o,r,()=>hh(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(e,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,r)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(o,r){return Reflect.has(e,r)},ownKeys(){return Reflect.ownKeys(e)},set(o,r,a){return e[r]=a,delete o[r],!0}})}function ol(e,t={scriptable:!0,indexable:!0}){const{_scriptable:n=t.scriptable,_indexable:i=t.indexable,_allKeys:s=t.allKeys}=e;return{allKeys:s,scriptable:n,indexable:i,isScriptable:xe(n)?n:()=>n,isIndexable:xe(i)?i:()=>i}}const dh=(e,t)=>e?e+qs(t):t,Qs=(e,t)=>W(t)&&e!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function rl(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t))return e[t];const i=n();return e[t]=i,i}function hh(e,t,n){const{_proxy:i,_context:s,_subProxy:o,_descriptors:r}=e;let a=i[t];return xe(a)&&r.isScriptable(t)&&(a=gh(t,a,e,n)),st(a)&&a.length&&(a=ph(t,a,e,r.isIndexable)),Qs(t,a)&&(a=Je(a,s,o&&o[t],r)),a}function gh(e,t,n,i){const{_proxy:s,_context:o,_subProxy:r,_stack:a}=n;if(a.has(e))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+e);return a.add(e),t=t(o,r||i),a.delete(e),Qs(e,t)&&(t=Zs(s._scopes,s,e,t)),t}function ph(e,t,n,i){const{_proxy:s,_context:o,_subProxy:r,_descriptors:a}=n;if(Yt(o.index)&&i(e))t=t[o.index%t.length];else if(W(t[0])){const l=t,c=s._scopes.filter(u=>u!==l);t=[];for(const u of l){const f=Zs(c,s,e,u);t.push(Je(f,o,r&&r[e],a))}}return t}function al(e,t,n){return xe(e)?e(t,n):e}const mh=(e,t)=>e===!0?t:typeof e=="string"?Ze(t,e):void 0;function _h(e,t,n,i,s){for(const o of t){const r=mh(n,o);if(r){e.add(r);const a=al(r._fallback,n,s);if(Yt(a)&&a!==n&&a!==i)return a}else if(r===!1&&Yt(i)&&n!==i)return null}return!1}function Zs(e,t,n,i){const s=t._rootScopes,o=al(t._fallback,n,i),r=[...e,...s],a=new Set;a.add(i);let l=sr(a,r,n,o||n,i);return l===null||Yt(o)&&o!==n&&(l=sr(a,r,o,l,i),l===null)?!1:Ks(Array.from(a),[""],s,o,()=>bh(t,n,i))}function sr(e,t,n,i,s){for(;n;)n=_h(e,t,n,i,s);return n}function bh(e,t,n){const i=e._getTarget();t in i||(i[t]={});const s=i[t];return st(s)&&W(n)?n:s||{}}function yh(e,t,n,i){let s;for(const o of t)if(s=ll(dh(o,e),n),Yt(s))return Qs(e,s)?Zs(n,i,e,s):s}function ll(e,t){for(const n of t){if(!n)continue;const i=n[e];if(Yt(i))return i}}function or(e){let t=e._keys;return t||(t=e._keys=vh(e._scopes)),t}function vh(e){const t=new Set;for(const n of e)for(const i of Object.keys(n).filter(s=>!s.startsWith("_")))t.add(i);return Array.from(t)}function xh(e,t,n,i){const{iScale:s}=e,{key:o="r"}=this._parsing,r=new Array(i);let a,l,c,u;for(a=0,l=i;ae.ownerDocument.defaultView.getComputedStyle(e,null);function wh(e,t){return Li(e).getPropertyValue(t)}const Sh=["top","right","bottom","left"];function Fe(e,t,n){const i={};n=n?"-"+n:"";for(let s=0;s<4;s++){const o=Sh[s];i[o]=parseFloat(e[t+"-"+o+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Ch=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function Mh(e,t){const n=e.touches,i=n&&n.length?n[0]:e,{offsetX:s,offsetY:o}=i;let r=!1,a,l;if(Ch(s,o,e.target))a=s,l=o;else{const c=t.getBoundingClientRect();a=i.clientX-c.left,l=i.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function $e(e,t){if("native"in e)return e;const{canvas:n,currentDevicePixelRatio:i}=t,s=Li(n),o=s.boxSizing==="border-box",r=Fe(s,"padding"),a=Fe(s,"border","width"),{x:l,y:c,box:u}=Mh(e,n),f=r.left+(u&&a.left),d=r.top+(u&&a.top);let{width:h,height:g}=t;return o&&(h-=r.width+a.width,g-=r.height+a.height),{x:Math.round((l-f)/h*n.width/i),y:Math.round((c-d)/g*n.height/i)}}function kh(e,t,n){let i,s;if(t===void 0||n===void 0){const o=Js(e);if(!o)t=e.clientWidth,n=e.clientHeight;else{const r=o.getBoundingClientRect(),a=Li(o),l=Fe(a,"border","width"),c=Fe(a,"padding");t=r.width-c.width-l.width,n=r.height-c.height-l.height,i=xi(a.maxWidth,o,"clientWidth"),s=xi(a.maxHeight,o,"clientHeight")}}return{width:t,height:n,maxWidth:i||mi,maxHeight:s||mi}}const Nn=e=>Math.round(e*10)/10;function Rh(e,t,n,i){const s=Li(e),o=Fe(s,"margin"),r=xi(s.maxWidth,e,"clientWidth")||mi,a=xi(s.maxHeight,e,"clientHeight")||mi,l=kh(e,t,n);let{width:c,height:u}=l;if(s.boxSizing==="content-box"){const d=Fe(s,"border","width"),h=Fe(s,"padding");c-=h.width+d.width,u-=h.height+d.height}return c=Math.max(0,c-o.width),u=Math.max(0,i?c/i:u-o.height),c=Nn(Math.min(c,r,l.maxWidth)),u=Nn(Math.min(u,a,l.maxHeight)),c&&!u&&(u=Nn(c/2)),(t!==void 0||n!==void 0)&&i&&l.height&&u>l.height&&(u=l.height,c=Nn(Math.floor(u*i))),{width:c,height:u}}function rr(e,t,n){const i=t||1,s=Math.floor(e.height*i),o=Math.floor(e.width*i);e.height=Math.floor(e.height),e.width=Math.floor(e.width);const r=e.canvas;return r.style&&(n||!r.style.height&&!r.style.width)&&(r.style.height=`${e.height}px`,r.style.width=`${e.width}px`),e.currentDevicePixelRatio!==i||r.height!==s||r.width!==o?(e.currentDevicePixelRatio=i,r.height=s,r.width=o,e.ctx.setTransform(i,0,0,i,0,0),!0):!1}const $h=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e}();function ar(e,t){const n=wh(e,t),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}const Ah=function(e,t){return{x(n){return e+e+t-n},setWidth(n){t=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},Ph=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function ts(e,t,n){return e?Ah(t,n):Ph()}function Fh(e,t){let n,i;(t==="ltr"||t==="rtl")&&(n=e.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",t,"important"),e.prevTextDirection=i)}function Dh(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}/*! - * Chart.js v4.2.1 - * https://www.chartjs.org - * (c) 2023 Chart.js Contributors - * Released under the MIT License - */class Oh{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,n,i,s){const o=n.listeners[s],r=n.duration;o.forEach(a=>a({chart:t,initial:n.initial,numSteps:r,currentStep:Math.min(i-n.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=Qa.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let n=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;const o=i.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,i,t,"progress")),o.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),n+=o.length}),this._lastDate=t,n===0&&(this._running=!1)}_getAnims(t){const n=this._charts;let i=n.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(t,i)),i}listen(t,n,i){this._getAnims(t).listeners[n].push(i)}add(t,n){!n||!n.length||this._getAnims(t).items.push(...n)}has(t){return this._getAnims(t).items.length>0}start(t){const n=this._charts.get(t);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const n=this._charts.get(t);return!(!n||!n.running||!n.items.length)}stop(t){const n=this._charts.get(t);if(!n||!n.items.length)return;const i=n.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();n.items=[],this._notify(t,n,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var ie=new Oh;const lr="transparent",Eh={boolean(e,t,n){return n>.5?t:e},color(e,t,n){const i=tr(e||lr),s=i.valid&&tr(t||lr);return s&&s.valid?s.mix(i,n).hexString():t},number(e,t,n){return e+(t-e)*n}};class Lh{constructor(t,n,i,s){const o=n[i];s=Hn([t.to,s,o,t.from]);const r=Hn([t.from,o,s]);this._active=!0,this._fn=t.fn||Eh[t.type||typeof r],this._easing=_n[t.easing]||_n.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=n,this._prop=i,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,n,i){if(this._active){this._notify(!1);const s=this._target[this._prop],o=i-this._start,r=this._duration-o;this._start=i,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=Hn([t.to,n,s,t.from]),this._from=Hn([t.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const n=t-this._start,i=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||n1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((n,i)=>{t.push({res:n,rej:i})})}_notify(t){const n=t?"res":"rej",i=this._promises||[];for(let s=0;s{const o=t[s];if(!W(o))return;const r={};for(const a of n)r[a]=o[a];(st(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!i.has(a))&&i.set(a,r)})})}_animateOptions(t,n){const i=n.options,s=Ih(t,i);if(!s)return[];const o=this._createAnimations(s,i);return i.$shared&&Th(t.options.$animations,i).then(()=>{t.options=i},()=>{}),o}_createAnimations(t,n){const i=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(n),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,n));continue}const u=n[c];let f=o[c];const d=i.get(c);if(f)if(d&&f.active()){f.update(d,u,a);continue}else f.cancel();if(!d||!d.duration){t[c]=u;continue}o[c]=f=new Lh(d,t,c,u),s.push(f)}return s}update(t,n){if(this._properties.size===0){Object.assign(t,n);return}const i=this._createAnimations(t,n);if(i.length)return ie.add(this._chart,i),!0}}function Th(e,t){const n=[],i=Object.keys(t);for(let s=0;s0||!n&&o<0)return s.index}return null}function hr(e,t){const{chart:n,_cachedMeta:i}=e,s=n._stacks||(n._stacks={}),{iScale:o,vScale:r,index:a}=i,l=o.axis,c=r.axis,u=Nh(o,r,i),f=t.length;let d;for(let h=0;hn[i].axis===t).shift()}function Wh(e,t){return Te(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Gh(e,t,n){return Te(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:"default",type:"data"})}function on(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const s of t){const o=s._stacks;if(!o||o[i]===void 0||o[i][n]===void 0)return;delete o[i][n],o[i]._visualValues!==void 0&&o[i]._visualValues[n]!==void 0&&delete o[i]._visualValues[n]}}}const ns=e=>e==="reset"||e==="none",gr=(e,t)=>t?e:Object.assign({},e),qh=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:fl(n,!0),values:null};class Ye{constructor(t,n){this.chart=t,this._ctx=t.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=fr(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&on(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,n=this._cachedMeta,i=this.getDataset(),s=(f,d,h,g)=>f==="x"?d:f==="r"?g:h,o=n.xAxisID=et(i.xAxisID,es(t,"x")),r=n.yAxisID=et(i.yAxisID,es(t,"y")),a=n.rAxisID=et(i.rAxisID,es(t,"r")),l=n.indexAxis,c=n.iAxisID=s(l,o,r,a),u=n.vAxisID=s(l,r,o,a);n.xScale=this.getScaleForId(o),n.yScale=this.getScaleForId(r),n.rScale=this.getScaleForId(a),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const n=this._cachedMeta;return t===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Qo(this._data,this),t._stacked&&on(t)}_dataCheck(){const t=this.getDataset(),n=t.data||(t.data=[]),i=this._data;if(W(n))this._data=Hh(n);else if(i!==n){if(i){Qo(i,this);const s=this._cachedMeta;on(s),s._parsed=[]}n&&Object.isExtensible(n)&&jd(n,this),this._syncList=[],this._data=n}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const n=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const o=n._stacked;n._stacked=fr(n.vScale,n),n.stack!==i.stack&&(s=!0,on(n),n.stack=i.stack),this._resyncElements(t),(s||o!==n._stacked)&&hr(this,n._parsed)}configure(){const t=this.chart.config,n=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),n,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,n){const{_cachedMeta:i,_data:s}=this,{iScale:o,_stacked:r}=i,a=o.axis;let l=t===0&&n===s.length?!0:i._sorted,c=t>0&&i._parsed[t-1],u,f,d;if(this._parsing===!1)i._parsed=s,i._sorted=!0,d=s;else{st(s[t])?d=this.parseArrayData(i,s,t,n):W(s[t])?d=this.parseObjectData(i,s,t,n):d=this.parsePrimitiveData(i,s,t,n);const h=()=>f[a]===null||c&&f[a]p||f=0;--d)if(!g()){this.updateRangeFromParsed(c,t,h,l);break}}return c}getAllParsedValues(t){const n=this._cachedMeta._parsed,i=[];let s,o,r;for(s=0,o=n.length;s=0&&tthis.getContext(i,s,n),p=c.resolveNamedOptions(d,h,g,f);return p.$shared&&(p.$shared=l,o[r]=Object.freeze(gr(p,l))),p}_resolveAnimations(t,n,i){const s=this.chart,o=this._cachedDataOpts,r=`animation-${n}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const u=this.chart.config,f=u.datasetAnimationScopeKeys(this._type,n),d=u.getOptionScopes(this.getDataset(),f);l=u.createResolver(d,this.getContext(t,i,n))}const c=new ul(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,n){return!n||ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,n){const i=this.resolveDataElementOptions(t,n),s=this._sharedOptions,o=this.getSharedOptions(i),r=this.includeOptions(n,o)||o!==s;return this.updateSharedOptions(o,n,i),{sharedOptions:o,includeOptions:r}}updateElement(t,n,i,s){ns(s)?Object.assign(t,i):this._resolveAnimations(n,s).update(t,i)}updateSharedOptions(t,n,i){t&&!ns(n)&&this._resolveAnimations(void 0,n).update(t,i)}_setStyle(t,n,i,s){t.active=s;const o=this.getStyle(n,s);this._resolveAnimations(n,i,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,n,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,n,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const n=this._data,i=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=i.length,o=n.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o{for(c.length+=n,a=c.length-1;a>=r;a--)c[a]=c[a-n]};for(l(o),a=t;ayi(y,a,l,!0)?1:Math.max(x,x*n,v,v*n),g=(y,x,v)=>yi(y,a,l,!0)?-1:Math.min(x,x*n,v,v*n),p=h(0,c,f),m=h(lt,u,d),_=g(ct,c,f),b=g(ct+lt,u,d);i=(p-_)/2,s=(m-b)/2,o=-(p+_)/2,r=-(m+b)/2}return{ratioX:i,ratioY:s,offsetX:o,offsetY:r}}class je extends Ye{constructor(t,n){super(t,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,n){const i=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=i;else{let o=l=>+i[l];if(W(i[t])){const{key:l="value"}=this._parsing;o=c=>+Ze(i[c],l)}let r,a;for(r=t,a=t+n;r0&&!isNaN(t)?at*(Math.abs(t)/n):0}getLabelAndValue(t){const n=this._cachedMeta,i=this.chart,s=i.data.labels||[],o=$n(n._parsed[t],i.options.locale);return{label:s[t]||"",value:o}}getMaxBorderWidth(t){let n=0;const i=this.chart;let s,o,r,a,l;if(!t){for(s=0,o=i.data.datasets.length;st!=="spacing",_indexable:t=>t!=="spacing"}),I(je,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const n=t.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return n.labels.map((o,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:s,lineWidth:l.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(r),index:r}})}return[]}},onClick(t,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}}});class Jn extends Ye{constructor(t,n){super(t,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const n=this._cachedMeta,i=this.chart,s=i.data.labels||[],o=$n(n._parsed[t].r,i.options.locale);return{label:s[t]||"",value:o}}parseObjectData(t,n,i,s){return xh.bind(this)(t,n,i,s)}update(t){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,t)}getMinMax(){const t=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((i,s)=>{const o=this.getParsed(s).r;!isNaN(o)&&this.chart.getDataVisibility(s)&&(on.max&&(n.max=o))}),n}_updateRadius(){const t=this.chart,n=t.chartArea,i=t.options,s=Math.min(n.right-n.left,n.bottom-n.top),o=Math.max(s/2,0),r=Math.max(i.cutoutPercentage?o/100*i.cutoutPercentage:1,0),a=(o-r)/t.getVisibleDatasetCount();this.outerRadius=o-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(t,n,i,s){const o=s==="reset",r=this.chart,l=r.options.animation,c=this._cachedMeta.rScale,u=c.xCenter,f=c.yCenter,d=c.getIndexAngle(0)-.5*ct;let h=d,g;const p=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&n++}),n}_computeAngle(t,n,i){return this.chart.getDataVisibility(t)?Bt(this.resolveDataElementOptions(t,n).angle||i):0}}I(Jn,"id","polarArea"),I(Jn,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),I(Jn,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const n=t.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return n.labels.map((o,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:s,lineWidth:l.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(r),index:r}})}return[]}},onClick(t,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class ks extends je{}I(ks,"id","pie"),I(ks,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});function ke(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class to{static override(t){Object.assign(to.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return ke()}parse(){return ke()}format(){return ke()}add(){return ke()}diff(){return ke()}startOf(){return ke()}endOf(){return ke()}}var Uh={_date:to};function Xh(e,t,n,i){const{controller:s,data:o,_sorted:r}=e,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?Nd:Ss;if(i){if(s._sharedOptions){const c=o[0],u=typeof c.getRange=="function"&&c.getRange(t);if(u){const f=l(o,t,n-u),d=l(o,t,n+u);return{lo:f.lo,hi:d.hi}}}}else return l(o,t,n)}return{lo:0,hi:o.length-1}}function An(e,t,n,i,s){const o=e.getSortedVisibleDatasetMetas(),r=n[t];for(let a=0,l=o.length;a{l[r](t[n],s)&&(o.push({element:l,datasetIndex:c,index:u}),a=a||l.inRange(t.x,t.y,s))}),i&&!a?[]:o}var Jh={evaluateInteractionItems:An,modes:{index(e,t,n,i){const s=$e(t,e),o=n.axis||"x",r=n.includeInvisible||!1,a=n.intersect?is(e,s,o,i,r):ss(e,s,o,!1,i,r),l=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach(c=>{const u=a[0].index,f=c.data[u];f&&!f.skip&&l.push({element:f,datasetIndex:c.index,index:u})}),l):[]},dataset(e,t,n,i){const s=$e(t,e),o=n.axis||"xy",r=n.includeInvisible||!1;let a=n.intersect?is(e,s,o,i,r):ss(e,s,o,!1,i,r);if(a.length>0){const l=a[0].datasetIndex,c=e.getDatasetMeta(l).data;a=[];for(let u=0;un.pos===t)}function mr(e,t){return e.filter(n=>dl.indexOf(n.pos)===-1&&n.box.axis===t)}function an(e,t){return e.sort((n,i)=>{const s=t?i:n,o=t?n:i;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function tg(e){const t=[];let n,i,s,o,r,a;for(n=0,i=(e||[]).length;nc.box.fullSize),!0),i=an(rn(t,"left"),!0),s=an(rn(t,"right")),o=an(rn(t,"top"),!0),r=an(rn(t,"bottom")),a=mr(t,"x"),l=mr(t,"y");return{fullSize:n,leftAndTop:i.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:rn(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function _r(e,t,n,i){return Math.max(e[n],t[n])+Math.max(e[i],t[i])}function hl(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function sg(e,t,n,i){const{pos:s,box:o}=n,r=e.maxPadding;if(!W(s)){n.size&&(e[s]-=n.size);const f=i[n.stack]||{size:0,count:1};f.size=Math.max(f.size,n.horizontal?o.height:o.width),n.size=f.size/f.count,e[s]+=n.size}o.getPadding&&hl(r,o.getPadding());const a=Math.max(0,t.outerWidth-_r(r,e,"left","right")),l=Math.max(0,t.outerHeight-_r(r,e,"top","bottom")),c=a!==e.w,u=l!==e.h;return e.w=a,e.h=l,n.horizontal?{same:c,other:u}:{same:u,other:c}}function og(e){const t=e.maxPadding;function n(i){const s=Math.max(t[i]-e[i],0);return e[i]+=s,s}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}function rg(e,t){const n=t.maxPadding;function i(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],n[r])}),o}return i(e?["left","right"]:["top","bottom"])}function fn(e,t,n,i){const s=[];let o,r,a,l,c,u;for(o=0,r=e.length,c=0;o{typeof p.beforeLayout=="function"&&p.beforeLayout()});const u=l.reduce((p,m)=>m.box.options&&m.box.options.display===!1?p:p+1,0)||1,f=Object.freeze({outerWidth:t,outerHeight:n,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/u,hBoxMaxHeight:r/2}),d=Object.assign({},s);hl(d,kt(i));const h=Object.assign({maxPadding:d,w:o,h:r,x:s.left,y:s.top},s),g=ng(l.concat(c),f);fn(a.fullSize,h,f,g),fn(l,h,f,g),fn(c,h,f,g)&&fn(l,h,f,g),og(h),br(a.leftAndTop,h,f,g),h.x+=h.w,h.y+=h.h,br(a.rightAndBottom,h,f,g),e.chartArea={left:h.left,top:h.top,right:h.left+h.w,bottom:h.top+h.h,height:h.h,width:h.w},G(a.chartArea,p=>{const m=p.box;Object.assign(m,e.chartArea),m.update(h.w,h.h,{left:0,top:0,right:0,bottom:0})})}};class gl{acquireContext(t,n){}releaseContext(t){return!1}addEventListener(t,n,i){}removeEventListener(t,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,n,i,s){return n=Math.max(0,n||t.width),i=i||t.height,{width:n,height:Math.max(0,s?Math.floor(n/s):i)}}isAttached(t){return!0}updateConfig(t){}}class ag extends gl{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ti="$chartjs",lg={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},yr=e=>e===null||e==="";function cg(e,t){const n=e.style,i=e.getAttribute("height"),s=e.getAttribute("width");if(e[ti]={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",yr(s)){const o=ar(e,"width");o!==void 0&&(e.width=o)}if(yr(i))if(e.style.height==="")e.height=e.width/(t||2);else{const o=ar(e,"height");o!==void 0&&(e.height=o)}return e}const pl=$h?{passive:!0}:!1;function ug(e,t,n){e.addEventListener(t,n,pl)}function fg(e,t,n){e.canvas.removeEventListener(t,n,pl)}function dg(e,t){const n=lg[e.type]||e.type,{x:i,y:s}=$e(e,t);return{type:n,chart:t,native:e,x:i!==void 0?i:null,y:s!==void 0?s:null}}function wi(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function hg(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||wi(a.addedNodes,i),r=r&&!wi(a.removedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function gg(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||wi(a.removedNodes,i),r=r&&!wi(a.addedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const Cn=new Map;let vr=0;function ml(){const e=window.devicePixelRatio;e!==vr&&(vr=e,Cn.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function pg(e,t){Cn.size||window.addEventListener("resize",ml),Cn.set(e,t)}function mg(e){Cn.delete(e),Cn.size||window.removeEventListener("resize",ml)}function _g(e,t,n){const i=e.canvas,s=i&&Js(i);if(!s)return;const o=Za((a,l)=>{const c=s.clientWidth;n(a,l),c{const l=a[0],c=l.contentRect.width,u=l.contentRect.height;c===0&&u===0||o(c,u)});return r.observe(s),pg(e,o),r}function os(e,t,n){n&&n.disconnect(),t==="resize"&&mg(e)}function bg(e,t,n){const i=e.canvas,s=Za(o=>{e.ctx!==null&&n(dg(o,e))},e);return ug(i,t,s),s}class yg extends gl{acquireContext(t,n){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(cg(t,n),i):null}releaseContext(t){const n=t.canvas;if(!n[ti])return!1;const i=n[ti].initial;["height","width"].forEach(o=>{const r=i[o];tt(r)?n.removeAttribute(o):n.setAttribute(o,r)});const s=i.style||{};return Object.keys(s).forEach(o=>{n.style[o]=s[o]}),n.width=n.width,delete n[ti],!0}addEventListener(t,n,i){this.removeEventListener(t,n);const s=t.$proxies||(t.$proxies={}),r={attach:hg,detach:gg,resize:_g}[n]||bg;s[n]=r(t,n,i)}removeEventListener(t,n){const i=t.$proxies||(t.$proxies={}),s=i[n];if(!s)return;({attach:os,detach:os,resize:os}[n]||fg)(t,n,s),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,n,i,s){return Rh(t,n,i,s)}isAttached(t){const n=Js(t);return!!(n&&n.isConnected)}}function vg(e){return!cl()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?ag:yg}var Xn;let Pn=(Xn=class{constructor(){I(this,"active",!1)}tooltipPosition(t){const{x:n,y:i}=this.getProps(["x","y"],t);return{x:n,y:i}}hasValue(){return bi(this.x)&&bi(this.y)}getProps(t,n){const i=this.$animations;if(!n||!i)return this;const s={};return t.forEach(o=>{s[o]=i[o]&&i[o].active()?i[o]._to:this[o]}),s}},I(Xn,"defaults",{}),I(Xn,"defaultRoutes"),Xn);function xg(e,t){const n=e.options.ticks,i=wg(e),s=Math.min(n.maxTicksLimit||i,i),o=n.major.enabled?Cg(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return Mg(t,c,o,r/s),c;const u=Sg(o,t,s);if(r>0){let f,d;const h=r>1?Math.round((l-a)/(r-1)):null;for(jn(t,c,u,tt(h)?0:a-h,a),f=0,d=r-1;fs)return l}return Math.max(s,1)}function Cg(e){const t=[];let n,i;for(n=0,i=e.length;ne==="left"?"right":e==="right"?"left":e,xr=(e,t,n)=>t==="top"||t==="left"?e[t]+n:e[t]-n,wr=(e,t)=>Math.min(t||e,e);function Sr(e,t){const n=[],i=e.length/t,s=e.length;let o=0;for(;or+a)))return l}function Ag(e,t){G(e,n=>{const i=n.gc,s=i.length/2;let o;if(s>t){for(o=0;oi?i:n,i=s&&n>i?n:i,{min:wt(n,wt(i,n)),max:wt(i,wt(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){rt(this.options.beforeUpdate,[this])}update(t,n,i){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=fh(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a=o||i<=1||!this.isHorizontal()){this.labelRotation=s;return}const u=this._getLabelSizes(),f=u.widest.width,d=u.highest.height,h=Mt(this.chart.width-f,0,this.maxWidth);a=t.offset?this.maxWidth/i:h/(i-1),f+6>a&&(a=h/(i-(t.offset?.5:1)),l=this.maxHeight-ln(t.grid)-n.padding-Cr(t.title,this.chart.options.font),c=Math.sqrt(f*f+d*d),r=Ys(Math.min(Math.asin(Mt((u.highest.height+6)/a,-1,1)),Math.asin(Mt(l/c,-1,1))-Math.asin(Mt(d/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){rt(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){rt(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:n,options:{ticks:i,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=Cr(s,n.options.font);if(a?(t.width=this.maxWidth,t.height=ln(o)+l):(t.height=this.maxHeight,t.width=ln(o)+l),i.display&&this.ticks.length){const{first:c,last:u,widest:f,highest:d}=this._getLabelSizes(),h=i.padding*2,g=Bt(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(a){const _=i.mirror?0:m*f.width+p*d.height;t.height=Math.min(this.maxHeight,t.height+_+h)}else{const _=i.mirror?0:p*f.width+m*d.height;t.width=Math.min(this.maxWidth,t.width+_+h)}this._calculatePadding(c,u,m,p)}}this._handleMargins(),a?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,n,i,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const u=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1);let d=0,h=0;l?c?(d=s*t.width,h=i*n.height):(d=i*t.height,h=s*n.width):o==="start"?h=n.width:o==="end"?d=t.width:o!=="inner"&&(d=t.width/2,h=n.width/2),this.paddingLeft=Math.max((d-u+r)*this.width/(this.width-u),0),this.paddingRight=Math.max((h-f+r)*this.width/(this.width-f),0)}else{let u=n.height/2,f=t.height/2;o==="start"?(u=0,f=t.height):o==="end"&&(u=n.height,f=0),this.paddingTop=u+r,this.paddingBottom=f+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){rt(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:n}=this.options;return n==="top"||n==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let n,i;for(n=0,i=t.length;n({width:r[A]||0,height:a[A]||0});return{first:$(0),last:$(n-1),widest:$(R),highest:$(k),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,n){return NaN}getValueForPixel(t){}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const n=this._startPixel+t*this._length;return zd(this._alignToPixels?Me(this.chart,n,0):n)}getDecimalForPixel(t){const n=(t-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:n}=this;return t<0&&n<0?n:t>0&&n>0?t:0}getContext(t){const n=this.ticks||[];if(t>=0&&ta*s?a/i:l/s:l*s0}_computeGridLineItems(t){const n=this.axis,i=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),f=this.ticks.length+(l?1:0),d=ln(o),h=[],g=a.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,_=function(T){return Me(i,T,p)};let b,y,x,v,R,k,$,A,F,C,D,U;if(r==="top")b=_(this.bottom),k=this.bottom-d,A=b-m,C=_(t.top)+m,U=t.bottom;else if(r==="bottom")b=_(this.top),C=t.top,U=_(t.bottom)-m,k=b+m,A=this.top+d;else if(r==="left")b=_(this.right),R=this.right-d,$=b-m,F=_(t.left)+m,D=t.right;else if(r==="right")b=_(this.left),F=t.left,D=_(t.right)-m,R=b+m,$=this.left+d;else if(n==="x"){if(r==="center")b=_((t.top+t.bottom)/2+.5);else if(W(r)){const T=Object.keys(r)[0],B=r[T];b=_(this.chart.scales[T].getPixelForValue(B))}C=t.top,U=t.bottom,k=b+m,A=k+d}else if(n==="y"){if(r==="center")b=_((t.left+t.right)/2);else if(W(r)){const T=Object.keys(r)[0],B=r[T];b=_(this.chart.scales[T].getPixelForValue(B))}R=b-m,$=R-d,F=t.left,D=t.right}const Z=et(s.ticks.maxTicksLimit,f),E=Math.max(1,Math.ceil(f/Z));for(y=0;yo.value===t);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const n=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,u)=>{!u.width||!u.color||(i.save(),i.lineWidth=u.width,i.strokeStyle=u.color,i.setLineDash(u.borderDash||[]),i.lineDashOffset=u.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(n.display)for(o=0,r=s.length;o{this.draw(o)}}]:[{z:i,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let o,r;for(o=0,r=n.length;o{const i=n.split("."),s=i.pop(),o=[e].concat(i).join("."),r=t[n].split("."),a=r.pop(),l=r.join(".");ut.route(o,s,l,a)})}function Tg(e){return"id"in e&&"defaults"in e}class Ig{constructor(){this.controllers=new Wn(Ye,"datasets",!0),this.elements=new Wn(Pn,"elements"),this.plugins=new Wn(Object,"plugins"),this.scales=new Wn(Ie,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,n,i){[...n].forEach(s=>{const o=i||this._getRegistryForType(s);i||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):G(s,r=>{const a=i||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,n,i){const s=qs(t);rt(i["before"+s],[],i),n[t](i),rt(i["after"+s],[],i)}_getRegistryForType(t){for(let n=0;no.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(n,i),t,"stop"),this._notify(s(i,n),t,"start")}}function zg(e){const t={},n=[],i=Object.keys(Kt.plugins.items);for(let o=0;o1&&Si(e[0].toLowerCase(),t),e))return e;throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function qg(e,t){const n=Le[e.type]||{scales:{}},i=t.scales||{},s=Rs(e.type,t),o=Object.create(null);return Object.keys(i).forEach(r=>{const a=i[r];if(!W(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=Si(r,a),c=Wg(l,s),u=n.scales||{};o[r]=pn(Object.create(null),[{axis:l},a,u[l],u[c]])}),e.data.datasets.forEach(r=>{const a=r.type||e.type,l=r.indexAxis||Rs(a,t),u=(Le[a]||{}).scales||{};Object.keys(u).forEach(f=>{const d=jg(f,l),h=r[d+"AxisID"]||d;o[h]=o[h]||Object.create(null),pn(o[h],[{axis:d},i[h],u[f]])})}),Object.keys(o).forEach(r=>{const a=o[r];pn(a,[ut.scales[a.type],ut.scale])}),o}function _l(e){const t=e.options||(e.options={});t.plugins=et(t.plugins,{}),t.scales=qg(e,t)}function bl(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function Yg(e){return e=e||{},e.data=bl(e.data),_l(e),e}const Mr=new Map,yl=new Set;function Gn(e,t){let n=Mr.get(e);return n||(n=t(),Mr.set(e,n),yl.add(n)),n}const cn=(e,t,n)=>{const i=Ze(t,n);i!==void 0&&e.add(i)};class Ug{constructor(t){this._config=Yg(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=bl(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),_l(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gn(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,n){return Gn(`${t}.transition.${n}`,()=>[[`datasets.${t}.transitions.${n}`,`transitions.${n}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,n){return Gn(`${t}-${n}`,()=>[[`datasets.${t}.elements.${n}`,`datasets.${t}`,`elements.${n}`,""]])}pluginScopeKeys(t){const n=t.id,i=this.type;return Gn(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,n){const i=this._scopeCache;let s=i.get(t);return(!s||n)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,n,i){const{options:s,type:o}=this,r=this._cachedScopes(t,i),a=r.get(n);if(a)return a;const l=new Set;n.forEach(u=>{t&&(l.add(t),u.forEach(f=>cn(l,t,f))),u.forEach(f=>cn(l,s,f)),u.forEach(f=>cn(l,Le[o]||{},f)),u.forEach(f=>cn(l,ut,f)),u.forEach(f=>cn(l,Cs,f))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),yl.has(n)&&r.set(n,c),c}chartOptionScopes(){const{options:t,type:n}=this;return[t,Le[n]||{},ut.datasets[n]||{},{type:n},ut,Cs]}resolveNamedOptions(t,n,i,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=kr(this._resolverCache,t,s);let l=r;if(Kg(r,n)){o.$shared=!1,i=xe(i)?i():i;const c=this.createResolver(t,i,a);l=Je(r,i,c)}for(const c of n)o[c]=l[c];return o}createResolver(t,n,i=[""],s){const{resolver:o}=kr(this._resolverCache,t,i);return W(n)?Je(o,n,void 0,s):o}}function kr(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const s=n.join();let o=i.get(s);return o||(o={resolver:Ks(t,n),subPrefixes:n.filter(a=>!a.toLowerCase().includes("hover"))},i.set(s,o)),o}const Xg=e=>W(e)&&Object.getOwnPropertyNames(e).reduce((t,n)=>t||xe(e[n]),!1);function Kg(e,t){const{isScriptable:n,isIndexable:i}=ol(e);for(const s of t){const o=n(s),r=i(s),a=(r||o)&&e[s];if(o&&(xe(a)||Xg(a))||r&&st(a))return!0}return!1}var Qg="4.2.1";const Zg=["top","bottom","left","right","chartArea"];function Rr(e,t){return e==="top"||e==="bottom"||Zg.indexOf(e)===-1&&t==="x"}function $r(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function Ar(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),rt(n&&n.onComplete,[e],t)}function Jg(e){const t=e.chart,n=t.options.animation;rt(n&&n.onProgress,[e],t)}function vl(e){return cl()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const ei={},Pr=e=>{const t=vl(e);return Object.values(ei).filter(n=>n.canvas===t).pop()};function tp(e,t,n){const i=Object.keys(e);for(const s of i){const o=+s;if(o>=t){const r=e[s];delete e[s],(n>0||o>t)&&(e[o+n]=r)}}}function ep(e,t,n,i){return!n||e.type==="mouseout"?null:i?t:e}function np(e){const{xScale:t,yScale:n}=e;if(t&&n)return{left:t.left,right:t.right,top:n.top,bottom:n.bottom}}var fe;let Ti=(fe=class{static register(...t){Kt.add(...t),Fr()}static unregister(...t){Kt.remove(...t),Fr()}constructor(t,n){const i=this.config=new Ug(n),s=vl(t),o=Pr(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||vg(s)),this.platform.updateConfig(i);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,u=l&&l.width;if(this.id=$d(),this.ctx=a,this.canvas=l,this.width=u,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Vg,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Gd(f=>this.update(f),r.resizeDelay||0),this._dataChanges=[],ei[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}ie.listen(this,"complete",Ar),ie.listen(this,"progress",Jg),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:n},width:i,height:s,_aspectRatio:o}=this;return tt(t)?n&&o?o:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Kt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():rr(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return nr(this.canvas,this.ctx),this}stop(){return ie.stop(this),this}resize(t,n){ie.running(this)?this._resizeBeforeDraw={width:t,height:n}:this._resize(t,n)}_resize(t,n){const i=this.options,s=this.canvas,o=i.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,n,o),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,rr(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),rt(i.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};G(n,(i,s)=>{i.id=s})}buildOrUpdateScales(){const t=this.options,n=t.scales,i=this.scales,s=Object.keys(i).reduce((r,a)=>(r[a]=!1,r),{});let o=[];n&&(o=o.concat(Object.keys(n).map(r=>{const a=n[r],l=Si(r,a),c=l==="r",u=l==="x";return{options:a,dposition:c?"chartArea":u?"bottom":"left",dtype:c?"radialLinear":u?"category":"linear"}}))),G(o,r=>{const a=r.options,l=a.id,c=Si(l,a),u=et(a.type,r.dtype);(a.position===void 0||Rr(a.position,c)!==Rr(r.dposition))&&(a.position=r.dposition),s[l]=!0;let f=null;if(l in i&&i[l].type===u)f=i[l];else{const d=Kt.getScale(u);f=new d({id:l,type:u,ctx:this.ctx,chart:this}),i[f.id]=f}f.init(a,t)}),G(s,(r,a)=>{r||delete i[a]}),G(i,r=>{me.configure(this,r,r.options),me.addBox(this,r)})}_updateMetasets(){const t=this._metasets,n=this.data.datasets.length,i=t.length;if(t.sort((s,o)=>s.index-o.index),i>n){for(let s=n;sn.length&&delete this._stacks,t.forEach((i,s)=>{n.filter(o=>o===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],n=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,u=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort($r("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){G(this.scales,t=>{me.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!Yo(n,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:o}of n){const r=i==="_removeElements"?-o:o;tp(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=i(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;me.update(this,this.width,this.height,t);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],G(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(t[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const n=this.ctx,i=t._clip,s=!i.disabled,o=np(t)||this.chartArea,r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&il(n,{left:i.left===!1?0:o.left-i.left,right:i.right===!1?this.width:o.right+i.right,top:i.top===!1?0:o.top-i.top,bottom:i.bottom===!1?this.height:o.bottom+i.bottom}),t.controller.draw(),s&&sl(n),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return nl(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,n,i,s){const o=Jh.modes[n];return typeof o=="function"?o(this,t,i,s):[]}getDatasetMeta(t){const n=this.data.datasets[t],i=this._metasets;let s=i.filter(o=>o&&o._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:t,_dataset:n,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Te(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const n=this.data.datasets[t];if(!n)return!1;const i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(t,n){const i=this.getDatasetMeta(t);i.hidden=!n}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,n,i){const s=i?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);Yt(n)?(o.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),r.update(o,{visible:i}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,n){this._updateVisibility(t,n,!1)}show(t,n){this._updateVisibility(t,n,!0)}_destroyDatasetMeta(t){const n=this._metasets[t];n&&n.controller&&n.controller._destroy(),delete this._metasets[t]}_stop(){let t,n;for(this.stop(),ie.remove(this),t=0,n=this.data.datasets.length;t{n.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};G(this.options.events,o=>i(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,n=this.platform,i=(l,c)=>{n.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(n.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",o),i("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),i("attach",a)},n.isAttached(this.canvas)?a():r()}unbindEvents(){G(this._listeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._listeners={},G(this._responsiveListeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,n,i){const s=i?"set":"remove";let o,r,a,l;for(n==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!gi(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(t,n,i){return this._plugins.notify(this,t,n,i)}isPluginEnabled(t){return this._plugins._cache.filter(n=>n.plugin.id===t).length===1}_updateHoverStyles(t,n,i){const s=this.options.hover,o=(l,c)=>l.filter(u=>!c.some(f=>u.datasetIndex===f.datasetIndex&&u.index===f.index)),r=o(n,t),a=i?t:o(t,n);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,n){const i={event:t,replay:n,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;const o=this._handleEvent(t,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(o||i.changed)&&this.render(),this}_handleEvent(t,n,i){const{_active:s=[],options:o}=this,r=n,a=this._getActiveElements(t,s,i,r),l=Ed(t),c=ep(t,this._lastEvent,i,l);i&&(this._lastEvent=null,rt(o.onHover,[t,a,this],this),l&&rt(o.onClick,[t,a,this],this));const u=!gi(a,s);return(u||n)&&(this._active=a,this._updateHoverStyles(a,s,n)),this._lastEvent=c,u}_getActiveElements(t,n,i,s){if(t.type==="mouseout")return[];if(!i)return n;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}},I(fe,"defaults",ut),I(fe,"instances",ei),I(fe,"overrides",Le),I(fe,"registry",Kt),I(fe,"version",Qg),I(fe,"getChart",Pr),fe);function Fr(){return G(Ti.instances,e=>e._plugins.invalidate())}function ip(e,t,n){const{startAngle:i,pixelMargin:s,x:o,y:r,outerRadius:a,innerRadius:l}=t;let c=s/a;e.beginPath(),e.arc(o,r,a,i-c,n+c),l>s?(c=s/l,e.arc(o,r,l,n+c,i-c,!0)):e.arc(o,r,s,n+lt,i-lt),e.closePath(),e.clip()}function sp(e){return Xs(e,["outerStart","outerEnd","innerStart","innerEnd"])}function op(e,t,n,i){const s=sp(e.options.borderRadius),o=(n-t)/2,r=Math.min(o,i*t/2),a=l=>{const c=(n-Math.min(o,l))*i/2;return Mt(l,0,Math.min(o,c))};return{outerStart:a(s.outerStart),outerEnd:a(s.outerEnd),innerStart:Mt(s.innerStart,0,r),innerEnd:Mt(s.innerEnd,0,r)}}function Ne(e,t,n,i){return{x:n+e*Math.cos(t),y:i+e*Math.sin(t)}}function Ci(e,t,n,i,s,o){const{x:r,y:a,startAngle:l,pixelMargin:c,innerRadius:u}=t,f=Math.max(t.outerRadius+i+n-c,0),d=u>0?u+i+n+c:0;let h=0;const g=s-l;if(i){const E=u>0?u-i:0,T=f>0?f-i:0,B=(E+T)/2,ft=B!==0?g*B/(B+i):g;h=(g-ft)/2}const p=Math.max(.001,g*f-n/ct)/f,m=(g-p)/2,_=l+m+h,b=s-m-h,{outerStart:y,outerEnd:x,innerStart:v,innerEnd:R}=op(t,d,f,b-_),k=f-y,$=f-x,A=_+y/k,F=b-x/$,C=d+v,D=d+R,U=_+v/C,Z=b-R/D;if(e.beginPath(),o){const E=(A+F)/2;if(e.arc(r,a,f,A,E),e.arc(r,a,f,E,F),x>0){const it=Ne($,F,r,a);e.arc(it.x,it.y,x,F,b+lt)}const T=Ne(D,b,r,a);if(e.lineTo(T.x,T.y),R>0){const it=Ne(D,Z,r,a);e.arc(it.x,it.y,R,b+lt,Z+Math.PI)}const B=(b-R/d+(_+v/d))/2;if(e.arc(r,a,d,b-R/d,B,!0),e.arc(r,a,d,B,_+v/d,!0),v>0){const it=Ne(C,U,r,a);e.arc(it.x,it.y,v,U+Math.PI,_-lt)}const ft=Ne(k,_,r,a);if(e.lineTo(ft.x,ft.y),y>0){const it=Ne(k,A,r,a);e.arc(it.x,it.y,y,_-lt,A)}}else{e.moveTo(r,a);const E=Math.cos(A)*f+r,T=Math.sin(A)*f+a;e.lineTo(E,T);const B=Math.cos(F)*f+r,ft=Math.sin(F)*f+a;e.lineTo(B,ft)}e.closePath()}function rp(e,t,n,i,s){const{fullCircles:o,startAngle:r,circumference:a}=t;let l=t.endAngle;if(o){Ci(e,t,n,i,l,s);for(let c=0;c=at||yi(o,a,l),p=Hd(r,c+d,u+d);return g&&p}getCenterPoint(t){const{x:n,y:i,startAngle:s,endAngle:o,innerRadius:r,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:l,spacing:c}=this.options,u=(s+o)/2,f=(r+a+c+l)/2;return{x:n+Math.cos(u)*f,y:i+Math.sin(u)*f}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:n,circumference:i}=this,s=(n.offset||0)/4,o=(n.spacing||0)/2,r=n.circular;if(this.pixelMargin=n.borderAlign==="inner"?.33:0,this.fullCircles=i>at?Math.floor(i/at):0,i===0||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const l=1-Math.sin(Math.min(ct,i||0)),c=s*l;t.fillStyle=n.backgroundColor,t.strokeStyle=n.borderColor,rp(t,this,c,o,r),ap(t,this,c,o,r),t.restore()}}I(ni,"id","arc"),I(ni,"defaults",{borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),I(ni,"defaultRoutes",{backgroundColor:"backgroundColor"});const $s=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Dr=$s.map(e=>e.replace("rgb(","rgba(").replace(")",", 0.5)"));function xl(e){return $s[e%$s.length]}function wl(e){return Dr[e%Dr.length]}function lp(e,t){return e.borderColor=xl(t),e.backgroundColor=wl(t),++t}function cp(e,t){return e.backgroundColor=e.data.map(()=>xl(t++)),t}function up(e,t){return e.backgroundColor=e.data.map(()=>wl(t++)),t}function fp(e){let t=0;return(n,i)=>{const s=e.getDatasetMeta(i).controller;s instanceof je?t=cp(n,t):s instanceof Jn?t=up(n,t):s&&(t=lp(n,t))}}function Or(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function dp(e){return e&&(e.borderColor||e.backgroundColor)}var hp={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;const{data:{datasets:i},options:s}=e.config,{elements:o}=s;if(!n.forceOverride&&(Or(i)||dp(s)||o&&Or(o)))return;const r=fp(e);i.forEach(r)}};class Sl extends Pn{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=n;const s=st(i.text)?i.text.length:1;this._padding=kt(i.padding);const o=s*bt(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:n,left:i,bottom:s,right:o,options:r}=this,a=r.align;let l=0,c,u,f;return this.isHorizontal()?(u=mn(a,i,o),f=n+t,c=o-i):(r.position==="left"?(u=i+t,f=mn(a,s,n),l=ct*-.5):(u=o-t,f=mn(a,n,s),l=ct*.5),c=s-n),{titleX:u,titleY:f,maxWidth:c,rotation:l}}draw(){const t=this.ctx,n=this.options;if(!n.display)return;const i=bt(n.font),o=i.lineHeight/2+this._padding.top,{titleX:r,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);Sn(t,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:c,textAlign:Ja(n.align),textBaseline:"middle",translation:[r,a]})}}function gp(e,t){const n=new Sl({ctx:e.ctx,options:t,chart:e});me.configure(e,n,t),me.addBox(e,n),e.titleBlock=n}var pp={id:"title",_element:Sl,start(e,t,n){gp(e,n)},stop(e){const t=e.titleBlock;me.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;me.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const dn={average(e){if(!e.length)return!1;let t,n,i=0,s=0,o=0;for(t=0,n=e.length;t-1?e.split(` -`):e}function mp(e,t){const{element:n,datasetIndex:i,index:s}=t,o=e.getDatasetMeta(i).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:e,label:r,parsed:o.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function Er(e,t){const n=e.chart.ctx,{body:i,footer:s,title:o}=e,{boxWidth:r,boxHeight:a}=t,l=bt(t.bodyFont),c=bt(t.titleFont),u=bt(t.footerFont),f=o.length,d=s.length,h=i.length,g=kt(t.padding);let p=g.height,m=0,_=i.reduce((x,v)=>x+v.before.length+v.lines.length+v.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,f&&(p+=f*c.lineHeight+(f-1)*t.titleSpacing+t.titleMarginBottom),_){const x=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;p+=h*x+(_-h)*l.lineHeight+(_-1)*t.bodySpacing}d&&(p+=t.footerMarginTop+d*u.lineHeight+(d-1)*t.footerSpacing);let b=0;const y=function(x){m=Math.max(m,n.measureText(x).width+b)};return n.save(),n.font=c.string,G(e.title,y),n.font=l.string,G(e.beforeBody.concat(e.afterBody),y),b=t.displayColors?r+2+t.boxPadding:0,G(i,x=>{G(x.before,y),G(x.lines,y),G(x.after,y)}),b=0,n.font=u.string,G(e.footer,y),n.restore(),m+=g.width,{width:m,height:p}}function _p(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}function bp(e,t,n,i){const{x:s,width:o}=i,r=n.caretSize+n.caretPadding;if(e==="left"&&s+o+r>t.width||e==="right"&&s-o-r<0)return!0}function yp(e,t,n,i){const{x:s,width:o}=n,{width:r,chartArea:{left:a,right:l}}=e;let c="center";return i==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),bp(c,e,t,n)&&(c="center"),c}function Lr(e,t,n){const i=n.yAlign||t.yAlign||_p(e,n);return{xAlign:n.xAlign||t.xAlign||yp(e,t,n,i),yAlign:i}}function vp(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function xp(e,t,n){let{y:i,height:s}=e;return t==="top"?i+=n:t==="bottom"?i-=s+n:i-=s/2,i}function Tr(e,t,n,i){const{caretSize:s,caretPadding:o,cornerRadius:r}=e,{xAlign:a,yAlign:l}=n,c=s+o,{topLeft:u,topRight:f,bottomLeft:d,bottomRight:h}=yn(r);let g=vp(t,a);const p=xp(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(u,d)+s:a==="right"&&(g+=Math.max(f,h)+s),{x:Mt(g,0,i.width-t.width),y:Mt(p,0,i.height-t.height)}}function qn(e,t,n){const i=kt(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function Ir(e){return Xt([],se(e))}function wp(e,t,n){return Te(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function Vr(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const Cl={beforeTitle:ne,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"u"?Cl[t].call(n,i):s}class As extends Pn{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&n.options.animation&&i.animations,o=new ul(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=wp(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,s=yt(i,"beforeTitle",this,t),o=yt(i,"title",this,t),r=yt(i,"afterTitle",this,t);let a=[];return a=Xt(a,se(s)),a=Xt(a,se(o)),a=Xt(a,se(r)),a}getBeforeBody(t,n){return Ir(yt(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,s=[];return G(t,o=>{const r={before:[],lines:[],after:[]},a=Vr(i,o);Xt(r.before,se(yt(a,"beforeLabel",this,o))),Xt(r.lines,yt(a,"label",this,o)),Xt(r.after,se(yt(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,n){return Ir(yt(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,s=yt(i,"beforeFooter",this,t),o=yt(i,"footer",this,t),r=yt(i,"afterFooter",this,t);let a=[];return a=Xt(a,se(s)),a=Xt(a,se(o)),a=Xt(a,se(r)),a}_createItems(t){const n=this._active,i=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=n.length;lt.filter(u,f,d,i))),t.itemSort&&(a=a.sort((u,f)=>t.itemSort(u,f,i))),G(a,u=>{const f=Vr(t.callbacks,u);s.push(yt(f,"labelColor",this,u)),o.push(yt(f,"labelPointStyle",this,u)),r.push(yt(f,"labelTextColor",this,u))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,n){const i=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=dn[i.position].call(this,s,this._eventPosition);r=this._createItems(i),this.title=this.getTitle(r,i),this.beforeBody=this.getBeforeBody(r,i),this.body=this.getBody(r,i),this.afterBody=this.getAfterBody(r,i),this.footer=this.getFooter(r,i);const l=this._size=Er(this,i),c=Object.assign({},a,l),u=Lr(this.chart,i,c),f=Tr(i,c,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,o={opacity:1,x:f.x,y:f.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,s){const o=this.getCaretPosition(t,i,s);n.lineTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.lineTo(o.x3,o.y3)}getCaretPosition(t,n,i){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=i,{topLeft:l,topRight:c,bottomLeft:u,bottomRight:f}=yn(a),{x:d,y:h}=t,{width:g,height:p}=n;let m,_,b,y,x,v;return o==="center"?(x=h+p/2,s==="left"?(m=d,_=m-r,y=x+r,v=x-r):(m=d+g,_=m+r,y=x-r,v=x+r),b=m):(s==="left"?_=d+Math.max(l,u)+r:s==="right"?_=d+g-Math.max(c,f)-r:_=this.caretX,o==="top"?(y=h,x=y-r,m=_-r,b=_+r):(y=h+p,x=y+r,m=_+r,b=_-r),v=y),{x1:m,x2:_,x3:b,y1:y,y2:x,y3:v}}drawTitle(t,n,i){const s=this.title,o=s.length;let r,a,l;if(o){const c=ts(i.rtl,this.x,this.width);for(t.x=qn(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",r=bt(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=r.string,l=0;ly!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Ms(t,{x:m,y:p,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),Ms(t,{x:_,y:p+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,p,c,l),t.strokeRect(m,p,c,l),t.fillStyle=r.backgroundColor,t.fillRect(_,p+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:u}=i,f=bt(i.bodyFont);let d=f.lineHeight,h=0;const g=ts(i.rtl,this.x,this.width),p=function($){n.fillText($,g.x(t.x+h),t.y+d/2),t.y+=d+o},m=g.textAlign(r);let _,b,y,x,v,R,k;for(n.textAlign=r,n.textBaseline="middle",n.font=f.string,t.x=qn(this,m,i),n.fillStyle=i.bodyColor,G(this.beforeBody,p),h=a&&m!=="right"?r==="center"?c/2+u:c+2+u:0,x=0,R=s.length;x0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,s=i&&i.x,o=i&&i.y;if(s||o){const r=dn[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Er(this,t),l=Object.assign({},r,this._size),c=Lr(n,t,l),u=Tr(t,l,c,n);(s._to!==u.x||o._to!==u.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const r=kt(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(o,t,s,n),Fh(t,n.textDirection),o.y+=r.top,this.drawTitle(o,t,n),this.drawBody(o,t,n),this.drawFooter(o,t,n),Dh(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!gi(i,s),r=this._positionChanged(s,n);(o||r)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,n,i),a=this._positionChanged(r,t),l=n||!gi(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),l}_getActiveElements(t,n,i,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return n;const r=this.chart.getElementsAtEventForMode(t,o.mode,o,i);return o.reverse&&r.reverse(),r}_positionChanged(t,n){const{caretX:i,caretY:s,options:o}=this,r=dn[o.position].call(this,t,n);return r!==!1&&(i!==r.x||s!==r.y)}}I(As,"positioners",dn);var Sp={id:"tooltip",_element:As,positioners:dn,afterInit(e,t,n){n&&(e.tooltip=new As({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Cl},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const Cp=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function Mp(e,t,n,i){const s=e.indexOf(t);if(s===-1)return Cp(e,t,n,i);const o=e.lastIndexOf(t);return s!==o?n:s}const kp=(e,t)=>e===null?null:Mt(Math.round(e),0,t);function zr(e){const t=this.getLabels();return e>=0&&en.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}I(Ps,"id","category"),I(Ps,"defaults",{ticks:{callback:zr}});function Rp(e,t){const n=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:u,maxDigits:f,includeBounds:d}=e,h=o||1,g=u-1,{min:p,max:m}=t,_=!tt(r),b=!tt(a),y=!tt(c),x=(m-p)/(f+1);let v=Xo((m-p)/g/h)*h,R,k,$,A;if(v<1e-14&&!_&&!b)return[{value:p},{value:m}];A=Math.ceil(m/v)-Math.floor(p/v),A>g&&(v=Xo(A*v/g/h)*h),tt(l)||(R=Math.pow(10,l),v=Math.ceil(v*R)/R),s==="ticks"?(k=Math.floor(p/v)*v,$=Math.ceil(m/v)*v):(k=p,$=m),_&&b&&o&&Id((a-r)/o,v/1e3)?(A=Math.round(Math.min((a-r)/v,u)),v=(a-r)/A,k=r,$=a):y?(k=_?r:k,$=b?a:$,A=c-1,v=($-k)/A):(A=($-k)/v,Zn(A,Math.round(A),v/1e3)?A=Math.round(A):A=Math.ceil(A));const F=Math.max(Ko(v),Ko(k));R=Math.pow(10,tt(l)?F:l),k=Math.round(k*R)/R,$=Math.round($*R)/R;let C=0;for(_&&(d&&k!==r?(n.push({value:r}),ks=n?s:l,a=l=>o=i?o:l;if(t){const l=_i(s),c=_i(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},o=this._range||this,r=Rp(s,o);return t.bounds==="ticks"&&Ua(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-n)/Math.max(t.length-1,1)/2;n-=s,i+=s}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return $n(t,this.chart.options.locale,this.options.ticks.format)}}class Nr extends Mi{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=dt(t)?t:0,this.max=dt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=Bt(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}I(Nr,"id","linear"),I(Nr,"defaults",{ticks:{callback:Ei.formatters.numeric}});const Mn=e=>Math.floor(pe(e)),Re=(e,t)=>Math.pow(10,Mn(e)+t);function Br(e){return e/Math.pow(10,Mn(e))===1}function jr(e,t,n){const i=Math.pow(10,n),s=Math.floor(e/i);return Math.ceil(t/i)-s}function $p(e,t){const n=t-e;let i=Mn(n);for(;jr(e,t,i)>10;)i++;for(;jr(e,t,i)<10;)i--;return Math.min(i,Mn(e))}function Ap(e,{min:t,max:n}){t=wt(e.min,t);const i=[],s=Mn(t);let o=$p(t,n),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,u=Math.floor((t-l)/a/10)*a*10;let f=Math.floor((c-u)/Math.pow(10,o)),d=wt(e.min,Math.round((l+u+f*Math.pow(10,o))*r)/r);for(;d=10?f=f<15?15:20:f++,f>=20&&(o++,f=2,r=o>=0?1:r),d=Math.round((l+u+f*Math.pow(10,o))*r)/r;const h=wt(e.max,d);return i.push({value:h,major:Br(h),significand:f}),i}class Wr extends Ie{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,n){const i=Mi.prototype.parse.apply(this,[t,n]);if(i===0){this._zero=!0;return}return dt(i)&&i>0?i:null}determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=dt(t)?Math.max(0,t):null,this.max=dt(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!dt(this._userMin)&&(this.min=t===Re(this.min,0)?Re(this.min,-1):Re(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let i=this.min,s=this.max;const o=a=>i=t?i:a,r=a=>s=n?s:a;i===s&&(i<=0?(o(1),r(10)):(o(Re(i,-1)),r(Re(s,1)))),i<=0&&o(Re(s,-1)),s<=0&&r(Re(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,n={min:this._userMin,max:this._userMax},i=Ap(n,this);return t.bounds==="ticks"&&Ua(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":$n(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=pe(t),this._valueRange=pe(this.max)-pe(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(pe(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const n=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+n*this._valueRange)}}I(Wr,"id","logarithmic"),I(Wr,"defaults",{ticks:{callback:Ei.formatters.logarithmic,major:{enabled:!0}}});function Fs(e){const t=e.ticks;if(t.display&&e.display){const n=kt(t.backdropPadding);return et(t.font&&t.font.size,ut.font.size)+n.height}return 0}function Pp(e,t,n){return n=st(n)?n:[n],{w:eh(e,t.string,n),h:n.length*t.lineHeight}}function Gr(e,t,n,i,s){return e===i||e===s?{start:t-n/2,end:t+n/2}:es?{start:t-n,end:t}:{start:t,end:t+n}}function Fp(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],s=[],o=e._pointLabels.length,r=e.options.pointLabels,a=r.centerPointLabels?ct/o:0;for(let l=0;lt.r&&(a=(i.end-t.r)/o,e.r=Math.max(e.r,t.r+a)),s.startt.b&&(l=(s.end-t.b)/r,e.b=Math.max(e.b,t.b+l))}function Op(e,t,n){const i=[],s=e._pointLabels.length,o=e.options,r=Fs(o)/2,a=e.drawingArea,l=o.pointLabels.centerPointLabels?ct/s:0;for(let c=0;c270||n<90)&&(e-=t),e}function Ip(e,t){const{ctx:n,options:{pointLabels:i}}=e;for(let s=t-1;s>=0;s--){const o=i.setContext(e.getPointLabelContext(s)),r=bt(o.font),{x:a,y:l,textAlign:c,left:u,top:f,right:d,bottom:h}=e._pointLabelItems[s],{backdropColor:g}=o;if(!tt(g)){const p=yn(o.borderRadius),m=kt(o.backdropPadding);n.fillStyle=g;const _=u-m.left,b=f-m.top,y=d-u+m.width,x=h-f+m.height;Object.values(p).some(v=>v!==0)?(n.beginPath(),Ms(n,{x:_,y:b,w:y,h:x,radius:p}),n.fill()):n.fillRect(_,b,y,x)}Sn(n,e._pointLabels[s],a,l+r.lineHeight/2,r,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Ml(e,t,n,i){const{ctx:s}=e;if(n)s.arc(e.xCenter,e.yCenter,t,0,at);else{let o=e.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r{const s=rt(this.options.pointLabels.callback,[n,i],this);return s||s===0?s:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const t=this.options;t.display&&t.pointLabels.display?Fp(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,n,i,s){this.xCenter+=Math.floor((t-n)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,n,i,s))}getIndexAngle(t){const n=at/(this._pointLabels.length||1),i=this.options.startAngle||0;return Qt(t*n+Bt(i))}getDistanceFromCenterForValue(t){if(tt(t))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*n:(t-this.min)*n}getValueForDistanceFromCenter(t){if(tt(t))return NaN;const n=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(t){const n=this._pointLabels||[];if(t>=0&&t{if(f!==0){l=this.getDistanceFromCenterForValue(u.value);const d=this.getContext(f),h=s.setContext(d),g=o.setContext(d);Vp(this,h,l,r,g)}}),i.display){for(t.save(),a=r-1;a>=0;a--){const u=i.setContext(this.getPointLabelContext(a)),{color:f,lineWidth:d}=u;!d||!f||(t.lineWidth=d,t.strokeStyle=f,t.setLineDash(u.borderDash),t.lineDashOffset=u.borderDashOffset,l=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&!n.reverse)return;const c=i.setContext(this.getContext(l)),u=bt(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=u.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const f=kt(c.backdropPadding);t.fillRect(-r/2-f.left,-o-u.size/2-f.top,r+f.width,u.size+f.height)}Sn(t,a.label,0,-o,u,{color:c.color})}),t.restore()}drawTitle(){}}I(Yn,"id","radialLinear"),I(Yn,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ei.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),I(Yn,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),I(Yn,"descriptors",{angleLines:{_fallback:"grid"}});const Ii={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},vt=Object.keys(Ii);function Hp(e,t){return e-t}function qr(e,t){if(tt(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:o}=e._parseOpts;let r=t;return typeof i=="function"&&(r=i(r)),dt(r)||(r=typeof i=="string"?n.parse(r,i):n.parse(r)),r===null?null:(s&&(r=s==="week"&&(bi(o)||o===!0)?n.startOf(r,"isoWeek",o):n.startOf(r,s)),+r)}function Yr(e,t,n,i){const s=vt.length;for(let o=vt.indexOf(e);o=vt.indexOf(n);o--){const r=vt[o];if(Ii[r].common&&e._adapter.diff(s,i,r)>=t-1)return r}return vt[n?vt.indexOf(n):0]}function Bp(e){for(let t=vt.indexOf(e)+1,n=vt.length;t=t?n[i]:n[s];e[o]=!0}}function jp(e,t,n,i){const s=e._adapter,o=+s.startOf(t[0].value,i),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,i))l=n[a],l>=0&&(t[l].major=!0);return t}function Xr(e,t,n){const i=[],s={},o=t.length;let r,a;for(r=0;r+t.value))}initOffsets(t=[]){let n=0,i=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?n=1-s:n=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?i=o:i=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;n=Mt(n,0,r),i=Mt(i,0,r),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,s=this.options,o=s.time,r=o.unit||Yr(o.minUnit,n,i,this._getLabelCapacity(n)),a=et(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=bi(l)||l===!0,u={};let f=n,d,h;if(c&&(f=+t.startOf(f,"isoWeek",l)),f=+t.startOf(f,c?"day":r),t.diff(i,n,r)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(d=f,h=0;dp-m).map(p=>+p)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const s=this.options.time.displayFormats,o=this._unit,r=n||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,n,i,s){const o=this.options,r=o.ticks.callback;if(r)return rt(r,[t,n,i],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,u=l&&a[l],f=c&&a[c],d=i[n],h=c&&f&&d&&d.major;return this._adapter.format(t,s||(h?f:u))}generateTickLabels(t){let n,i,s;for(n=0,i=t.length;n0?a:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,i=s.length;n=e[i].pos&&t<=e[s].pos&&({lo:i,hi:s}=Ss(e,"pos",t)),{pos:o,time:a}=e[i],{pos:r,time:l}=e[s]):(t>=e[i].time&&t<=e[s].time&&({lo:i,hi:s}=Ss(e,"time",t)),{time:o,pos:a}=e[i],{time:r,pos:l}=e[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class Kr extends ki{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=Un(n,this.min),this._tableRange=Un(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,s=[],o=[];let r,a,l,c,u;for(r=0,a=t.length;r=n&&c<=i&&s.push(c);if(s.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(r=0,a=s.length;r{Qr.test(e)&&kl.push(e.replace(Qr,""))});function Rl(e){const t=De,n=[];function i(s){ec(t,s)}$i(()=>{const s=e();kl.forEach(s instanceof Element?o=>n.push(Nt(s,o,i)):o=>n.push(s.$on(o,i)))}),en(()=>{for(;n.length;)n.pop()()})}function Wp(e){let t,n=[e[1]],i={};for(let s=0;s{n(2,l=new Ti(c,{type:i,data:s,options:o,plugins:r}))}),Zl(()=>{l&&(n(2,l.data=s,l),Object.assign(l.options,o),l.update(a))}),en(()=>{l&&l.destroy(),n(2,l=null)}),Rl(()=>c);function f(d){Ke[d?"unshift":"push"](()=>{c=d,n(0,c)})}return e.$$set=d=>{n(9,t=N(N({},t),nt(d))),"type"in d&&n(3,i=d.type),"data"in d&&n(4,s=d.data),"options"in d&&n(5,o=d.options),"plugins"in d&&n(6,r=d.plugins),"updateMode"in d&&n(7,a=d.updateMode),"chart"in d&&n(2,l=d.chart)},t=nt(t),[c,u,l,i,s,o,r,a,f]}let Yp=class extends K{constructor(t){super(),Q(this,t,qp,Wp,Y,{type:3,data:4,options:5,plugins:6,updateMode:7,chart:2})}};function Up(e){let t,n,i;const s=[{type:"pie"},e[1]];function o(a){e[4](a)}let r={};for(let a=0;aha(t,"chart",o)),{c(){H(t.$$.fragment)},m(a,l){V(t,a,l),i=!0},p(a,[l]){const c=l&2?Vt(s,[s[0],te(a[1])]):{};!n&&l&1&&(n=!0,c.chart=a[0],ua(()=>n=!1)),t.$set(c)},i(a){i||(S(t.$$.fragment,a),i=!0)},o(a){M(t.$$.fragment,a),i=!1},d(a){e[3](null),z(t,a)}}}function Xp(e,t,n){Ti.register(ks);let{chart:i=null}=t,s,o;Rl(()=>o);function r(l){Ke[l?"unshift":"push"](()=>{o=l,n(2,o)})}function a(l){i=l,n(0,i)}return e.$$set=l=>{n(5,t=N(N({},t),nt(l))),"chart"in l&&n(0,i=l.chart)},e.$$.update=()=>{n(1,s=t)},t=nt(t),[i,s,o,r,a]}class Kp extends K{constructor(t){super(),Q(this,t,Xp,Up,Y,{chart:0})}}function Qp(e){let t,n;return t=new Kp({props:{class:"self-center",width:256,height:256,data:{labels:e[0].labels,datasets:[{data:e[0].data}]},options:{maintainAspectRatio:!1,responsive:!1,parsing:{key:"time"},animation:!1,plugins:{tooltip:{callbacks:{label:Zp}}}}}}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},p(i,[s]){const o={};s&1&&(o.data={labels:i[0].labels,datasets:[{data:i[0].data}]}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}const Zp=e=>`Queries: ${e.raw.queries}, Time: ${e.raw.time.toFixed(4)} ms`;function Jp(e,t,n){let i;return gt(e,gs,s=>n(0,i=s)),Ti.register(pp,Sp,ni,Ps,hp),[i]}class tm extends K{constructor(t){super(),Q(this,t,Jp,Qp,Y,{})}}function Zr(e,t,n){const i=e.slice();return i[5]=t[n],i}function Jr(e){let t,n=e[5]+"",i,s,o,r;function a(){return e[4](e[5])}return{c(){t=P("button"),i=J(n),s=q(),O(t,"class","bg-dark-600 p-3 border-[1px] outline-none border-transparent focus-visible:border-cyan-600 text-left hover:bg-dark-400 rounded-md")},m(l,c){ot(l,t,c),w(t,i),w(t,s),o||(r=Nt(t,"click",a),o=!0)},p(l,c){e=l,c&2&&n!==(n=e[5]+"")&&jt(i,n)},d(l){l&&X(t),o=!1,r()}}}function em(e){let t,n,i,s,o,r,a,l,c,u,f,d,h,g,p,m,_,b,y,x,v,R,k,$=e[2].queries+"",A,F,C,D,U=e[2].timeQuerying.toFixed(4)+"",Z,E,T,B,ft,it=e[2].slowQueries+"",xt,Ut,pt,mt;a=new od({});function we(j){e[3](j)}let ce={icon:td};e[0]!==void 0&&(ce.value=e[0]),c=new Wf({props:ce}),Ke.push(()=>ha(c,"value",we));let Dt=e[1],_t=[];for(let j=0;ju=!1)),c.$set(Se),ue&2){Dt=j[1];let Ot;for(Ot=0;Otn(0,i=l)),gt(e,Xc,l=>n(1,s=l)),gt(e,hs,l=>n(2,o=l));function r(l){i=l,fs.set(i)}return[i,s,o,r,l=>Oe.goto(`/${l}`)]}class im extends K{constructor(t){super(),Q(this,t,nm,em,Y,{})}}function ta(e){let t,n,i,s,o,r,a;return i=new co({props:{path:"/",$$slots:{default:[sm]},$$scope:{ctx:e}}}),o=new co({props:{path:"/:resource",$$slots:{default:[om]},$$scope:{ctx:e}}}),{c(){t=P("main"),n=P("div"),H(i.$$.fragment),s=q(),H(o.$$.fragment),O(n,"class","bg-dark-800 text-white w-[1000px] h-[600px] flex rounded-md"),O(t,"class","w-full h-full flex justify-center items-center font-main")},m(l,c){ot(l,t,c),w(t,n),V(i,n,null),w(n,s),V(o,n,null),a=!0},i(l){a||(S(i.$$.fragment,l),S(o.$$.fragment,l),Qe(()=>{a&&(r||(r=ri(t,Po,{start:.95,duration:150},!0)),r.run(1))}),a=!0)},o(l){M(i.$$.fragment,l),M(o.$$.fragment,l),r||(r=ri(t,Po,{start:.95,duration:150},!1)),r.run(0),a=!1},d(l){l&&X(t),z(i),z(o),l&&r&&r.end()}}}function sm(e){let t,n;return t=new im({}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function om(e){let t,n;return t=new Nf({}),{c(){H(t.$$.fragment)},m(i,s){V(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){M(t.$$.fragment,i),n=!1},d(i){z(t,i)}}}function rm(e){let t,n,i=e[0]&&ta(e);return{c(){i&&i.c(),t=kn()},m(s,o){i&&i.m(s,o),ot(s,t,o),n=!0},p(s,[o]){s[0]?i?o&1&&S(i,1):(i=ta(s),i.c(),S(i,1),i.m(t.parentNode,t)):i&&(Lt(),M(i,1,1,()=>{i=null}),Tt())},i(s){n||(S(i),n=!0)},o(s){M(i),n=!1},d(s){i&&i.d(s),s&&X(t)}}}function am(e,t,n){let i,s,o,r;gt(e,ji,l=>n(0,i=l)),gt(e,gs,l=>n(1,s=l)),gt(e,hs,l=>n(2,o=l)),gt(e,ds,l=>n(3,r=l)),Oe.mode.hash(),Oe.goto("/"),Ha("openUI",l=>{St(ji,i=!0,i),St(ds,r=l.resources,r),St(hs,o={queries:l.totalQueries,slowQueries:l.slowQueries,timeQuerying:l.totalTime},o),St(gs,s={labels:l.chartData.labels,data:l.chartData.data},s)}),Ba([{action:"openUI",data:{resources:["ox_core","oxmysql","ox_inventory","ox_doorlock","ox_lib","ox_vehicleshop","ox_target"],slowQueries:13,totalQueries:332,totalTime:230123,chartData:{labels:["oxmysql","ox_core","ox_inventory","ox_doorlock"],data:[{queries:25,time:133},{queries:5,time:12},{queries:3,time:2},{queries:72,time:133}]}}}]);const a=l=>{l.key==="Escape"&&(St(ji,i=!1,i),ya("exit"))};return e.$$.update=()=>{e.$$.dirty&1&&(i?window.addEventListener("keydown",a):window.removeEventListener("keydown",a))},[i]}class lm extends K{constructor(t){super(),Q(this,t,am,rm,Y,{})}}new lm({target:document.getElementById("app")});if(Na()){const e=document.getElementById("app");e.style.backgroundImage='url("https://i.imgur.com/3pzRj9n.png")',e.style.backgroundSize="cover",e.style.backgroundRepeat="no-repeat",e.style.backgroundPosition="center"} diff --git a/resources/[standalone]/oxmysql/web/build/assets/index-95a76ebf.js b/resources/[standalone]/oxmysql/web/build/assets/index-95a76ebf.js new file mode 100644 index 0000000..23c3d4b --- /dev/null +++ b/resources/[standalone]/oxmysql/web/build/assets/index-95a76ebf.js @@ -0,0 +1,46 @@ +var Hl=Object.defineProperty;var Nl=(e,t,n)=>t in e?Hl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>(Nl(e,typeof t!="symbol"?t+"":t,n),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function ht(){}const ha=e=>e;function z(e,t){for(const n in t)e[n]=t[n];return e}function ga(e){return e()}function hs(){return Object.create(null)}function Zt(e){e.forEach(ga)}function le(e){return typeof e=="function"}function U(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function Bl(e){return Object.keys(e).length===0}function Ns(e,...t){if(e==null)return ht;const n=e.subscribe(...t);return n.unsubscribe?()=>n.unsubscribe():n}function jl(e){let t;return Ns(e,n=>t=n)(),t}function gt(e,t,n){e.$$.on_destroy.push(Ns(t,n))}function At(e,t,n,i){if(e){const s=pa(e,t,n,i);return e[0](s)}}function pa(e,t,n,i){return e[1]&&i?z(n.ctx.slice(),e[1](i(t))):n.ctx}function Pt(e,t,n,i){if(e[2]&&i){const s=e[2](i(n));if(t.dirty===void 0)return s;if(typeof s=="object"){const o=[],r=Math.max(t.dirty.length,s.length);for(let a=0;a32){const t=[],n=e.ctx.length/32;for(let i=0;iwindow.performance.now():()=>Date.now(),js=ma?e=>requestAnimationFrame(e):ht;const Ye=new Set;function _a(e){Ye.forEach(t=>{t.c(e)||(Ye.delete(t),t.f())}),Ye.size!==0&&js(_a)}function Gl(e){let t;return Ye.size===0&&js(_a),{promise:new Promise(n=>{Ye.add(t={c:e,f:n})}),abort(){Ye.delete(t)}}}let Ei=!1;function ql(){Ei=!0}function Yl(){Ei=!1}function Ul(e,t,n,i){for(;e>1);n(s)<=i?e=s+1:t=s}return e}function Xl(e){if(e.hydrate_init)return;e.hydrate_init=!0;let t=e.childNodes;if(e.nodeName==="HEAD"){const l=[];for(let c=0;c0&&t[n[s]].claim_order<=c?s+1:Ul(1,s,d=>t[n[d]].claim_order,c))-1;i[l]=n[u]+1;const f=u+1;n[f]=l,s=Math.max(f,s)}const o=[],r=[];let a=t.length-1;for(let l=n[s]+1;l!=0;l=i[l-1]){for(o.push(t[l-1]);a>=l;a--)r.push(t[a]);a--}for(;a>=0;a--)r.push(t[a]);o.reverse(),r.sort((l,c)=>l.claim_order-c.claim_order);for(let l=0,c=0;l=o[c].claim_order;)c++;const u=ce.removeEventListener(t,n,i)}function F(e,t,n){n==null?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}const tc=["width","height"];function ec(e,t){const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const i in t)t[i]==null?e.removeAttribute(i):i==="style"?e.style.cssText=t[i]:i==="__value"?e.value=e[i]=t[i]:n[i]&&n[i].set&&tc.indexOf(i)===-1?e[i]=t[i]:F(e,i,t[i])}function li(e,t){for(const n in t)F(e,n,t[n])}function nc(e){return Array.from(e.childNodes)}function ic(e){e.claim_info===void 0&&(e.claim_info={last_index:0,total_claimed:0})}function sc(e,t,n,i,s=!1){ic(e);const o=(()=>{for(let r=e.claim_info.last_index;r=0;r--){const a=e[r];if(t(a)){const l=n(a);return l===void 0?e.splice(r,1):e[r]=l,s?l===void 0&&e.claim_info.last_index--:e.claim_info.last_index=r,a}}return i()})();return o.claim_order=e.claim_info.total_claimed,e.claim_info.total_claimed+=1,o}function oc(e,t){return sc(e,n=>n.nodeType===3,n=>{const i=""+t;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>Z(t),!0)}function Wt(e,t){t=""+t,e.data!==t&&(e.data=t)}function ci(e,t){e.value=t??""}function Tn(e,t,n){e.classList[n?"add":"remove"](t)}function rc(e,t,{bubbles:n=!1,cancelable:i=!1}={}){const s=document.createEvent("CustomEvent");return s.initCustomEvent(e,n,i,t),s}function be(e,t){return new e(t)}const ui=new Map;let fi=0;function ac(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}function lc(e,t){const n={stylesheet:Kl(t),rules:{}};return ui.set(e,n),n}function _o(e,t,n,i,s,o,r,a=0){const l=16.666/i;let c=`{ +`;for(let m=0;m<=1;m+=l){const _=t+(n-t)*o(m);c+=m*100+`%{${r(_,1-_)}} +`}const u=c+`100% {${r(n,1-n)}} +}`,f=`__svelte_${ac(u)}_${a}`,d=ba(e),{stylesheet:h,rules:g}=ui.get(d)||lc(d,e);g[f]||(g[f]=!0,h.insertRule(`@keyframes ${f} ${u}`,h.cssRules.length));const p=e.style.animation||"";return e.style.animation=`${p?`${p}, `:""}${f} ${i}ms linear ${s}ms 1 both`,fi+=1,f}function cc(e,t){const n=(e.style.animation||"").split(", "),i=n.filter(t?o=>o.indexOf(t)<0:o=>o.indexOf("__svelte")===-1),s=n.length-i.length;s&&(e.style.animation=i.join(", "),fi-=s,fi||uc())}function uc(){js(()=>{fi||(ui.forEach(e=>{const{ownerNode:t}=e.stylesheet;t&&X(t)}),ui.clear())})}let Fe;function Pe(e){Fe=e}function on(){if(!Fe)throw new Error("Function called outside component initialization");return Fe}function Li(e){on().$$.on_mount.push(e)}function fc(e){on().$$.after_update.push(e)}function rn(e){on().$$.on_destroy.push(e)}function dc(e,t){return on().$$.context.set(e,t),t}function Ws(e){return on().$$.context.get(e)}function hc(e){return on().$$.context.has(e)}function gc(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach(i=>i.call(this,t))}const We=[],Ze=[];let Ue=[];const gs=[],xa=Promise.resolve();let ps=!1;function va(){ps||(ps=!0,xa.then(Sa))}function Gs(){return va(),xa}function Je(e){Ue.push(e)}function wa(e){gs.push(e)}const Gi=new Set;let He=0;function Sa(){if(He!==0)return;const e=Fe;do{try{for(;Hee.indexOf(i)===-1?t.push(i):n.push(i)),n.forEach(i=>i()),Ue=t}let ln;function _c(){return ln||(ln=Promise.resolve(),ln.then(()=>{ln=null})),ln}function qi(e,t,n){e.dispatchEvent(rc(`${t?"intro":"outro"}${n}`))}const ni=new Set;let ae;function kt(){ae={r:0,c:[],p:ae}}function Rt(){ae.r||Zt(ae.c),ae=ae.p}function S(e,t){e&&e.i&&(ni.delete(e),e.i(t))}function C(e,t,n,i){if(e&&e.o){if(ni.has(e))return;ni.add(e),ae.c.push(()=>{ni.delete(e),i&&(n&&e.d(1),i())}),e.o(t)}else i&&i()}const bc={duration:0};function di(e,t,n,i){const s={direction:"both"};let o=t(e,n,s),r=i?0:1,a=null,l=null,c=null;function u(){c&&cc(e,c)}function f(h,g){const p=h.b-r;return g*=Math.abs(p),{a:r,b:h.b,d:p,duration:g,start:h.start,end:h.start+g,group:h.group}}function d(h){const{delay:g=0,duration:p=300,easing:m=ha,tick:_=ht,css:b}=o||bc,x={start:Wl()+g,b:h};h||(x.group=ae,ae.r+=1),a||l?l=x:(b&&(u(),c=_o(e,r,h,p,g,m,b)),h&&_(0,1),a=f(x,p),Je(()=>qi(e,h,"start")),Gl(v=>{if(l&&v>l.start&&(a=f(l,p),l=null,qi(e,a.b,"start"),b&&(u(),c=_o(e,r,a.b,a.duration,0,m,o.css))),a){if(v>=a.end)_(r=a.b,1-r),qi(e,a.b,"end"),l||(a.b?u():--a.group.r||Zt(a.group.c)),a=null;else if(v>=a.start){const y=v-a.start;r=a.a+a.d*m(y/a.duration),_(r,1-r)}}return!!(a||l)}))}return{run(h){le(o)?_c().then(()=>{o=o(s),d(h)}):d(h)},end(){u(),a=l=null}}}function zt(e,t){const n={},i={},s={$$scope:1};let o=e.length;for(;o--;){const r=e[o],a=t[o];if(a){for(const l in r)l in a||(i[l]=1);for(const l in a)s[l]||(n[l]=a[l],s[l]=1);e[o]=a}else for(const l in r)s[l]=1}for(const r in i)r in n||(n[r]=void 0);return n}function Jt(e){return typeof e=="object"&&e!==null?e:{}}const yc=/[&"]/g,xc=/[&<]/g;function vc(e,t=!1){const n=String(e),i=t?yc:xc;i.lastIndex=0;let s="",o=0;for(;i.test(n);){const r=i.lastIndex-1,a=n[r];s+=n.substring(o,r)+(a==="&"?"&":a==='"'?""":"<"),o=r+1}return s+n.substring(o)}function wc(e,t){if(!e||!e.$$render)throw t==="svelte:component"&&(t+=" this={...}"),new Error(`<${t}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${t}>.`);return e}let Yi;function Ca(e){function t(n,i,s,o,r){const a=Fe,l={on_destroy:Yi,context:new Map(r||(a?a.$$.context:[])),on_mount:[],before_update:[],after_update:[],callbacks:hs()};Pe({$$:l});const c=e(n,i,s,o);return Pe(a),c}return{render:(n={},{$$slots:i={},context:s=new Map}={})=>{Yi=[];const o={title:"",head:"",css:new Set},r=t(o,n,{},i,s);return Zt(Yi),{html:r,css:{code:Array.from(o.css).map(a=>a.code).join(` +`),map:null},head:o.title+o.head}},$$render:t}}function Ma(e,t,n){const i=e.$$.props[t];i!==void 0&&(e.$$.bound[i]=n,n(e.$$.ctx[i]))}function I(e){e&&e.c()}function Sc(e,t){e&&e.l(t)}function E(e,t,n,i){const{fragment:s,after_update:o}=e.$$;s&&s.m(t,n),i||Je(()=>{const r=e.$$.on_mount.map(ga).filter(le);e.$$.on_destroy?e.$$.on_destroy.push(...r):Zt(r),e.$$.on_mount=[]}),o.forEach(Je)}function L(e,t){const n=e.$$;n.fragment!==null&&(mc(n.after_update),Zt(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Cc(e,t){e.$$.dirty[0]===-1&&(We.push(e),va(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const g=h.length?h[0]:d;return c.ctx&&s(c.ctx[f],c.ctx[f]=g)&&(!c.skip_bound&&c.bound[f]&&c.bound[f](g),u&&Cc(e,f)),d}):[],c.update(),u=!0,Zt(c.before_update),c.fragment=i?i(c.ctx):!1,t.target){if(t.hydrate){ql();const f=nc(t.target);c.fragment&&c.fragment.l(f),f.forEach(X)}else c.fragment&&c.fragment.c();t.intro&&S(e.$$.fragment),E(e,t.target,t.anchor,t.customElement),Yl(),Sa()}Pe(l)}class K{$destroy(){L(this,1),this.$destroy=ht}$on(t,n){if(!le(n))return ht;const i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(n),()=>{const s=i.indexOf(n);s!==-1&&i.splice(s,1)}}$set(t){this.$$set&&!Bl(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const Ne=[];function ms(e,t){return{subscribe:Ft(e,t).subscribe}}function Ft(e,t=ht){let n;const i=new Set;function s(a){if(U(e,a)&&(e=a,n)){const l=!Ne.length;for(const c of i)c[1](),Ne.push(c,e);if(l){for(let c=0;c{i.delete(c),i.size===0&&n&&(n(),n=null)}}return{set:s,update:o,subscribe:r}}function qs(e,t,n){const i=!Array.isArray(e),s=i?[e]:e,o=t.length<2;return ms(n,r=>{let a=!1;const l=[];let c=0,u=ht;const f=()=>{if(c)return;u();const h=t(i?l[0]:l,r);o?r(h):u=le(h)?h:ht},d=s.map((h,g)=>Ns(h,p=>{l[g]=p,c&=~(1<{c|=1<a.startsWith(":")?(n.push(a.slice(1)),"([^\\/]+)"):a).join("\\/"),r=t.match(new RegExp(`^${o}$`));return r||(s=!1,r=t.match(new RegExp(`^${o}`))),r?(n.forEach((a,l)=>i[a]=r[l+1]),{exact:s,params:i,part:r[0].slice(0,-1)}):null}function ka(e,t,n){if(n==="")return e;if(n[0]==="/")return n;let i=r=>r.split("/").filter(a=>a!==""),s=i(e);return"/"+(t?i(t):[]).map((r,a)=>s[a]).join("/")+"/"+n}function bo(e,t,n,i){let s=[t,"data-"+t].reduce((o,r)=>{let a=e.getAttribute(r);return n&&e.removeAttribute(r),a===null?o:a},!1);return!i&&s===""?!0:s||i||!1}function kc(e){let t=e.split("&").map(n=>n.split("=")).reduce((n,i)=>{let s=i[0];if(!s)return n;let o=i.length>1?i[i.length-1]:!0;return typeof o=="string"&&o.includes(",")&&(o=o.split(",")),n[s]===void 0?n[s]=[o]:n[s].push(o),n},{});return Object.entries(t).reduce((n,i)=>(n[i[0]]=i[1].length>1?i[1]:i[1][0],n),{})}function Rc(e){return Object.entries(e).map(([t,n])=>n?n===!0?t:`${t}=${Array.isArray(n)?n.join(","):n}`:null).filter(t=>t).join("&")}function yo(e,t){return e?t+e:""}function Ra(e){throw new Error("[Tinro] "+e)}var Nt={HISTORY:1,HASH:2,MEMORY:3,OFF:4,run(e,t,n,i){return e===this.HISTORY?t&&t():e===this.HASH?n&&n():i&&i()},getDefault(){return!window||window.location.pathname==="srcdoc"?this.MEMORY:this.HISTORY}},Ys,$a,Aa,hi="",Ht=$c();function $c(){let e=Nt.getDefault(),t,n=r=>window.onhashchange=window.onpopstate=Ys=null,i=r=>t&&t(Ui(e)),s=r=>{r&&(e=r),n(),e!==Nt.OFF&&Nt.run(e,a=>window.onpopstate=i,a=>window.onhashchange=i)&&i()},o=r=>{let a=Object.assign(Ui(e),r);return a.path+yo(Rc(a.query),"?")+yo(a.hash,"#")};return{mode:s,get:r=>Ui(e),go(r,a){Ac(e,r,a),i()},start(r){t=r,s()},stop(){t=null,s(Nt.OFF)},set(r){this.go(o(r),!r.path)},methods(){return Pc(this)},base:r=>hi=r}}function Ac(e,t,n){!n&&($a=Aa);let i=s=>history[`${n?"replace":"push"}State`]({},"",s);Nt.run(e,s=>i(hi+t),s=>i(`#${t}`),s=>Ys=t)}function Ui(e){let t=window.location,n=Nt.run(e,s=>(hi?t.pathname.replace(hi,""):t.pathname)+t.search+t.hash,s=>String(t.hash.slice(1)||"/"),s=>Ys||"/"),i=n.match(/^([^?#]+)(?:\?([^#]+))?(?:\#(.+))?$/);return Aa=n,{url:n,from:$a,path:i[1]||"",query:kc(i[2]||""),hash:i[3]||""}}function Pc(e){let t=()=>e.get().query,n=r=>e.set({query:r}),i=r=>n(r(t())),s=()=>e.get().hash,o=r=>e.set({hash:r});return{hash:{get:s,set:o,clear:()=>o("")},query:{replace:n,clear:()=>n(""),get(r){return r?t()[r]:t()},set(r,a){i(l=>(l[r]=a,l))},delete(r){i(a=>(a[r]&&delete a[r],a))}}}}var Ee=Dc();function Dc(){let{subscribe:e}=Ft(Ht.get(),t=>{Ht.start(t);let n=Oc(Ht.go);return()=>{Ht.stop(),n()}});return{subscribe:e,goto:Ht.go,params:Fc,meta:Us,useHashNavigation:t=>Ht.mode(t?Nt.HASH:Nt.HISTORY),mode:{hash:()=>Ht.mode(Nt.HASH),history:()=>Ht.mode(Nt.HISTORY),memory:()=>Ht.mode(Nt.MEMORY)},base:Ht.base,location:Ht.methods()}}function Oc(e){let t=n=>{let i=n.target.closest("a[href]"),s=i&&bo(i,"target",!1,"_self"),o=i&&bo(i,"tinro-ignore"),r=n.ctrlKey||n.metaKey||n.altKey||n.shiftKey;if(s=="_self"&&!o&&!r&&i){let a=i.getAttribute("href").replace(/^\/#/,"");/^\/\/|^#|^[a-zA-Z]+:/.test(a)||(n.preventDefault(),e(a.startsWith("/")?a:i.href.replace(window.location.origin,"")))}};return addEventListener("click",t),()=>removeEventListener("click",t)}function Fc(){return Ws("tinro").meta.params}var gi="tinro",Ec=Pa({pattern:"",matched:!0});function Lc(e){let t=Ws(gi)||Ec;(t.exact||t.fallback)&&Ra(`${e.fallback?"":``} can't be inside ${t.fallback?"":` with exact path`}`);let n=e.fallback?"fallbacks":"childs",i=Ft({}),s=Pa({fallback:e.fallback,parent:t,update(o){s.exact=!o.path.endsWith("/*"),s.pattern=_s(`${s.parent.pattern||""}${o.path}`),s.redirect=o.redirect,s.firstmatch=o.firstmatch,s.breadcrumb=o.breadcrumb,s.match()},register:()=>(s.parent[n].add(s),async()=>{s.parent[n].delete(s),s.parent.activeChilds.delete(s),s.router.un&&s.router.un(),s.parent.match()}),show:()=>{e.onShow(),!s.fallback&&s.parent.activeChilds.add(s)},hide:()=>{e.onHide(),s.parent.activeChilds.delete(s)},match:async()=>{s.matched=!1;let{path:o,url:r,from:a,query:l}=s.router.location,c=Mc(s.pattern,o);if(!s.fallback&&c&&s.redirect&&(!s.exact||s.exact&&c.exact)){let u=ka(o,s.parent.pattern,s.redirect);return Ee.goto(u,!0)}s.meta=c&&{from:a,url:r,query:l,match:c.part,pattern:s.pattern,breadcrumbs:s.parent.meta&&s.parent.meta.breadcrumbs.slice()||[],params:c.params,subscribe:i.subscribe},s.breadcrumb&&s.meta&&s.meta.breadcrumbs.push({name:s.breadcrumb,path:c.part}),i.set(s.meta),c&&!s.fallback&&(!s.exact||s.exact&&c.exact)&&(!s.parent.firstmatch||!s.parent.matched)?(e.onMeta(s.meta),s.parent.matched=!0,s.show()):s.hide(),c&&s.showFallbacks()}});return dc(gi,s),Li(()=>s.register()),s}function Us(){return hc(gi)?Ws(gi).meta:Ra("meta() function must be run inside any `` child component only")}function Pa(e){let t={router:{},exact:!1,pattern:null,meta:null,parent:null,fallback:!1,redirect:!1,firstmatch:!1,breadcrumb:null,matched:!1,childs:new Set,activeChilds:new Set,fallbacks:new Set,async showFallbacks(){if(!this.fallback&&(await Gs(),this.childs.size>0&&this.activeChilds.size==0||this.childs.size==0&&this.fallbacks.size>0)){let n=this;for(;n.fallbacks.size==0;)if(n=n.parent,!n)return;n&&n.fallbacks.forEach(i=>{if(i.redirect){let s=ka("/",i.parent.pattern,i.redirect);Ee.goto(s,!0)}else i.show()})}},start(){this.router.un||(this.router.un=Ee.subscribe(n=>{this.router.location=n,this.pattern!==null&&this.match()}))},match(){this.showFallbacks()}};return Object.assign(t,e),t.start(),t}const Tc=e=>({params:e&2,meta:e&4}),xo=e=>({params:e[1],meta:e[2]});function vo(e){let t;const n=e[9].default,i=At(n,e,e[8],xo);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&262)&&Dt(i,n,s,s[8],t?Pt(n,s[8],o,Tc):Ot(s[8]),xo)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function Ic(e){let t,n,i=e[0]&&vo(e);return{c(){i&&i.c(),t=Pn()},m(s,o){i&&i.m(s,o),nt(s,t,o),n=!0},p(s,[o]){s[0]?i?(i.p(s,o),o&1&&S(i,1)):(i=vo(s),i.c(),S(i,1),i.m(t.parentNode,t)):i&&(kt(),C(i,1,1,()=>{i=null}),Rt())},i(s){n||(S(i),n=!0)},o(s){C(i),n=!1},d(s){i&&i.d(s),s&&X(t)}}}function Vc(e,t,n){let{$$slots:i={},$$scope:s}=t,{path:o="/*"}=t,{fallback:r=!1}=t,{redirect:a=!1}=t,{firstmatch:l=!1}=t,{breadcrumb:c=null}=t,u=!1,f={},d={};const h=Lc({fallback:r,onShow(){n(0,u=!0)},onHide(){n(0,u=!1)},onMeta(g){n(2,d=g),n(1,f=d.params)}});return e.$$set=g=>{"path"in g&&n(3,o=g.path),"fallback"in g&&n(4,r=g.fallback),"redirect"in g&&n(5,a=g.redirect),"firstmatch"in g&&n(6,l=g.firstmatch),"breadcrumb"in g&&n(7,c=g.breadcrumb),"$$scope"in g&&n(8,s=g.$$scope)},e.$$.update=()=>{e.$$.dirty&232&&h.update({path:o,redirect:a,firstmatch:l,breadcrumb:c})},[u,f,d,o,r,a,l,c,s,i]}class wo extends K{constructor(t){super(),Q(this,t,Vc,Ic,U,{path:3,fallback:4,redirect:5,firstmatch:6,breadcrumb:7})}}async function Da(e,t={}){const n={method:"post",headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(t)},i=window.GetParentResourceName?window.GetParentResourceName():"nui-frame-app";return await(await fetch(`https://${i}/${e}`,n)).json()}var So={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};function Co(e,t,n){const i=e.slice();return i[9]=t[n][0],i[10]=t[n][1],i}function Xi(e){let t,n=[e[10]],i={};for(let s=0;s{n(6,t=z(z({},t),et(d))),n(5,s=mo(t,i)),"name"in d&&n(0,a=d.name),"color"in d&&n(1,l=d.color),"size"in d&&n(2,c=d.size),"stroke"in d&&n(3,u=d.stroke),"iconNode"in d&&n(4,f=d.iconNode),"$$scope"in d&&n(7,r=d.$$scope)},t=et(t),[a,l,c,u,f,s,t,r,o]}class Nc extends K{constructor(t){super(),Q(this,t,Hc,zc,U,{name:0,color:1,size:2,stroke:3,iconNode:4})}}const ce=Nc;function Bc(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function jc(e){let t,n;const i=[{name:"chevron-left"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Bc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class Gc extends K{constructor(t){super(),Q(this,t,Wc,jc,U,{})}}const Oa=Gc;function qc(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function Yc(e){let t,n;const i=[{name:"chevron-right"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[qc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class Xc extends K{constructor(t){super(),Q(this,t,Uc,Yc,U,{})}}const Kc=Xc;function Qc(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function Zc(e){let t,n;const i=[{name:"chevrons-left"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Qc]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class tu extends K{constructor(t){super(),Q(this,t,Jc,Zc,U,{})}}const eu=tu;function nu(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function iu(e){let t,n;const i=[{name:"chevrons-right"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[nu]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class ou extends K{constructor(t){super(),Q(this,t,su,iu,U,{})}}const ru=ou,Ki=Ft(!1),bs=Ft("");let ko;const au=qs(bs,(e,t)=>(ko=setTimeout(()=>t(e),500),()=>clearTimeout(ko))),ys=Ft([]),lu=qs([ys,au],([e,t],n)=>{if(t===""||!t)return n(e);const i=t.toLowerCase();return n(e.filter(s=>s.toLowerCase().includes(i)))}),xs=Ft({queries:0,timeQuerying:0,slowQueries:0}),vs=Ft({labels:[],data:[]}),ii=Ft([]),ws=Ft({resourceQueriesCount:0,resourceSlowQueries:0,resourceTime:0}),Bt=Ft({search:"",page:0});function cu(e){let t,n,i,s,o,r,a,l,c,u,f,d=e[1].page+1+"",h,g,p,m,_,b,x,v,y,M,k,$,P,O;return i=new eu({}),a=new Oa({}),b=new Kc({}),M=new ru({}),{c(){t=D("div"),n=D("button"),I(i.$$.fragment),o=Y(),r=D("button"),I(a.$$.fragment),c=Y(),u=D("p"),f=Z("Page "),h=Z(d),g=Z(" of "),p=Z(e[0]),m=Y(),_=D("button"),I(b.$$.fragment),v=Y(),y=D("button"),I(M.$$.fragment),n.disabled=s=e[1].page===0,F(n,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 text-dark-100 hover:bg-dark-500 rounded-md border-[1px] border-transparent p-2 outline-none hover:text-white focus-visible:border-cyan-600 focus-visible:text-white active:translate-y-[3px] disabled:cursor-not-allowed"),r.disabled=l=e[1].page===0,F(r,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 text-dark-100 hover:bg-dark-500 rounded-md border-[1px] border-transparent p-2 outline-none hover:text-white focus-visible:border-cyan-600 focus-visible:text-white active:translate-y-[3px] disabled:cursor-not-allowed"),_.disabled=x=e[1].page>=e[0]-1,F(_,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 text-dark-100 hover:bg-dark-500 rounded-md border-[1px] border-transparent p-2 outline-none hover:text-white focus-visible:border-cyan-600 focus-visible:text-white active:translate-y-[3px] disabled:cursor-not-allowed"),y.disabled=k=e[1].page===e[0]-1,F(y,"class","bg-dark-600 disabled:bg-dark-300 disabled:text-dark-400 text-dark-100 hover:bg-dark-500 rounded-md border-[1px] border-transparent p-2 outline-none hover:text-white focus-visible:border-cyan-600 focus-visible:text-white active:translate-y-[3px] disabled:cursor-not-allowed"),F(t,"class","flex items-center justify-center gap-6 pb-5")},m(R,V){nt(R,t,V),w(t,n),E(i,n,null),w(t,o),w(t,r),E(a,r,null),w(t,c),w(t,u),w(u,f),w(u,h),w(u,g),w(u,p),w(t,m),w(t,_),E(b,_,null),w(t,v),w(t,y),E(M,y,null),$=!0,P||(O=[It(n,"click",e[2]),It(r,"click",e[3]),It(_,"click",e[4]),It(y,"click",e[5])],P=!0)},p(R,[V]){(!$||V&2&&s!==(s=R[1].page===0))&&(n.disabled=s),(!$||V&2&&l!==(l=R[1].page===0))&&(r.disabled=l),(!$||V&2)&&d!==(d=R[1].page+1+"")&&Wt(h,d),(!$||V&1)&&Wt(p,R[0]),(!$||V&3&&x!==(x=R[1].page>=R[0]-1))&&(_.disabled=x),(!$||V&3&&k!==(k=R[1].page===R[0]-1))&&(y.disabled=k)},i(R){$||(S(i.$$.fragment,R),S(a.$$.fragment,R),S(b.$$.fragment,R),S(M.$$.fragment,R),$=!0)},o(R){C(i.$$.fragment,R),C(a.$$.fragment,R),C(b.$$.fragment,R),C(M.$$.fragment,R),$=!1},d(R){R&&X(t),L(i),L(a),L(b),L(M),P=!1,Zt(O)}}}function uu(e,t,n){let i;gt(e,Bt,c=>n(1,i=c));let{maxPage:s}=t;rn(()=>n(0,s=0));const o=()=>mt(Bt,i.page=0,i),r=()=>mt(Bt,i.page--,i),a=()=>mt(Bt,i.page++,i),l=()=>mt(Bt,i.page=s-1,i);return e.$$set=c=>{"maxPage"in c&&n(0,s=c.maxPage)},[s,i,o,r,a,l]}let fu=class extends K{constructor(t){super(),Q(this,t,uu,cu,U,{maxPage:0})}};function du(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function hu(e){let t,n;const i=[{name:"chevron-down"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[du]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class pu extends K{constructor(t){super(),Q(this,t,gu,hu,U,{})}}const mu=pu;function _u(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function bu(e){let t,n;const i=[{name:"chevron-up"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[_u]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class xu extends K{constructor(t){super(),Q(this,t,yu,bu,U,{})}}const vu=xu;/** + * table-core + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function he(e,t){return typeof e=="function"?e(t):e}function Vt(e,t){return n=>{t.setState(i=>({...i,[e]:he(n,i[e])}))}}function pi(e){return e instanceof Function}function wu(e,t){const n=[],i=s=>{s.forEach(o=>{n.push(o);const r=t(o);r!=null&&r.length&&i(r)})};return i(e),n}function T(e,t,n){let i=[],s;return()=>{let o;n.key&&n.debug&&(o=Date.now());const r=e();if(!(r.length!==i.length||r.some((c,u)=>i[u]!==c)))return s;i=r;let l;if(n.key&&n.debug&&(l=Date.now()),s=t(...r),n==null||n.onChange==null||n.onChange(s),n.key&&n.debug&&n!=null&&n.debug()){const c=Math.round((Date.now()-o)*100)/100,u=Math.round((Date.now()-l)*100)/100,f=u/16,d=(h,g)=>{for(h=String(h);h.length{let h=d;for(const p of l.split(".")){var g;h=(g=h)==null?void 0:g[p]}return h}:u=d=>d[a.accessorKey]),!c)throw new Error;let f={id:`${String(c)}`,accessorFn:u,parent:i,depth:n,columnDef:a,columns:[],getFlatColumns:T(()=>[!0],()=>{var d;return[f,...(d=f.columns)==null?void 0:d.flatMap(h=>h.getFlatColumns())]},{key:"column.getFlatColumns",debug:()=>{var d;return(d=e.options.debugAll)!=null?d:e.options.debugColumns}}),getLeafColumns:T(()=>[e._getOrderColumnsFn()],d=>{var h;if((h=f.columns)!=null&&h.length){let g=f.columns.flatMap(p=>p.getLeafColumns());return d(g)}return[f]},{key:"column.getLeafColumns",debug:()=>{var d;return(d=e.options.debugAll)!=null?d:e.options.debugColumns}})};return f=e._features.reduce((d,h)=>Object.assign(d,h.createColumn==null?void 0:h.createColumn(f,e)),f),f}function Ro(e,t,n){var i;let o={id:(i=n.id)!=null?i:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const r=[],a=l=>{l.subHeaders&&l.subHeaders.length&&l.subHeaders.map(a),r.push(l)};return a(o),r},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(r=>{Object.assign(o,r.createHeader==null?void 0:r.createHeader(o,e))}),o}const Cu={createTable:e=>({getHeaderGroups:T(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i,s)=>{var o,r;const a=(o=i==null?void 0:i.map(f=>n.find(d=>d.id===f)).filter(Boolean))!=null?o:[],l=(r=s==null?void 0:s.map(f=>n.find(d=>d.id===f)).filter(Boolean))!=null?r:[],c=n.filter(f=>!(i!=null&&i.includes(f.id))&&!(s!=null&&s.includes(f.id)));return In(t,[...a,...c,...l],e)},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterHeaderGroups:T(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i,s)=>(n=n.filter(o=>!(i!=null&&i.includes(o.id))&&!(s!=null&&s.includes(o.id))),In(t,n,e,"center")),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftHeaderGroups:T(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,i)=>{var s;const o=(s=i==null?void 0:i.map(r=>n.find(a=>a.id===r)).filter(Boolean))!=null?s:[];return In(t,o,e,"left")},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightHeaderGroups:T(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,i)=>{var s;const o=(s=i==null?void 0:i.map(r=>n.find(a=>a.id===r)).filter(Boolean))!=null?s:[];return In(t,o,e,"right")},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getFooterGroups:T(()=>[e.getHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftFooterGroups:T(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterFooterGroups:T(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightFooterGroups:T(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getFlatHeaders:T(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftFlatHeaders:T(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterFlatHeaders:T(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightFlatHeaders:T(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getCenterLeafHeaders:T(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeftLeafHeaders:T(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getRightLeafHeaders:T(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var i;return!((i=n.subHeaders)!=null&&i.length)}),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}}),getLeafHeaders:T(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,i)=>{var s,o,r,a,l,c;return[...(s=(o=t[0])==null?void 0:o.headers)!=null?s:[],...(r=(a=n[0])==null?void 0:a.headers)!=null?r:[],...(l=(c=i[0])==null?void 0:c.headers)!=null?l:[]].map(u=>u.getLeafHeaders()).flat()},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugHeaders}})})};function In(e,t,n,i){var s,o;let r=0;const a=function(d,h){h===void 0&&(h=1),r=Math.max(r,h),d.filter(g=>g.getIsVisible()).forEach(g=>{var p;(p=g.columns)!=null&&p.length&&a(g.columns,h+1)},0)};a(e);let l=[];const c=(d,h)=>{const g={depth:h,id:[i,`${h}`].filter(Boolean).join("_"),headers:[]},p=[];d.forEach(m=>{const _=[...p].reverse()[0],b=m.column.depth===g.depth;let x,v=!1;if(b&&m.column.parent?x=m.column.parent:(x=m.column,v=!0),_&&(_==null?void 0:_.column)===x)_.subHeaders.push(m);else{const y=Ro(n,x,{id:[i,h,x.id,m==null?void 0:m.id].filter(Boolean).join("_"),isPlaceholder:v,placeholderId:v?`${p.filter(M=>M.column===x).length}`:void 0,depth:h,index:p.length});y.subHeaders.push(m),p.push(y)}g.headers.push(m),m.headerGroup=g}),l.push(g),h>0&&c(p,h-1)},u=t.map((d,h)=>Ro(n,d,{depth:r,index:h}));c(u,r-1),l.reverse();const f=d=>d.filter(g=>g.column.getIsVisible()).map(g=>{let p=0,m=0,_=[0];g.subHeaders&&g.subHeaders.length?(_=[],f(g.subHeaders).forEach(x=>{let{colSpan:v,rowSpan:y}=x;p+=v,_.push(y)})):p=1;const b=Math.min(..._);return m=m+b,g.colSpan=p,g.rowSpan=m,{colSpan:p,rowSpan:m}});return f((s=(o=l[0])==null?void 0:o.headers)!=null?s:[]),l}const Vn={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},Qi=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),Mu={getDefaultColumnDef:()=>Vn,getInitialState:e=>({columnSizing:{},columnSizingInfo:Qi(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",onColumnSizingChange:Vt("columnSizing",e),onColumnSizingInfoChange:Vt("columnSizingInfo",e)}),createColumn:(e,t)=>({getSize:()=>{var n,i,s;const o=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:Vn.minSize,(i=o??e.columnDef.size)!=null?i:Vn.size),(s=e.columnDef.maxSize)!=null?s:Vn.maxSize)},getStart:n=>{const i=n?n==="left"?t.getLeftVisibleLeafColumns():t.getRightVisibleLeafColumns():t.getVisibleLeafColumns(),s=i.findIndex(o=>o.id===e.id);if(s>0){const o=i[s-1];return o.getStart(n)+o.getSize()}return 0},resetSize:()=>{t.setColumnSizing(n=>{let{[e.id]:i,...s}=n;return s})},getCanResize:()=>{var n,i;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((i=t.options.enableColumnResizing)!=null?i:!0)},getIsResizing:()=>t.getState().columnSizingInfo.isResizingColumn===e.id}),createHeader:(e,t)=>({getSize:()=>{let n=0;const i=s=>{if(s.subHeaders.length)s.subHeaders.forEach(i);else{var o;n+=(o=s.column.getSize())!=null?o:0}};return i(e),n},getStart:()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},getResizeHandler:()=>{const n=t.getColumn(e.column.id),i=n==null?void 0:n.getCanResize();return s=>{if(!n||!i||(s.persist==null||s.persist(),Zi(s)&&s.touches&&s.touches.length>1))return;const o=e.getSize(),r=e?e.getLeafHeaders().map(p=>[p.column.id,p.column.getSize()]):[[n.id,n.getSize()]],a=Zi(s)?Math.round(s.touches[0].clientX):s.clientX,l={},c=(p,m)=>{typeof m=="number"&&(t.setColumnSizingInfo(_=>{var b,x;const v=m-((b=_==null?void 0:_.startOffset)!=null?b:0),y=Math.max(v/((x=_==null?void 0:_.startSize)!=null?x:0),-.999999);return _.columnSizingStart.forEach(M=>{let[k,$]=M;l[k]=Math.round(Math.max($+$*y,0)*100)/100}),{..._,deltaOffset:v,deltaPercentage:y}}),(t.options.columnResizeMode==="onChange"||p==="end")&&t.setColumnSizing(_=>({..._,...l})))},u=p=>c("move",p),f=p=>{c("end",p),t.setColumnSizingInfo(m=>({...m,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},d={moveHandler:p=>u(p.clientX),upHandler:p=>{document.removeEventListener("mousemove",d.moveHandler),document.removeEventListener("mouseup",d.upHandler),f(p.clientX)}},h={moveHandler:p=>(p.cancelable&&(p.preventDefault(),p.stopPropagation()),u(p.touches[0].clientX),!1),upHandler:p=>{var m;document.removeEventListener("touchmove",h.moveHandler),document.removeEventListener("touchend",h.upHandler),p.cancelable&&(p.preventDefault(),p.stopPropagation()),f((m=p.touches[0])==null?void 0:m.clientX)}},g=ku()?{passive:!1}:!1;Zi(s)?(document.addEventListener("touchmove",h.moveHandler,g),document.addEventListener("touchend",h.upHandler,g)):(document.addEventListener("mousemove",d.moveHandler,g),document.addEventListener("mouseup",d.upHandler,g)),t.setColumnSizingInfo(p=>({...p,startOffset:a,startSize:o,deltaOffset:0,deltaPercentage:0,columnSizingStart:r,isResizingColumn:n.id}))}}}),createTable:e=>({setColumnSizing:t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),setColumnSizingInfo:t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),resetColumnSizing:t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},resetHeaderSizeInfo:t=>{var n;e.setColumnSizingInfo(t?Qi():(n=e.initialState.columnSizingInfo)!=null?n:Qi())},getTotalSize:()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getLeftTotalSize:()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getCenterTotalSize:()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0},getRightTotalSize:()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((i,s)=>i+s.getSize(),0))!=null?t:0}})};let zn=null;function ku(){if(typeof zn=="boolean")return zn;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return zn=e,zn}function Zi(e){return e.type==="touchstart"}const Ru={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:Vt("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;return{_autoResetExpanded:()=>{var i,s;if(!t){e._queue(()=>{t=!0});return}if((i=(s=e.options.autoResetAll)!=null?s:e.options.autoResetExpanded)!=null?i:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},setExpanded:i=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(i),toggleAllRowsExpanded:i=>{i??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},resetExpanded:i=>{var s,o;e.setExpanded(i?{}:(s=(o=e.initialState)==null?void 0:o.expanded)!=null?s:{})},getCanSomeRowsExpand:()=>e.getRowModel().flatRows.some(i=>i.getCanExpand()),getToggleAllRowsExpandedHandler:()=>i=>{i.persist==null||i.persist(),e.toggleAllRowsExpanded()},getIsSomeRowsExpanded:()=>{const i=e.getState().expanded;return i===!0||Object.values(i).some(Boolean)},getIsAllRowsExpanded:()=>{const i=e.getState().expanded;return typeof i=="boolean"?i===!0:!(!Object.keys(i).length||e.getRowModel().flatRows.some(s=>!s.getIsExpanded()))},getExpandedDepth:()=>{let i=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(o=>{const r=o.split(".");i=Math.max(i,r.length)}),i},getPreExpandedRowModel:()=>e.getSortedRowModel(),getExpandedRowModel:()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())}},createRow:(e,t)=>({toggleExpanded:n=>{t.setExpanded(i=>{var s;const o=i===!0?!0:!!(i!=null&&i[e.id]);let r={};if(i===!0?Object.keys(t.getRowModel().rowsById).forEach(a=>{r[a]=!0}):r=i,n=(s=n)!=null?s:!o,!o&&n)return{...r,[e.id]:!0};if(o&&!n){const{[e.id]:a,...l}=r;return l}return i})},getIsExpanded:()=>{var n;const i=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:i===!0||i!=null&&i[e.id])},getCanExpand:()=>{var n,i,s;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((i=t.options.enableExpanding)!=null?i:!0)&&!!((s=e.subRows)!=null&&s.length)},getToggleExpandedHandler:()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}})},Fa=(e,t,n)=>{var i;const s=n.toLowerCase();return!!((i=e.getValue(t))!=null&&i.toLowerCase().includes(s))};Fa.autoRemove=e=>Gt(e);const Ea=(e,t,n)=>{var i;return!!((i=e.getValue(t))!=null&&i.includes(n))};Ea.autoRemove=e=>Gt(e);const La=(e,t,n)=>{var i;return((i=e.getValue(t))==null?void 0:i.toLowerCase())===n.toLowerCase()};La.autoRemove=e=>Gt(e);const Ta=(e,t,n)=>{var i;return(i=e.getValue(t))==null?void 0:i.includes(n)};Ta.autoRemove=e=>Gt(e)||!(e!=null&&e.length);const Ia=(e,t,n)=>!n.some(i=>{var s;return!((s=e.getValue(t))!=null&&s.includes(i))});Ia.autoRemove=e=>Gt(e)||!(e!=null&&e.length);const Va=(e,t,n)=>n.some(i=>{var s;return(s=e.getValue(t))==null?void 0:s.includes(i)});Va.autoRemove=e=>Gt(e)||!(e!=null&&e.length);const za=(e,t,n)=>e.getValue(t)===n;za.autoRemove=e=>Gt(e);const Ha=(e,t,n)=>e.getValue(t)==n;Ha.autoRemove=e=>Gt(e);const Xs=(e,t,n)=>{let[i,s]=n;const o=e.getValue(t);return o>=i&&o<=s};Xs.resolveFilterValue=e=>{let[t,n]=e,i=typeof t!="number"?parseFloat(t):t,s=typeof n!="number"?parseFloat(n):n,o=t===null||Number.isNaN(i)?-1/0:i,r=n===null||Number.isNaN(s)?1/0:s;if(o>r){const a=o;o=r,r=a}return[o,r]};Xs.autoRemove=e=>Gt(e)||Gt(e[0])&&Gt(e[1]);const ne={includesString:Fa,includesStringSensitive:Ea,equalsString:La,arrIncludes:Ta,arrIncludesAll:Ia,arrIncludesSome:Va,equals:za,weakEquals:Ha,inNumberRange:Xs};function Gt(e){return e==null||e===""}const $u={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],globalFilter:void 0,...e}),getDefaultOptions:e=>({onColumnFiltersChange:Vt("columnFilters",e),onGlobalFilterChange:Vt("globalFilter",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100,globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n,i;const s=(n=e.getCoreRowModel().flatRows[0])==null||(i=n._getAllCellsByColumnId()[t.id])==null?void 0:i.getValue();return typeof s=="string"||typeof s=="number"}}),createColumn:(e,t)=>({getAutoFilterFn:()=>{const n=t.getCoreRowModel().flatRows[0],i=n==null?void 0:n.getValue(e.id);return typeof i=="string"?ne.includesString:typeof i=="number"?ne.inNumberRange:typeof i=="boolean"||i!==null&&typeof i=="object"?ne.equals:Array.isArray(i)?ne.arrIncludes:ne.weakEquals},getFilterFn:()=>{var n,i;return pi(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(i=t.options.filterFns)==null?void 0:i[e.columnDef.filterFn])!=null?n:ne[e.columnDef.filterFn]},getCanFilter:()=>{var n,i,s;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((i=t.options.enableColumnFilters)!=null?i:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&!!e.accessorFn},getCanGlobalFilter:()=>{var n,i,s,o;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((i=t.options.enableGlobalFilter)!=null?i:!0)&&((s=t.options.enableFilters)!=null?s:!0)&&((o=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?o:!0)&&!!e.accessorFn},getIsFiltered:()=>e.getFilterIndex()>-1,getFilterValue:()=>{var n,i;return(n=t.getState().columnFilters)==null||(i=n.find(s=>s.id===e.id))==null?void 0:i.value},getFilterIndex:()=>{var n,i;return(n=(i=t.getState().columnFilters)==null?void 0:i.findIndex(s=>s.id===e.id))!=null?n:-1},setFilterValue:n=>{t.setColumnFilters(i=>{const s=e.getFilterFn(),o=i==null?void 0:i.find(u=>u.id===e.id),r=he(n,o?o.value:void 0);if($o(s,r,e)){var a;return(a=i==null?void 0:i.filter(u=>u.id!==e.id))!=null?a:[]}const l={id:e.id,value:r};if(o){var c;return(c=i==null?void 0:i.map(u=>u.id===e.id?l:u))!=null?c:[]}return i!=null&&i.length?[...i,l]:[l]})},_getFacetedRowModel:t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),getFacetedRowModel:()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),_getFacetedUniqueValues:t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),getFacetedUniqueValues:()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,_getFacetedMinMaxValues:t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),getFacetedMinMaxValues:()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}),createRow:(e,t)=>({columnFilters:{},columnFiltersMeta:{}}),createTable:e=>({getGlobalAutoFilterFn:()=>ne.includesString,getGlobalFilterFn:()=>{var t,n;const{globalFilterFn:i}=e.options;return pi(i)?i:i==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[i])!=null?t:ne[i]},setColumnFilters:t=>{const n=e.getAllLeafColumns(),i=s=>{var o;return(o=he(t,s))==null?void 0:o.filter(r=>{const a=n.find(l=>l.id===r.id);if(a){const l=a.getFilterFn();if($o(l,r.value,a))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(i)},setGlobalFilter:t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},resetGlobalFilter:t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)},resetColumnFilters:t=>{var n,i;e.setColumnFilters(t?[]:(n=(i=e.initialState)==null?void 0:i.columnFilters)!=null?n:[])},getPreFilteredRowModel:()=>e.getCoreRowModel(),getFilteredRowModel:()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel()),_getGlobalFacetedRowModel:e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),getGlobalFacetedRowModel:()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),_getGlobalFacetedUniqueValues:e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),getGlobalFacetedUniqueValues:()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,_getGlobalFacetedMinMaxValues:e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),getGlobalFacetedMinMaxValues:()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}})};function $o(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const Au=(e,t,n)=>n.reduce((i,s)=>{const o=s.getValue(e);return i+(typeof o=="number"?o:0)},0),Pu=(e,t,n)=>{let i;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(i>o||i===void 0&&o>=o)&&(i=o)}),i},Du=(e,t,n)=>{let i;return n.forEach(s=>{const o=s.getValue(e);o!=null&&(i=o)&&(i=o)}),i},Ou=(e,t,n)=>{let i,s;return n.forEach(o=>{const r=o.getValue(e);r!=null&&(i===void 0?r>=r&&(i=s=r):(i>r&&(i=r),s{let n=0,i=0;if(t.forEach(s=>{let o=s.getValue(e);o!=null&&(o=+o)>=o&&(++n,i+=o)}),n)return i/n},Eu=(e,t)=>{if(!t.length)return;let n=0,i=0;return t.forEach(s=>{let o=s.getValue(e);typeof o=="number"&&(n=Math.min(n,o),i=Math.max(i,o))}),(n+i)/2},Lu=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),Tu=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,Iu=(e,t)=>t.length,Ji={sum:Au,min:Pu,max:Du,extent:Ou,mean:Fu,median:Eu,unique:Lu,uniqueCount:Tu,count:Iu},Vu={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:Vt("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>({toggleGrouping:()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(i=>i!==e.id):[...n??[],e.id])},getCanGroup:()=>{var n,i,s,o;return(n=(i=(s=(o=e.columnDef.enableGrouping)!=null?o:!0)!=null?s:t.options.enableGrouping)!=null?i:!0)!=null?n:!!e.accessorFn},getIsGrouped:()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},getGroupedIndex:()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},getToggleGroupingHandler:()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},getAutoAggregationFn:()=>{const n=t.getCoreRowModel().flatRows[0],i=n==null?void 0:n.getValue(e.id);if(typeof i=="number")return Ji.sum;if(Object.prototype.toString.call(i)==="[object Date]")return Ji.extent},getAggregationFn:()=>{var n,i;if(!e)throw new Error;return pi(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(i=t.options.aggregationFns)==null?void 0:i[e.columnDef.aggregationFn])!=null?n:Ji[e.columnDef.aggregationFn]}}),createTable:e=>({setGrouping:t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),resetGrouping:t=>{var n,i;e.setGrouping(t?[]:(n=(i=e.initialState)==null?void 0:i.grouping)!=null?n:[])},getPreGroupedRowModel:()=>e.getFilteredRowModel(),getGroupedRowModel:()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())}),createRow:e=>({getIsGrouped:()=>!!e.groupingColumnId,_groupingValuesCache:{}}),createCell:(e,t,n,i)=>({getIsGrouped:()=>t.getIsGrouped()&&t.id===n.groupingColumnId,getIsPlaceholder:()=>!e.getIsGrouped()&&t.getIsGrouped(),getIsAggregated:()=>{var s;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((s=n.subRows)!=null&&s.length)}})};function zu(e,t,n){if(!(t!=null&&t.length)||!n)return e;const i=e.filter(o=>!t.includes(o.id));return n==="remove"?i:[...t.map(o=>e.find(r=>r.id===o)).filter(Boolean),...i]}const Hu={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:Vt("columnOrder",e)}),createTable:e=>({setColumnOrder:t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),resetColumnOrder:t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},_getOrderColumnsFn:T(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,i)=>s=>{let o=[];if(!(t!=null&&t.length))o=s;else{const r=[...t],a=[...s];for(;a.length&&r.length;){const l=r.shift(),c=a.findIndex(u=>u.id===l);c>-1&&o.push(a.splice(c,1)[0])}o=[...o,...a]}return zu(o,n,i)},{key:!1})})},Ss=0,Cs=10,ts=()=>({pageIndex:Ss,pageSize:Cs}),Nu={getInitialState:e=>({...e,pagination:{...ts(),...e==null?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:Vt("pagination",e)}),createTable:e=>{let t=!1,n=!1;return{_autoResetPageIndex:()=>{var i,s;if(!t){e._queue(()=>{t=!0});return}if((i=(s=e.options.autoResetAll)!=null?s:e.options.autoResetPageIndex)!=null?i:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},setPagination:i=>{const s=o=>he(i,o);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(s)},resetPagination:i=>{var s;e.setPagination(i?ts():(s=e.initialState.pagination)!=null?s:ts())},setPageIndex:i=>{e.setPagination(s=>{let o=he(i,s.pageIndex);const r=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return o=Math.max(0,Math.min(o,r)),{...s,pageIndex:o}})},resetPageIndex:i=>{var s,o,r;e.setPageIndex(i?Ss:(s=(o=e.initialState)==null||(r=o.pagination)==null?void 0:r.pageIndex)!=null?s:Ss)},resetPageSize:i=>{var s,o,r;e.setPageSize(i?Cs:(s=(o=e.initialState)==null||(r=o.pagination)==null?void 0:r.pageSize)!=null?s:Cs)},setPageSize:i=>{e.setPagination(s=>{const o=Math.max(1,he(i,s.pageSize)),r=s.pageSize*s.pageIndex,a=Math.floor(r/o);return{...s,pageIndex:a,pageSize:o}})},setPageCount:i=>e.setPagination(s=>{var o;let r=he(i,(o=e.options.pageCount)!=null?o:-1);return typeof r=="number"&&(r=Math.max(-1,r)),{...s,pageCount:r}}),getPageOptions:T(()=>[e.getPageCount()],i=>{let s=[];return i&&i>0&&(s=[...new Array(i)].fill(null).map((o,r)=>r)),s},{key:!1,debug:()=>{var i;return(i=e.options.debugAll)!=null?i:e.options.debugTable}}),getCanPreviousPage:()=>e.getState().pagination.pageIndex>0,getCanNextPage:()=>{const{pageIndex:i}=e.getState().pagination,s=e.getPageCount();return s===-1?!0:s===0?!1:ie.setPageIndex(i=>i-1),nextPage:()=>e.setPageIndex(i=>i+1),getPrePaginationRowModel:()=>e.getExpandedRowModel(),getPaginationRowModel:()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),getPageCount:()=>{var i;return(i=e.options.pageCount)!=null?i:Math.ceil(e.getPrePaginationRowModel().rows.length/e.getState().pagination.pageSize)}}}},es=()=>({left:[],right:[]}),Bu={getInitialState:e=>({columnPinning:es(),...e}),getDefaultOptions:e=>({onColumnPinningChange:Vt("columnPinning",e)}),createColumn:(e,t)=>({pin:n=>{const i=e.getLeafColumns().map(s=>s.id).filter(Boolean);t.setColumnPinning(s=>{var o,r;if(n==="right"){var a,l;return{left:((a=s==null?void 0:s.left)!=null?a:[]).filter(f=>!(i!=null&&i.includes(f))),right:[...((l=s==null?void 0:s.right)!=null?l:[]).filter(f=>!(i!=null&&i.includes(f))),...i]}}if(n==="left"){var c,u;return{left:[...((c=s==null?void 0:s.left)!=null?c:[]).filter(f=>!(i!=null&&i.includes(f))),...i],right:((u=s==null?void 0:s.right)!=null?u:[]).filter(f=>!(i!=null&&i.includes(f)))}}return{left:((o=s==null?void 0:s.left)!=null?o:[]).filter(f=>!(i!=null&&i.includes(f))),right:((r=s==null?void 0:s.right)!=null?r:[]).filter(f=>!(i!=null&&i.includes(f)))}})},getCanPin:()=>e.getLeafColumns().some(i=>{var s,o;return((s=i.columnDef.enablePinning)!=null?s:!0)&&((o=t.options.enablePinning)!=null?o:!0)}),getIsPinned:()=>{const n=e.getLeafColumns().map(a=>a.id),{left:i,right:s}=t.getState().columnPinning,o=n.some(a=>i==null?void 0:i.includes(a)),r=n.some(a=>s==null?void 0:s.includes(a));return o?"left":r?"right":!1},getPinnedIndex:()=>{var n,i,s;const o=e.getIsPinned();return o?(n=(i=t.getState().columnPinning)==null||(s=i[o])==null?void 0:s.indexOf(e.id))!=null?n:-1:0}}),createRow:(e,t)=>({getCenterVisibleCells:T(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,i,s)=>{const o=[...i??[],...s??[]];return n.filter(r=>!o.includes(r.column.id))},{key:"row.getCenterVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getLeftVisibleCells:T(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,,],(n,i)=>(i??[]).map(o=>n.find(r=>r.column.id===o)).filter(Boolean).map(o=>({...o,position:"left"})),{key:"row.getLeftVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getRightVisibleCells:T(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,i)=>(i??[]).map(o=>n.find(r=>r.column.id===o)).filter(Boolean).map(o=>({...o,position:"right"})),{key:"row.getRightVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}})}),createTable:e=>({setColumnPinning:t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),resetColumnPinning:t=>{var n,i;return e.setColumnPinning(t?es():(n=(i=e.initialState)==null?void 0:i.columnPinning)!=null?n:es())},getIsSomeColumnsPinned:t=>{var n;const i=e.getState().columnPinning;if(!t){var s,o;return!!((s=i.left)!=null&&s.length||(o=i.right)!=null&&o.length)}return!!((n=i[t])!=null&&n.length)},getLeftLeafColumns:T(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(i=>t.find(s=>s.id===i)).filter(Boolean),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}}),getRightLeafColumns:T(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(i=>t.find(s=>s.id===i)).filter(Boolean),{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}}),getCenterLeafColumns:T(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,i)=>{const s=[...n??[],...i??[]];return t.filter(o=>!s.includes(o.id))},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugColumns}})})},ju={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:Vt("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>({setRowSelection:t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),resetRowSelection:t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},toggleAllRowsSelected:t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const i={...n},s=e.getPreGroupedRowModel().flatRows;return t?s.forEach(o=>{o.getCanSelect()&&(i[o.id]=!0)}):s.forEach(o=>{delete i[o.id]}),i})},toggleAllPageRowsSelected:t=>e.setRowSelection(n=>{const i=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),s={...n};return e.getRowModel().rows.forEach(o=>{Ms(s,o.id,i,e)}),s}),getPreSelectedRowModel:()=>e.getCoreRowModel(),getSelectedRowModel:T(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?ns(e,n):{rows:[],flatRows:[],rowsById:{}},{key:!1,debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getFilteredSelectedRowModel:T(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?ns(e,n):{rows:[],flatRows:[],rowsById:{}},{key:"getFilteredSelectedRowModel",debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getGroupedSelectedRowModel:T(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?ns(e,n):{rows:[],flatRows:[],rowsById:{}},{key:"getGroupedSelectedRowModel",debug:()=>{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable}}),getIsAllRowsSelected:()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let i=!!(t.length&&Object.keys(n).length);return i&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(i=!1),i},getIsAllPageRowsSelected:()=>{const t=e.getPaginationRowModel().flatRows,{rowSelection:n}=e.getState();let i=!!t.length;return i&&t.some(s=>s.getCanSelect()&&!n[s.id])&&(i=!1),i},getIsSomeRowsSelected:()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.some(n=>n.getIsSelected()||n.getIsSomeSelected())},getToggleAllRowsSelectedHandler:()=>t=>{e.toggleAllRowsSelected(t.target.checked)},getToggleAllPageRowsSelectedHandler:()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}}),createRow:(e,t)=>({toggleSelected:n=>{const i=e.getIsSelected();t.setRowSelection(s=>{if(n=typeof n<"u"?n:!i,i===n)return s;const o={...s};return Ms(o,e.id,n,t),o})},getIsSelected:()=>{const{rowSelection:n}=t.getState();return Ks(e,n)},getIsSomeSelected:()=>{const{rowSelection:n}=t.getState();return Ao(e,n)==="some"},getIsAllSubRowsSelected:()=>{const{rowSelection:n}=t.getState();return Ao(e,n)==="all"},getCanSelect:()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},getCanSelectSubRows:()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},getCanMultiSelect:()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},getToggleSelectedHandler:()=>{const n=e.getCanSelect();return i=>{var s;n&&e.toggleSelected((s=i.target)==null?void 0:s.checked)}}})},Ms=(e,t,n,i)=>{var s;const o=i.getRow(t);n?(o.getCanMultiSelect()||Object.keys(e).forEach(r=>delete e[r]),o.getCanSelect()&&(e[t]=!0)):delete e[t],(s=o.subRows)!=null&&s.length&&o.getCanSelectSubRows()&&o.subRows.forEach(r=>Ms(e,r.id,n,i))};function ns(e,t){const n=e.getState().rowSelection,i=[],s={},o=function(r,a){return r.map(l=>{var c;const u=Ks(l,n);if(u&&(i.push(l),s[l.id]=l),(c=l.subRows)!=null&&c.length&&(l={...l,subRows:o(l.subRows)}),u)return l}).filter(Boolean)};return{rows:o(t.rows),flatRows:i,rowsById:s}}function Ks(e,t){var n;return(n=t[e.id])!=null?n:!1}function Ao(e,t,n){if(e.subRows&&e.subRows.length){let i=!0,s=!1;return e.subRows.forEach(o=>{s&&!i||(Ks(o,t)?s=!0:i=!1)}),i?"all":s?"some":!1}return!1}const ks=/([0-9]+)/gm,Wu=(e,t,n)=>Na(ye(e.getValue(n)).toLowerCase(),ye(t.getValue(n)).toLowerCase()),Gu=(e,t,n)=>Na(ye(e.getValue(n)),ye(t.getValue(n))),qu=(e,t,n)=>Qs(ye(e.getValue(n)).toLowerCase(),ye(t.getValue(n)).toLowerCase()),Yu=(e,t,n)=>Qs(ye(e.getValue(n)),ye(t.getValue(n))),Uu=(e,t,n)=>{const i=e.getValue(n),s=t.getValue(n);return i>s?1:iQs(e.getValue(n),t.getValue(n));function Qs(e,t){return e===t?0:e>t?1:-1}function ye(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function Na(e,t){const n=e.split(ks).filter(Boolean),i=t.split(ks).filter(Boolean);for(;n.length&&i.length;){const s=n.shift(),o=i.shift(),r=parseInt(s,10),a=parseInt(o,10),l=[r,a].sort();if(isNaN(l[0])){if(s>o)return 1;if(o>s)return-1;continue}if(isNaN(l[1]))return isNaN(r)?-1:1;if(r>a)return 1;if(a>r)return-1}return n.length-i.length}const cn={alphanumeric:Wu,alphanumericCaseSensitive:Gu,text:qu,textCaseSensitive:Yu,datetime:Uu,basic:Xu},Ku={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto"}),getDefaultOptions:e=>({onSortingChange:Vt("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>({getAutoSortingFn:()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let i=!1;for(const s of n){const o=s==null?void 0:s.getValue(e.id);if(Object.prototype.toString.call(o)==="[object Date]")return cn.datetime;if(typeof o=="string"&&(i=!0,o.split(ks).length>1))return cn.alphanumeric}return i?cn.text:cn.basic},getAutoSortDir:()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof(n==null?void 0:n.getValue(e.id))=="string"?"asc":"desc"},getSortingFn:()=>{var n,i;if(!e)throw new Error;return pi(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(i=t.options.sortingFns)==null?void 0:i[e.columnDef.sortingFn])!=null?n:cn[e.columnDef.sortingFn]},toggleSorting:(n,i)=>{const s=e.getNextSortingOrder(),o=typeof n<"u"&&n!==null;t.setSorting(r=>{const a=r==null?void 0:r.find(h=>h.id===e.id),l=r==null?void 0:r.findIndex(h=>h.id===e.id);let c=[],u,f=o?n:s==="desc";if(r!=null&&r.length&&e.getCanMultiSort()&&i?a?u="toggle":u="add":r!=null&&r.length&&l!==r.length-1?u="replace":a?u="toggle":u="replace",u==="toggle"&&(o||s||(u="remove")),u==="add"){var d;c=[...r,{id:e.id,desc:f}],c.splice(0,c.length-((d=t.options.maxMultiSortColCount)!=null?d:Number.MAX_SAFE_INTEGER))}else u==="toggle"?c=r.map(h=>h.id===e.id?{...h,desc:f}:h):u==="remove"?c=r.filter(h=>h.id!==e.id):c=[{id:e.id,desc:f}];return c})},getFirstSortDir:()=>{var n,i;return((n=(i=e.columnDef.sortDescFirst)!=null?i:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},getNextSortingOrder:n=>{var i,s;const o=e.getFirstSortDir(),r=e.getIsSorted();return r?r!==o&&((i=t.options.enableSortingRemoval)==null||i)&&(!(n&&(s=t.options.enableMultiRemove)!=null)||s)?!1:r==="desc"?"asc":"desc":o},getCanSort:()=>{var n,i;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((i=t.options.enableSorting)!=null?i:!0)&&!!e.accessorFn},getCanMultiSort:()=>{var n,i;return(n=(i=e.columnDef.enableMultiSort)!=null?i:t.options.enableMultiSort)!=null?n:!!e.accessorFn},getIsSorted:()=>{var n;const i=(n=t.getState().sorting)==null?void 0:n.find(s=>s.id===e.id);return i?i.desc?"desc":"asc":!1},getSortIndex:()=>{var n,i;return(n=(i=t.getState().sorting)==null?void 0:i.findIndex(s=>s.id===e.id))!=null?n:-1},clearSorting:()=>{t.setSorting(n=>n!=null&&n.length?n.filter(i=>i.id!==e.id):[])},getToggleSortingHandler:()=>{const n=e.getCanSort();return i=>{n&&(i.persist==null||i.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(i):!1))}}}),createTable:e=>({setSorting:t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),resetSorting:t=>{var n,i;e.setSorting(t?[]:(n=(i=e.initialState)==null?void 0:i.sorting)!=null?n:[])},getPreSortedRowModel:()=>e.getGroupedRowModel(),getSortedRowModel:()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())})},Qu={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:Vt("columnVisibility",e)}),createColumn:(e,t)=>({toggleVisibility:n=>{e.getCanHide()&&t.setColumnVisibility(i=>({...i,[e.id]:n??!e.getIsVisible()}))},getIsVisible:()=>{var n,i;return(n=(i=t.getState().columnVisibility)==null?void 0:i[e.id])!=null?n:!0},getCanHide:()=>{var n,i;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((i=t.options.enableHiding)!=null?i:!0)},getToggleVisibilityHandler:()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}}),createRow:(e,t)=>({_getAllVisibleCells:T(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(i=>i.column.getIsVisible()),{key:"row._getAllVisibleCells",debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}}),getVisibleCells:T(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,i,s)=>[...n,...i,...s],{key:!1,debug:()=>{var n;return(n=t.options.debugAll)!=null?n:t.options.debugRows}})}),createTable:e=>{const t=(n,i)=>T(()=>[i(),i().filter(s=>s.getIsVisible()).map(s=>s.id).join("_")],s=>s.filter(o=>o.getIsVisible==null?void 0:o.getIsVisible()),{key:n,debug:()=>{var s;return(s=e.options.debugAll)!=null?s:e.options.debugColumns}});return{getVisibleFlatColumns:t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),getVisibleLeafColumns:t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),getLeftVisibleLeafColumns:t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),getRightVisibleLeafColumns:t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),getCenterVisibleLeafColumns:t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),setColumnVisibility:n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),resetColumnVisibility:n=>{var i;e.setColumnVisibility(n?{}:(i=e.initialState.columnVisibility)!=null?i:{})},toggleAllColumnsVisible:n=>{var i;n=(i=n)!=null?i:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((s,o)=>({...s,[o.id]:n||!(o.getCanHide!=null&&o.getCanHide())}),{}))},getIsAllColumnsVisible:()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),getIsSomeColumnsVisible:()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),getToggleAllColumnsVisibilityHandler:()=>n=>{var i;e.toggleAllColumnsVisible((i=n.target)==null?void 0:i.checked)}}}},Po=[Cu,Qu,Hu,Bu,$u,Ku,Vu,Ru,Nu,ju,Mu];function Zu(e){var t;(e.debugAll||e.debugTable)&&console.info("Creating Table Instance...");let n={_features:Po};const i=n._features.reduce((u,f)=>Object.assign(u,f.getDefaultOptions==null?void 0:f.getDefaultOptions(n)),{}),s=u=>n.options.mergeOptions?n.options.mergeOptions(i,u):{...i,...u};let r={...{},...(t=e.initialState)!=null?t:{}};n._features.forEach(u=>{var f;r=(f=u.getInitialState==null?void 0:u.getInitialState(r))!=null?f:r});const a=[];let l=!1;const c={_features:Po,options:{...i,...e},initialState:r,_queue:u=>{a.push(u),l||(l=!0,Promise.resolve().then(()=>{for(;a.length;)a.shift()();l=!1}).catch(f=>setTimeout(()=>{throw f})))},reset:()=>{n.setState(n.initialState)},setOptions:u=>{const f=he(u,n.options);n.options=s(f)},getState:()=>n.options.state,setState:u=>{n.options.onStateChange==null||n.options.onStateChange(u)},_getRowId:(u,f,d)=>{var h;return(h=n.options.getRowId==null?void 0:n.options.getRowId(u,f,d))!=null?h:`${d?[d.id,f].join("."):f}`},getCoreRowModel:()=>(n._getCoreRowModel||(n._getCoreRowModel=n.options.getCoreRowModel(n)),n._getCoreRowModel()),getRowModel:()=>n.getPaginationRowModel(),getRow:u=>{const f=n.getRowModel().rowsById[u];if(!f)throw new Error;return f},_getDefaultColumnDef:T(()=>[n.options.defaultColumn],u=>{var f;return u=(f=u)!=null?f:{},{header:d=>{const h=d.header.column.columnDef;return h.accessorKey?h.accessorKey:h.accessorFn?h.id:null},cell:d=>{var h,g;return(h=(g=d.renderValue())==null||g.toString==null?void 0:g.toString())!=null?h:null},...n._features.reduce((d,h)=>Object.assign(d,h.getDefaultColumnDef==null?void 0:h.getDefaultColumnDef()),{}),...u}},{debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns},key:!1}),_getColumnDefs:()=>n.options.columns,getAllColumns:T(()=>[n._getColumnDefs()],u=>{const f=function(d,h,g){return g===void 0&&(g=0),d.map(p=>{const m=Su(n,p,g,h),_=p;return m.columns=_.columns?f(_.columns,m,g+1):[],m})};return f(u)},{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getAllFlatColumns:T(()=>[n.getAllColumns()],u=>u.flatMap(f=>f.getFlatColumns()),{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),_getAllFlatColumnsById:T(()=>[n.getAllFlatColumns()],u=>u.reduce((f,d)=>(f[d.id]=d,f),{}),{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getAllLeafColumns:T(()=>[n.getAllColumns(),n._getOrderColumnsFn()],(u,f)=>{let d=u.flatMap(h=>h.getLeafColumns());return f(d)},{key:!1,debug:()=>{var u;return(u=n.options.debugAll)!=null?u:n.options.debugColumns}}),getColumn:u=>n._getAllFlatColumnsById()[u]};return Object.assign(n,c),n._features.forEach(u=>Object.assign(n,u.createTable==null?void 0:u.createTable(n))),n}function Ju(e,t,n,i){const s=()=>{var r;return(r=o.getValue())!=null?r:e.options.renderFallbackValue},o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(i),renderValue:s,getContext:T(()=>[e,n,t,o],(r,a,l,c)=>({table:r,column:a,row:l,cell:c,getValue:c.getValue,renderValue:c.renderValue}),{key:!1,debug:()=>e.options.debugAll})};return e._features.forEach(r=>{Object.assign(o,r.createCell==null?void 0:r.createCell(o,n,t,e))},{}),o}const tf=(e,t,n,i,s,o,r)=>{let a={id:t,index:i,original:n,depth:s,parentRow:r,_valuesCache:{},_uniqueValuesCache:{},getValue:l=>{if(a._valuesCache.hasOwnProperty(l))return a._valuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return a._valuesCache[l]=c.accessorFn(a.original,i),a._valuesCache[l]},getUniqueValues:l=>{if(a._uniqueValuesCache.hasOwnProperty(l))return a._uniqueValuesCache[l];const c=e.getColumn(l);if(c!=null&&c.accessorFn)return c.columnDef.getUniqueValues?(a._uniqueValuesCache[l]=c.columnDef.getUniqueValues(a.original,i),a._uniqueValuesCache[l]):(a._uniqueValuesCache[l]=[a.getValue(l)],a._uniqueValuesCache[l])},renderValue:l=>{var c;return(c=a.getValue(l))!=null?c:e.options.renderFallbackValue},subRows:o??[],getLeafRows:()=>wu(a.subRows,l=>l.subRows),getAllCells:T(()=>[e.getAllLeafColumns()],l=>l.map(c=>Ju(e,a,c,c.id)),{key:!1,debug:()=>{var l;return(l=e.options.debugAll)!=null?l:e.options.debugRows}}),_getAllCellsByColumnId:T(()=>[a.getAllCells()],l=>l.reduce((c,u)=>(c[u.column.id]=u,c),{}),{key:"row.getAllCellsByColumnId",debug:()=>{var l;return(l=e.options.debugAll)!=null?l:e.options.debugRows}})};for(let l=0;lT(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},i=function(s,o,r){o===void 0&&(o=0);const a=[];for(let c=0;c{var t;return(t=e.options.debugAll)!=null?t:e.options.debugTable},onChange:()=>{e._autoResetPageIndex()}})}/** + * svelte-table + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function nf(e){let t;return{c(){t=Z(e[0])},l(n){t=oc(n,e[0])},m(n,i){Jl(n,t,i)},p(n,[i]){i&1&&Wt(t,n[0])},i:ht,o:ht,d(n){n&&X(t)}}}function sf(e,t,n){let{content:i}=t;return e.$$set=s=>{"content"in s&&n(0,i=s.content)},[i]}class of extends K{constructor(t){super(),Q(this,t,sf,nf,U,{content:0})}}const rf=Ca((e,t,n,i)=>`${vc(t.content)}`);var af=typeof document>"u"?rf:of;function lf(e,t,n){let i,s;return i=new t({props:n,$$inline:!0}),{c(){I(i.$$.fragment)},l(o){Sc(i.$$.fragment,o)},m(o,r){E(i,o,r),s=!0},p:ht,i(o){s||(S(i.$$.fragment,o),s=!0)},o(o){C(i.$$.fragment,o),s=!1},d(o){L(i,o)}}}function cf(e,t){return class extends K{constructor(i){super(),Q(this,i,null,s=>lf(s,e,t),U,{},void 0)}}}function uf(e,t){return Ca((i,s,o,r)=>`${wc(e,"TableComponent").$$render(i,t,{},{})}`)}const Ba=typeof window>"u"?uf:cf;function ff(e){return typeof e=="object"&&typeof e.$$render=="function"&&typeof e.render=="function"}function df(e){var t,n;let i="__SVELTE_HMR"in window;return e.prototype instanceof K||i&&((t=e.name)==null?void 0:t.startsWith("Proxy<"))&&((n=e.name)==null?void 0:n.endsWith(">"))}function Do(e){return typeof document>"u"?ff(e):df(e)}function Oo(e){return Ba(af,{content:e})}function mi(e,t){if(!e)return null;if(Do(e))return Ba(e,t);if(typeof e=="function"){const n=e(t);return Do(n)?n:Oo(n)}return Oo(e)}function hf(e){let t;"subscribe"in e?t=e:t=ms(e);let n={state:{},onStateChange:()=>{},renderFallbackValue:null,...jl(t)},i=Zu(n),s=Ft(i.initialState),o=qs([s,t],a=>a);return ms(i,function(l){const c=o.subscribe(u=>{let[f,d]=u;i.setOptions(h=>({...h,...d,state:{...f,...d.state},onStateChange:g=>{g instanceof Function?s.update(g):s.set(g),n.onStateChange==null||n.onStateChange(g)}})),l(i)});return function(){c()}})}const _i=Math.min,De=Math.max,bi=Math.round,Hn=Math.floor,xe=e=>({x:e,y:e}),gf={left:"right",right:"left",bottom:"top",top:"bottom"},pf={start:"end",end:"start"};function Fo(e,t,n){return De(e,_i(t,n))}function Ti(e,t){return typeof e=="function"?e(t):e}function Le(e){return e.split("-")[0]}function Ii(e){return e.split("-")[1]}function ja(e){return e==="x"?"y":"x"}function Wa(e){return e==="y"?"height":"width"}function tn(e){return["top","bottom"].includes(Le(e))?"y":"x"}function Ga(e){return ja(tn(e))}function mf(e,t,n){n===void 0&&(n=!1);const i=Ii(e),s=Ga(e),o=Wa(s);let r=s==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(r=yi(r)),[r,yi(r)]}function _f(e){const t=yi(e);return[Rs(e),t,Rs(t)]}function Rs(e){return e.replace(/start|end/g,t=>pf[t])}function bf(e,t,n){const i=["left","right"],s=["right","left"],o=["top","bottom"],r=["bottom","top"];switch(e){case"top":case"bottom":return n?t?s:i:t?i:s;case"left":case"right":return t?o:r;default:return[]}}function yf(e,t,n,i){const s=Ii(e);let o=bf(Le(e),n==="start",i);return s&&(o=o.map(r=>r+"-"+s),t&&(o=o.concat(o.map(Rs)))),o}function yi(e){return e.replace(/left|right|bottom|top/g,t=>gf[t])}function xf(e){return{top:0,right:0,bottom:0,left:0,...e}}function vf(e){return typeof e!="number"?xf(e):{top:e,right:e,bottom:e,left:e}}function xi(e){const{x:t,y:n,width:i,height:s}=e;return{width:i,height:s,top:n,left:t,right:t+i,bottom:n+s,x:t,y:n}}function Eo(e,t,n){let{reference:i,floating:s}=e;const o=tn(t),r=Ga(t),a=Wa(r),l=Le(t),c=o==="y",u=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,d=i[a]/2-s[a]/2;let h;switch(l){case"top":h={x:u,y:i.y-s.height};break;case"bottom":h={x:u,y:i.y+i.height};break;case"right":h={x:i.x+i.width,y:f};break;case"left":h={x:i.x-s.width,y:f};break;default:h={x:i.x,y:i.y}}switch(Ii(t)){case"start":h[r]-=d*(n&&c?-1:1);break;case"end":h[r]+=d*(n&&c?-1:1);break}return h}const wf=async(e,t,n)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:r}=n,a=o.filter(Boolean),l=await(r.isRTL==null?void 0:r.isRTL(t));let c=await r.getElementRects({reference:e,floating:t,strategy:s}),{x:u,y:f}=Eo(c,i,l),d=i,h={},g=0;for(let p=0;pit<=0)){var R,V;const it=(((R=o.flip)==null?void 0:R.index)||0)+1,H=k[it];if(H)return{data:{index:it,overflows:O},reset:{placement:H}};let B=(V=O.filter(N=>N.overflows[0]<=0).sort((N,st)=>N.overflows[1]-st.overflows[1])[0])==null?void 0:V.placement;if(!B)switch(h){case"bestFit":{var ct;const N=(ct=O.filter(st=>{if(M){const G=tn(st.placement);return G===b||G==="y"}return!0}).map(st=>[st.placement,st.overflows.filter(G=>G>0).reduce((G,Et)=>G+Et,0)]).sort((st,G)=>st[1]-G[1])[0])==null?void 0:ct[0];N&&(B=N);break}case"initialPlacement":B=a;break}if(s!==B)return{reset:{placement:B}}}return{}}}};async function Cf(e,t){const{placement:n,platform:i,elements:s}=e,o=await(i.isRTL==null?void 0:i.isRTL(s.floating)),r=Le(n),a=Ii(n),l=tn(n)==="y",c=["left","top"].includes(r)?-1:1,u=o&&l?-1:1,f=Ti(t,e);let{mainAxis:d,crossAxis:h,alignmentAxis:g}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof g=="number"&&(h=a==="end"?g*-1:g),l?{x:h*u,y:d*c}:{x:d*c,y:h*u}}const Mf=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:s,y:o,placement:r,middlewareData:a}=t,l=await Cf(t,e);return r===((n=a.offset)==null?void 0:n.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:s+l.x,y:o+l.y,data:{...l,placement:r}}}}},kf=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:r=!1,limiter:a={fn:m=>{let{x:_,y:b}=m;return{x:_,y:b}}},...l}=Ti(e,t),c={x:n,y:i},u=await qa(t,l),f=tn(Le(s)),d=ja(f);let h=c[d],g=c[f];if(o){const m=d==="y"?"top":"left",_=d==="y"?"bottom":"right",b=h+u[m],x=h-u[_];h=Fo(b,h,x)}if(r){const m=f==="y"?"top":"left",_=f==="y"?"bottom":"right",b=g+u[m],x=g-u[_];g=Fo(b,g,x)}const p=a.fn({...t,[d]:h,[f]:g});return{...p,data:{x:p.x-n,y:p.y-i,enabled:{[d]:o,[f]:r}}}}}};function Vi(){return typeof window<"u"}function an(e){return Ya(e)?(e.nodeName||"").toLowerCase():"#document"}function Mt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function te(e){var t;return(t=(Ya(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Ya(e){return Vi()?e instanceof Node||e instanceof Mt(e).Node:!1}function qt(e){return Vi()?e instanceof Element||e instanceof Mt(e).Element:!1}function Qt(e){return Vi()?e instanceof HTMLElement||e instanceof Mt(e).HTMLElement:!1}function Lo(e){return!Vi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Mt(e).ShadowRoot}function Dn(e){const{overflow:t,overflowX:n,overflowY:i,display:s}=Yt(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!["inline","contents"].includes(s)}function Rf(e){return["table","td","th"].includes(an(e))}function zi(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function Zs(e){const t=Js(),n=qt(e)?Yt(e):e;return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(i=>(n.willChange||"").includes(i))||["paint","layout","strict","content"].some(i=>(n.contain||"").includes(i))}function $f(e){let t=ve(e);for(;Qt(t)&&!en(t);){if(Zs(t))return t;if(zi(t))return null;t=ve(t)}return null}function Js(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function en(e){return["html","body","#document"].includes(an(e))}function Yt(e){return Mt(e).getComputedStyle(e)}function Hi(e){return qt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ve(e){if(an(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Lo(e)&&e.host||te(e);return Lo(t)?t.host:t}function Ua(e){const t=ve(e);return en(t)?e.ownerDocument?e.ownerDocument.body:e.body:Qt(t)&&Dn(t)?t:Ua(t)}function Cn(e,t,n){var i;t===void 0&&(t=[]),n===void 0&&(n=!0);const s=Ua(e),o=s===((i=e.ownerDocument)==null?void 0:i.body),r=Mt(s);if(o){const a=$s(r);return t.concat(r,r.visualViewport||[],Dn(s)?s:[],a&&n?Cn(a):[])}return t.concat(s,Cn(s,[],n))}function $s(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Xa(e){const t=Yt(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=Qt(e),o=s?e.offsetWidth:n,r=s?e.offsetHeight:i,a=bi(n)!==o||bi(i)!==r;return a&&(n=o,i=r),{width:n,height:i,$:a}}function to(e){return qt(e)?e:e.contextElement}function Xe(e){const t=to(e);if(!Qt(t))return xe(1);const n=t.getBoundingClientRect(),{width:i,height:s,$:o}=Xa(t);let r=(o?bi(n.width):n.width)/i,a=(o?bi(n.height):n.height)/s;return(!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}const Af=xe(0);function Ka(e){const t=Mt(e);return!Js()||!t.visualViewport?Af:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Pf(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Mt(e)?!1:t}function Te(e,t,n,i){t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),o=to(e);let r=xe(1);t&&(i?qt(i)&&(r=Xe(i)):r=Xe(e));const a=Pf(o,n,i)?Ka(o):xe(0);let l=(s.left+a.x)/r.x,c=(s.top+a.y)/r.y,u=s.width/r.x,f=s.height/r.y;if(o){const d=Mt(o),h=i&&qt(i)?Mt(i):i;let g=d,p=$s(g);for(;p&&i&&h!==g;){const m=Xe(p),_=p.getBoundingClientRect(),b=Yt(p),x=_.left+(p.clientLeft+parseFloat(b.paddingLeft))*m.x,v=_.top+(p.clientTop+parseFloat(b.paddingTop))*m.y;l*=m.x,c*=m.y,u*=m.x,f*=m.y,l+=x,c+=v,g=Mt(p),p=$s(g)}}return xi({width:u,height:f,x:l,y:c})}function Df(e){let{elements:t,rect:n,offsetParent:i,strategy:s}=e;const o=s==="fixed",r=te(i),a=t?zi(t.floating):!1;if(i===r||a&&o)return n;let l={scrollLeft:0,scrollTop:0},c=xe(1);const u=xe(0),f=Qt(i);if((f||!f&&!o)&&((an(i)!=="body"||Dn(r))&&(l=Hi(i)),Qt(i))){const d=Te(i);c=Xe(i),u.x=d.x+i.clientLeft,u.y=d.y+i.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+u.x,y:n.y*c.y-l.scrollTop*c.y+u.y}}function Of(e){return Array.from(e.getClientRects())}function As(e,t){const n=Hi(e).scrollLeft;return t?t.left+n:Te(te(e)).left+n}function Ff(e){const t=te(e),n=Hi(e),i=e.ownerDocument.body,s=De(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=De(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let r=-n.scrollLeft+As(e);const a=-n.scrollTop;return Yt(i).direction==="rtl"&&(r+=De(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:r,y:a}}function Ef(e,t){const n=Mt(e),i=te(e),s=n.visualViewport;let o=i.clientWidth,r=i.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;const c=Js();(!c||c&&t==="fixed")&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a,y:l}}function Lf(e,t){const n=Te(e,!0,t==="fixed"),i=n.top+e.clientTop,s=n.left+e.clientLeft,o=Qt(e)?Xe(e):xe(1),r=e.clientWidth*o.x,a=e.clientHeight*o.y,l=s*o.x,c=i*o.y;return{width:r,height:a,x:l,y:c}}function To(e,t,n){let i;if(t==="viewport")i=Ef(e,n);else if(t==="document")i=Ff(te(e));else if(qt(t))i=Lf(t,n);else{const s=Ka(e);i={...t,x:t.x-s.x,y:t.y-s.y}}return xi(i)}function Qa(e,t){const n=ve(e);return n===t||!qt(n)||en(n)?!1:Yt(n).position==="fixed"||Qa(n,t)}function Tf(e,t){const n=t.get(e);if(n)return n;let i=Cn(e,[],!1).filter(a=>qt(a)&&an(a)!=="body"),s=null;const o=Yt(e).position==="fixed";let r=o?ve(e):e;for(;qt(r)&&!en(r);){const a=Yt(r),l=Zs(r);!l&&a.position==="fixed"&&(s=null),(o?!l&&!s:!l&&a.position==="static"&&!!s&&["absolute","fixed"].includes(s.position)||Dn(r)&&!l&&Qa(e,r))?i=i.filter(u=>u!==r):s=a,r=ve(r)}return t.set(e,i),i}function If(e){let{element:t,boundary:n,rootBoundary:i,strategy:s}=e;const r=[...n==="clippingAncestors"?zi(t)?[]:Tf(t,this._c):[].concat(n),i],a=r[0],l=r.reduce((c,u)=>{const f=To(t,u,s);return c.top=De(f.top,c.top),c.right=_i(f.right,c.right),c.bottom=_i(f.bottom,c.bottom),c.left=De(f.left,c.left),c},To(t,a,s));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Vf(e){const{width:t,height:n}=Xa(e);return{width:t,height:n}}function zf(e,t,n){const i=Qt(t),s=te(t),o=n==="fixed",r=Te(e,!0,o,t);let a={scrollLeft:0,scrollTop:0};const l=xe(0);if(i||!i&&!o)if((an(t)!=="body"||Dn(s))&&(a=Hi(t)),i){const h=Te(t,!0,o,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else s&&(l.x=As(s));let c=0,u=0;if(s&&!i&&!o){const h=s.getBoundingClientRect();u=h.top+a.scrollTop,c=h.left+a.scrollLeft-As(s,h)}const f=r.left+a.scrollLeft-l.x-c,d=r.top+a.scrollTop-l.y-u;return{x:f,y:d,width:r.width,height:r.height}}function is(e){return Yt(e).position==="static"}function Io(e,t){if(!Qt(e)||Yt(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return te(e)===n&&(n=n.ownerDocument.body),n}function Za(e,t){const n=Mt(e);if(zi(e))return n;if(!Qt(e)){let s=ve(e);for(;s&&!en(s);){if(qt(s)&&!is(s))return s;s=ve(s)}return n}let i=Io(e,t);for(;i&&Rf(i)&&is(i);)i=Io(i,t);return i&&en(i)&&is(i)&&!Zs(i)?n:i||$f(e)||n}const Hf=async function(e){const t=this.getOffsetParent||Za,n=this.getDimensions,i=await n(e.floating);return{reference:zf(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function Nf(e){return Yt(e).direction==="rtl"}const Bf={convertOffsetParentRelativeRectToViewportRelativeRect:Df,getDocumentElement:te,getClippingRect:If,getOffsetParent:Za,getElementRects:Hf,getClientRects:Of,getDimensions:Vf,getScale:Xe,isElement:qt,isRTL:Nf};function jf(e,t){let n=null,i;const s=te(e);function o(){var a;clearTimeout(i),(a=n)==null||a.disconnect(),n=null}function r(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),o();const{left:c,top:u,width:f,height:d}=e.getBoundingClientRect();if(a||t(),!f||!d)return;const h=Hn(u),g=Hn(s.clientWidth-(c+f)),p=Hn(s.clientHeight-(u+d)),m=Hn(c),b={rootMargin:-h+"px "+-g+"px "+-p+"px "+-m+"px",threshold:De(0,_i(1,l))||1};let x=!0;function v(y){const M=y[0].intersectionRatio;if(M!==l){if(!x)return r();M?r(!1,M):i=setTimeout(()=>{r(!1,1e-7)},1e3)}x=!1}try{n=new IntersectionObserver(v,{...b,root:s.ownerDocument})}catch{n=new IntersectionObserver(v,b)}n.observe(e)}return r(!0),o}function Wf(e,t,n,i){i===void 0&&(i={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:r=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=i,c=to(e),u=s||o?[...c?Cn(c):[],...Cn(t)]:[];u.forEach(_=>{s&&_.addEventListener("scroll",n,{passive:!0}),o&&_.addEventListener("resize",n)});const f=c&&a?jf(c,n):null;let d=-1,h=null;r&&(h=new ResizeObserver(_=>{let[b]=_;b&&b.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var x;(x=h)==null||x.observe(t)})),n()}),c&&!l&&h.observe(c),h.observe(t));let g,p=l?Te(e):null;l&&m();function m(){const _=Te(e);p&&(_.x!==p.x||_.y!==p.y||_.width!==p.width||_.height!==p.height)&&n(),p=_,g=requestAnimationFrame(m)}return n(),()=>{var _;u.forEach(b=>{s&&b.removeEventListener("scroll",n),o&&b.removeEventListener("resize",n)}),f==null||f(),(_=h)==null||_.disconnect(),h=null,l&&cancelAnimationFrame(g)}}const Gf=Mf,qf=kf,Yf=Sf,Uf=(e,t,n)=>{const i=new Map,s={platform:Bf,...n},o={...s.platform,_c:i};return wf(e,t,{...s,platform:o})};function Xf(e){let t,n;const i={autoUpdate:!0};let s=e;const o=u=>({...i,...e||{},...u||{}}),r=u=>{t&&n&&(s=o(u),Uf(t,n,s).then(f=>{Object.assign(n.style,{position:f.strategy,left:`${f.x}px`,top:`${f.y}px`}),s!=null&&s.onComputed&&s.onComputed(f)}))},a=u=>{if("subscribe"in u)return c(u),{};t=u,r()},l=(u,f)=>{let d;n=u,s=o(f),setTimeout(()=>r(f),0),r(f);const h=()=>{d&&(d(),d=void 0)},g=({autoUpdate:p}=s||{})=>{h(),p!==!1&&Gs().then(()=>Wf(t,n,()=>r(s),p===!0?{}:p))};return d=g(),{update(p){r(p),d=g(p)},destroy(){h()}}},c=u=>{const f=u.subscribe(d=>{t===void 0?(t=d,r()):(Object.assign(t,d),r())});rn(f)};return[a,l,r]}function Kf(e){const t=e-1;return t*t*t+1}function Vo(e,{delay:t=0,duration:n=400,easing:i=ha}={}){const s=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:i,css:o=>`opacity: ${o*s}`}}function zo(e,{delay:t=0,duration:n=400,easing:i=Kf,start:s=0,opacity:o=0}={}){const r=getComputedStyle(e),a=+r.opacity,l=r.transform==="none"?"":r.transform,c=1-s,u=a*(1-o);return{delay:t,duration:n,easing:i,css:(f,d)=>` + transform: ${l} scale(${1-c*d}); + opacity: ${a-u*d} + `}}function Qf(e){let t,n,i,s,o;const r=e[2].default,a=At(r,e,e[1],null);return{c(){t=D("div"),a&&a.c(),t.hidden=!0},m(l,c){nt(l,t,c),a&&a.m(t,null),i=!0,s||(o=Bs(n=Zf.call(null,t,e[0])),s=!0)},p(l,[c]){a&&a.p&&(!i||c&2)&&Dt(a,r,l,l[1],i?Pt(r,l[1],c,null):Ot(l[1]),null),n&&le(n.update)&&c&1&&n.update.call(null,l[0])},i(l){i||(S(a,l),i=!0)},o(l){C(a,l),i=!1},d(l){l&&X(t),a&&a.d(l),s=!1,o()}}}function Zf(e,t="body"){let n;async function i(o){if(t=o,typeof t=="string"){if(n=document.querySelector(t),n===null&&(await Gs(),n=document.querySelector(t)),n===null)throw new Error(`No element found matching css selector: "${t}"`)}else if(t instanceof HTMLElement)n=t;else throw new TypeError(`Unknown portal target type: ${t===null?"null":typeof t}. Allowed types: string (CSS selector) or HTMLElement.`);n.appendChild(e),e.hidden=!1}function s(){e.parentNode&&e.parentNode.removeChild(e)}return i(t),{update:i,destroy:s}}function Jf(e,t,n){let{$$slots:i={},$$scope:s}=t,{target:o="body"}=t;return e.$$set=r=>{"target"in r&&n(0,o=r.target),"$$scope"in r&&n(1,s=r.$$scope)},[o,s,i]}class td extends K{constructor(t){super(),Q(this,t,Jf,Qf,U,{target:0})}}const ed=e=>({}),Ho=e=>({floatingRef:e[3],displayTooltip:e[5],hideTooltip:e[6]});function No(e){let t,n;return t=new td({props:{target:"body",$$slots:{default:[nd]},$$scope:{ctx:e}}}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},p(i,s){const o={};s&257&&(o.$$scope={dirty:s,ctx:i}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function nd(e){let t,n,i,s,o,r;return{c(){t=D("div"),n=Z(e[0]),F(t,"class","absolute p-2 text-sm bg-dark-50 text-dark-400 rounded-md max-w-xl font-main")},m(a,l){nt(a,t,l),w(t,n),s=!0,o||(r=Bs(e[4].call(null,t)),o=!0)},p(a,l){(!s||l&1)&&Wt(n,a[0])},i(a){s||(Je(()=>{s&&(i||(i=di(t,Vo,{duration:150},!0)),i.run(1))}),s=!0)},o(a){i||(i=di(t,Vo,{duration:150},!1)),i.run(0),s=!1},d(a){a&&X(t),a&&i&&i.end(),o=!1,r()}}}function id(e){let t,n,i;const s=e[7].default,o=At(s,e,e[8],Ho);let r=e[2]&&!e[1]&&No(e);return{c(){o&&o.c(),t=Y(),r&&r.c(),n=Pn()},m(a,l){o&&o.m(a,l),nt(a,t,l),r&&r.m(a,l),nt(a,n,l),i=!0},p(a,[l]){o&&o.p&&(!i||l&256)&&Dt(o,s,a,a[8],i?Pt(s,a[8],l,ed):Ot(a[8]),Ho),a[2]&&!a[1]?r?(r.p(a,l),l&6&&S(r,1)):(r=No(a),r.c(),S(r,1),r.m(n.parentNode,n)):r&&(kt(),C(r,1,1,()=>{r=null}),Rt())},i(a){i||(S(o,a),S(r),i=!0)},o(a){C(o,a),C(r),i=!1},d(a){o&&o.d(a),a&&X(t),r&&r.d(a),a&&X(n)}}}function sd(e,t,n){let{$$slots:i={},$$scope:s}=t,{content:o}=t,{disabled:r}=t;const[a,l]=Xf({strategy:"absolute",placement:"top",middleware:[Gf(6),Yf(),qf()]});let c=!1,u;const f=()=>{r||(clearTimeout(u),u=setTimeout(()=>{n(2,c=!0)},300))},d=()=>{r||(clearTimeout(u),n(2,c=!1))};return e.$$set=h=>{"content"in h&&n(0,o=h.content),"disabled"in h&&n(1,r=h.disabled),"$$scope"in h&&n(8,s=h.$$scope)},[o,r,c,a,l,f,d,i,s]}class od extends K{constructor(t){super(),Q(this,t,sd,id,U,{content:0,disabled:1})}}function Bo(e,t,n){const i=e.slice();return i[10]=t[n],i}function jo(e,t,n){const i=e.slice();return i[13]=t[n],i}function Wo(e,t,n){const i=e.slice();return i[19]=t[n],i}function Go(e,t,n){const i=e.slice();return i[22]=t[n],i}function qo(e){let t,n,i,s,o,r,a,l,c,u;var f=mi(e[22].column.columnDef.header,e[22].getContext());function d(m){return{}}f&&(n=be(f,d()));const h=[ad,rd],g=[];function p(m,_){return _&1&&(s=null),_&1&&(o=null),s==null&&(s=m[22].column.getIsSorted()==="asc"),s?0:(o==null&&(o=m[22].column.getIsSorted()==="desc"),o?1:-1)}return~(r=p(e,-1))&&(a=g[r]=h[r](e)),{c(){t=D("button"),n&&I(n.$$.fragment),i=Y(),a&&a.c(),F(t,"class","flex w-full items-center justify-center gap-1"),Tn(t,"cursor-pointer",e[22].column.getCanSort()),Tn(t,"select-none",e[22].column.getCanSort())},m(m,_){nt(m,t,_),n&&E(n,t,null),w(t,i),~r&&g[r].m(t,null),l=!0,c||(u=It(t,"click",function(){le(e[22].column.getToggleSortingHandler())&&e[22].column.getToggleSortingHandler().apply(this,arguments)}),c=!0)},p(m,_){if(e=m,_&1&&f!==(f=mi(e[22].column.columnDef.header,e[22].getContext()))){if(n){kt();const x=n;C(x.$$.fragment,1,0,()=>{L(x,1)}),Rt()}f?(n=be(f,d()),I(n.$$.fragment),S(n.$$.fragment,1),E(n,t,i)):n=null}let b=r;r=p(e,_),r!==b&&(a&&(kt(),C(g[b],1,1,()=>{g[b]=null}),Rt()),~r?(a=g[r],a||(a=g[r]=h[r](e),a.c()),S(a,1),a.m(t,null)):a=null),(!l||_&1)&&Tn(t,"cursor-pointer",e[22].column.getCanSort()),(!l||_&1)&&Tn(t,"select-none",e[22].column.getCanSort())},i(m){l||(n&&S(n.$$.fragment,m),S(a),l=!0)},o(m){n&&C(n.$$.fragment,m),C(a),l=!1},d(m){m&&X(t),n&&L(n),~r&&g[r].d(),c=!1,u()}}}function rd(e){let t,n;return t=new mu({}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function ad(e){let t,n;return t=new vu({}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function Yo(e){let t,n,i,s=!e[22].isPlaceholder&&qo(e);return{c(){t=D("th"),s&&s.c(),F(t,"class",n=`bg-dark-600 select-none p-1 ${e[22].id==="executionTime"?"w-1/4":"w-3/4"}`)},m(o,r){nt(o,t,r),s&&s.m(t,null),i=!0},p(o,r){o[22].isPlaceholder?s&&(kt(),C(s,1,1,()=>{s=null}),Rt()):s?(s.p(o,r),r&1&&S(s,1)):(s=qo(o),s.c(),S(s,1),s.m(t,null)),(!i||r&1&&n!==(n=`bg-dark-600 select-none p-1 ${o[22].id==="executionTime"?"w-1/4":"w-3/4"}`))&&F(t,"class",n)},i(o){i||(S(s),i=!0)},o(o){C(s),i=!1},d(o){o&&X(t),s&&s.d()}}}function Uo(e){let t,n,i,s=e[19].headers,o=[];for(let a=0;aC(o[a],1,1,()=>{o[a]=null});return{c(){t=D("tr");for(let a=0;a{L(f,1)}),Rt()}a?(n=be(a,l()),I(n.$$.fragment),S(n.$$.fragment,1),E(n,t,null)):n=null}(!s||u&1&&i!==(i=`${e[13].column.id==="executionTime"&&"text-center"} bg-dark-700 p-2 ${e[10].original.slow&&"text-yellow-500"} max-w-[200px] truncate`))&&F(t,"class",i)},i(c){s||(n&&S(n.$$.fragment,c),s=!0)},o(c){n&&C(n.$$.fragment,c),s=!1},d(c){c&&X(t),n&&L(n),o=!1,Zt(r)}}}function Xo(e){let t,n;return t=new od({props:{content:e[13].getValue(),disabled:e[13].column.id!=="query",$$slots:{default:[ld,({floatingRef:i,displayTooltip:s,hideTooltip:o})=>({16:i,17:s,18:o}),({floatingRef:i,displayTooltip:s,hideTooltip:o})=>(i?65536:0)|(s?131072:0)|(o?262144:0)]},$$scope:{ctx:e}}}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},p(i,s){const o={};s&1&&(o.content=i[13].getValue()),s&1&&(o.disabled=i[13].column.id!=="query"),s&33947649&&(o.$$scope={dirty:s,ctx:i}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function Ko(e){let t,n,i,s=e[10].getVisibleCells(),o=[];for(let a=0;aC(o[a],1,1,()=>{o[a]=null});return{c(){t=D("tr");for(let a=0;aC(l[h],1,1,()=>{l[h]=null});let u=e[0].getRowModel().rows,f=[];for(let h=0;hC(f[h],1,1,()=>{f[h]=null});return{c(){t=D("div"),n=D("table"),i=D("thead");for(let h=0;hn(4,i=h)),gt(e,ii,h=>n(5,s=h));const r=Us(),a=[{accessorKey:"query",header:"Query",cell:h=>h.getValue(),enableSorting:!0},{accessorKey:"executionTime",header:"Time (ms)",cell:h=>h.getValue().toFixed(4),enableSorting:!0}];let l=[];const c=h=>{h instanceof Function?n(2,l=h(l)):n(2,l=h),u.update(g=>({...g,state:{...g.state,sorting:l}}))},u=Ft({data:s,columns:a,manualPagination:!0,manualSorting:!0,pageCount:-1,getCoreRowModel:ef(),onSortingChange:c,state:{sorting:l}}),f=hf(u);gt(e,f,h=>n(0,o=h));let d;return e.$$.update=()=>{e.$$.dirty&32&&u.update(h=>({...h,data:s})),e.$$.dirty&28&&(clearTimeout(d),n(3,d=setTimeout(()=>{Da("fetchResource",{resource:r.params.resource,pageIndex:i.page,search:i.search,sortBy:l})},300)))},[o,f,l,d,i,s]}class fd extends K{constructor(t){super(),Q(this,t,ud,cd,U,{})}}function dd(e){let t,n,i,s,o,r,a,l,c,u=e[0].resourceQueriesCount+"",f,d,h,g,p=e[0].resourceTime.toFixed(4)+"",m,_,b,x,v,y=e[0].resourceSlowQueries+"",M,k,$,P;return i=new Oa({}),{c(){t=D("div"),n=D("button"),I(i.$$.fragment),s=Y(),o=D("p"),o.textContent=`${e[1].params.resource}`,r=Y(),a=D("div"),l=D("p"),c=Z("Queries: "),f=Z(u),d=Y(),h=D("p"),g=Z("Time: "),m=Z(p),_=Z(" ms"),b=Y(),x=D("p"),v=Z("Slow queries: "),M=Z(y),F(n,"class","flex p-2 w-12 bg-dark-600 text-dark-100 hover:text-white rounded-md justify-center items-center hover:bg-dark-500 outline-none border-[1px] border-transparent focus-visible:border-cyan-600"),F(o,"class","text-center text-lg"),F(x,"class","text-yellow-500"),F(a,"class","text-end text-dark-100 flex flex-col text-xs"),F(t,"class","p-4 grid grid-flow-col grid-cols-3 items-center ")},m(O,R){nt(O,t,R),w(t,n),E(i,n,null),w(t,s),w(t,o),w(t,r),w(t,a),w(a,l),w(l,c),w(l,f),w(a,d),w(a,h),w(h,g),w(h,m),w(h,_),w(a,b),w(a,x),w(x,v),w(x,M),k=!0,$||(P=It(n,"click",e[2]),$=!0)},p(O,[R]){(!k||R&1)&&u!==(u=O[0].resourceQueriesCount+"")&&Wt(f,u),(!k||R&1)&&p!==(p=O[0].resourceTime.toFixed(4)+"")&&Wt(m,p),(!k||R&1)&&y!==(y=O[0].resourceSlowQueries+"")&&Wt(M,y)},i(O){k||(S(i.$$.fragment,O),k=!0)},o(O){C(i.$$.fragment,O),k=!1},d(O){O&&X(t),L(i),$=!1,P()}}}function hd(e,t,n){let i;gt(e,ws,r=>n(0,i=r));const s=Us();return[i,s,()=>Ee.goto("/")]}class gd extends K{constructor(t){super(),Q(this,t,hd,dd,U,{})}}function Ja(e,t){const n=i=>{const{action:s,data:o}=i.data;s===e&&t(o)};Li(()=>window.addEventListener("message",n)),rn(()=>window.removeEventListener("message",n))}const tl=()=>!window.invokeNative,el=(e,t=1e3)=>{if(tl())for(const n of e)setTimeout(()=>{window.dispatchEvent(new MessageEvent("message",{data:{action:n.action,data:n.data}}))},t)};function pd(e){let t,n,i,s,o,r,a,l;var c=e[0];function u(f){return{props:{class:"text-dark-300"}}}return c&&(i=be(c,u())),{c(){t=D("div"),n=D("div"),i&&I(i.$$.fragment),s=Y(),o=D("input"),F(n,"class","pr-2"),F(o,"type","text"),F(o,"class","w-full bg-transparent outline-none"),F(o,"placeholder","Search queries..."),F(t,"class","bg-dark-600 m-4 mt-0 flex items-center rounded-md border-[1px] border-transparent p-2 outline-none transition-all duration-100 focus-within:border-cyan-600")},m(f,d){nt(f,t,d),w(t,n),i&&E(i,n,null),w(t,s),w(t,o),ci(o,e[1]),r=!0,a||(l=It(o,"input",e[2]),a=!0)},p(f,[d]){if(d&1&&c!==(c=f[0])){if(i){kt();const h=i;C(h.$$.fragment,1,0,()=>{L(h,1)}),Rt()}c?(i=be(c,u()),I(i.$$.fragment),S(i.$$.fragment,1),E(i,n,null)):i=null}d&2&&o.value!==f[1]&&ci(o,f[1])},i(f){r||(i&&S(i.$$.fragment,f),r=!0)},o(f){i&&C(i.$$.fragment,f),r=!1},d(f){f&&X(t),i&&L(i),a=!1,l()}}}function md(e,t,n){let i;gt(e,Bt,a=>n(3,i=a));let s="",{icon:o}=t;function r(){s=this.value,n(1,s)}return e.$$set=a=>{"icon"in a&&n(0,o=a.icon)},e.$$.update=()=>{e.$$.dirty&2&&(mt(Bt,i.search=s,i),mt(Bt,i.page=0,i))},[o,s,r]}class _d extends K{constructor(t){super(),Q(this,t,md,pd,U,{icon:0})}}function bd(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function yd(e){let t,n;const i=[{name:"search"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[bd]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class vd extends K{constructor(t){super(),Q(this,t,xd,yd,U,{})}}const nl=vd;function wd(e){let t,n,i,s,o,r,a,l,c,u;return i=new gd({}),o=new _d({props:{icon:nl}}),a=new fd({}),c=new fu({props:{maxPage:e[0]}}),{c(){t=D("div"),n=D("div"),I(i.$$.fragment),s=Y(),I(o.$$.fragment),r=Y(),I(a.$$.fragment),l=Y(),I(c.$$.fragment),F(t,"class","flex w-full flex-col justify-between")},m(f,d){nt(f,t,d),w(t,n),E(i,n,null),w(n,s),E(o,n,null),w(n,r),E(a,n,null),w(t,l),E(c,t,null),u=!0},p(f,[d]){const h={};d&1&&(h.maxPage=f[0]),c.$set(h)},i(f){u||(S(i.$$.fragment,f),S(o.$$.fragment,f),S(a.$$.fragment,f),S(c.$$.fragment,f),u=!0)},o(f){C(i.$$.fragment,f),C(o.$$.fragment,f),C(a.$$.fragment,f),C(c.$$.fragment,f),u=!1},d(f){f&&X(t),L(i),L(o),L(a),L(c)}}}function Sd(e,t,n){let i,s,o;gt(e,ws,a=>n(1,i=a)),gt(e,ii,a=>n(2,s=a)),gt(e,Bt,a=>n(3,o=a));let r=0;return rn(()=>{mt(ii,s=[],s),mt(Bt,o.page=0,o)}),el([{action:"loadResource",data:{queries:[{query:"SELECT * FROM users WHERE ID = 1",executionTime:3,slow:!1,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:23,slow:!0,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:15,slow:!1,date:Date.now()},{query:"SELECT * FROM users WHERE ID = 1",executionTime:122,slow:!0,date:Date.now()}],resourceQueriesCount:3,resourceSlowQueries:2,resourceTime:1342,pageCount:3}}]),Ja("loadResource",a=>{n(0,r=a.pageCount),mt(ii,s=a.queries,s),mt(ws,i={resourceQueriesCount:a.resourceQueriesCount,resourceSlowQueries:a.resourceSlowQueries,resourceTime:a.resourceTime},i)}),[r]}class Cd extends K{constructor(t){super(),Q(this,t,Sd,wd,U,{})}}function Md(e){let t,n,i,s,o,r,a,l;var c=e[1];function u(f){return{props:{class:"text-dark-300"}}}return c&&(i=be(c,u())),{c(){t=D("div"),n=D("div"),i&&I(i.$$.fragment),s=Y(),o=D("input"),F(n,"class","pr-2"),F(o,"type","text"),F(o,"class","bg-transparent outline-none w-full"),F(o,"placeholder","Search resources..."),F(t,"class","p-2 flex items-center outline-none border-[1px] border-transparent transition-all duration-100 focus-within:border-cyan-600 rounded-md bg-dark-600")},m(f,d){nt(f,t,d),w(t,n),i&&E(i,n,null),w(t,s),w(t,o),ci(o,e[0]),r=!0,a||(l=It(o,"input",e[2]),a=!0)},p(f,[d]){if(d&2&&c!==(c=f[1])){if(i){kt();const h=i;C(h.$$.fragment,1,0,()=>{L(h,1)}),Rt()}c?(i=be(c,u()),I(i.$$.fragment),S(i.$$.fragment,1),E(i,n,null)):i=null}d&1&&o.value!==f[0]&&ci(o,f[0])},i(f){r||(i&&S(i.$$.fragment,f),r=!0)},o(f){i&&C(i.$$.fragment,f),r=!1},d(f){f&&X(t),i&&L(i),a=!1,l()}}}function kd(e,t,n){let{icon:i}=t,{value:s}=t;function o(){s=this.value,n(0,s)}return e.$$set=r=>{"icon"in r&&n(1,i=r.icon),"value"in r&&n(0,s=r.value)},[s,i,o]}class Rd extends K{constructor(t){super(),Q(this,t,kd,Md,U,{icon:1,value:0})}}function $d(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function Ad(e){let t,n;const i=[{name:"file-analytics"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[$d]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class Dd extends K{constructor(t){super(),Q(this,t,Pd,Ad,U,{})}}const Od=Dd;function Fd(e){let t;const n=e[2].default,i=At(n,e,e[3],null);return{c(){i&&i.c()},m(s,o){i&&i.m(s,o),t=!0},p(s,o){i&&i.p&&(!t||o&8)&&Dt(i,n,s,s[3],t?Pt(n,s[3],o,null):Ot(s[3]),null)},i(s){t||(S(i,s),t=!0)},o(s){C(i,s),t=!1},d(s){i&&i.d(s)}}}function Ed(e){let t,n;const i=[{name:"source-code"},e[1],{iconNode:e[0]}];let s={$$slots:{default:[Fd]},$$scope:{ctx:e}};for(let o=0;o{n(1,t=z(z({},t),et(r))),"$$scope"in r&&n(3,s=r.$$scope)},t=et(t),[o,t,i,s]}class Td extends K{constructor(t){super(),Q(this,t,Ld,Ed,U,{})}}const Id=Td;/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function On(e){return e+.5|0}const ge=(e,t,n)=>Math.max(Math.min(e,n),t);function pn(e){return ge(On(e*2.55),0,255)}function _e(e){return ge(On(e*255),0,255)}function re(e){return ge(On(e/2.55)/100,0,1)}function Qo(e){return ge(On(e*100),0,100)}const Tt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Ps=[..."0123456789ABCDEF"],Vd=e=>Ps[e&15],zd=e=>Ps[(e&240)>>4]+Ps[e&15],Nn=e=>(e&240)>>4===(e&15),Hd=e=>Nn(e.r)&&Nn(e.g)&&Nn(e.b)&&Nn(e.a);function Nd(e){var t=e.length,n;return e[0]==="#"&&(t===4||t===5?n={r:255&Tt[e[1]]*17,g:255&Tt[e[2]]*17,b:255&Tt[e[3]]*17,a:t===5?Tt[e[4]]*17:255}:(t===7||t===9)&&(n={r:Tt[e[1]]<<4|Tt[e[2]],g:Tt[e[3]]<<4|Tt[e[4]],b:Tt[e[5]]<<4|Tt[e[6]],a:t===9?Tt[e[7]]<<4|Tt[e[8]]:255})),n}const Bd=(e,t)=>e<255?t(e):"";function jd(e){var t=Hd(e)?Vd:zd;return e?"#"+t(e.r)+t(e.g)+t(e.b)+Bd(e.a,t):void 0}const Wd=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function il(e,t,n){const i=t*Math.min(n,1-n),s=(o,r=(o+e/30)%12)=>n-i*Math.max(Math.min(r-3,9-r,1),-1);return[s(0),s(8),s(4)]}function Gd(e,t,n){const i=(s,o=(s+e/60)%6)=>n-n*t*Math.max(Math.min(o,4-o,1),0);return[i(5),i(3),i(1)]}function qd(e,t,n){const i=il(e,1,.5);let s;for(t+n>1&&(s=1/(t+n),t*=s,n*=s),s=0;s<3;s++)i[s]*=1-t-n,i[s]+=t;return i}function Yd(e,t,n,i,s){return e===s?(t-n)/i+(t.5?u/(2-o-r):u/(o+r),l=Yd(n,i,s,u,o),l=l*60+.5),[l|0,c||0,a]}function no(e,t,n,i){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,n,i)).map(_e)}function io(e,t,n){return no(il,e,t,n)}function Ud(e,t,n){return no(qd,e,t,n)}function Xd(e,t,n){return no(Gd,e,t,n)}function sl(e){return(e%360+360)%360}function Kd(e){const t=Wd.exec(e);let n=255,i;if(!t)return;t[5]!==i&&(n=t[6]?pn(+t[5]):_e(+t[5]));const s=sl(+t[2]),o=+t[3]/100,r=+t[4]/100;return t[1]==="hwb"?i=Ud(s,o,r):t[1]==="hsv"?i=Xd(s,o,r):i=io(s,o,r),{r:i[0],g:i[1],b:i[2],a:n}}function Qd(e,t){var n=eo(e);n[0]=sl(n[0]+t),n=io(n),e.r=n[0],e.g=n[1],e.b=n[2]}function Zd(e){if(!e)return;const t=eo(e),n=t[0],i=Qo(t[1]),s=Qo(t[2]);return e.a<255?`hsla(${n}, ${i}%, ${s}%, ${re(e.a)})`:`hsl(${n}, ${i}%, ${s}%)`}const Zo={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Jo={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Jd(){const e={},t=Object.keys(Jo),n=Object.keys(Zo);let i,s,o,r,a;for(i=0;i>16&255,o>>8&255,o&255]}return e}let Bn;function th(e){Bn||(Bn=Jd(),Bn.transparent=[0,0,0,0]);const t=Bn[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const eh=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function nh(e){const t=eh.exec(e);let n=255,i,s,o;if(t){if(t[7]!==i){const r=+t[7];n=t[8]?pn(r):ge(r*255,0,255)}return i=+t[1],s=+t[3],o=+t[5],i=255&(t[2]?pn(i):ge(i,0,255)),s=255&(t[4]?pn(s):ge(s,0,255)),o=255&(t[6]?pn(o):ge(o,0,255)),{r:i,g:s,b:o,a:n}}}function ih(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${re(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const ss=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,Be=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function sh(e,t,n){const i=Be(re(e.r)),s=Be(re(e.g)),o=Be(re(e.b));return{r:_e(ss(i+n*(Be(re(t.r))-i))),g:_e(ss(s+n*(Be(re(t.g))-s))),b:_e(ss(o+n*(Be(re(t.b))-o))),a:e.a+n*(t.a-e.a)}}function jn(e,t,n){if(e){let i=eo(e);i[t]=Math.max(0,Math.min(i[t]+i[t]*n,t===0?360:1)),i=io(i),e.r=i[0],e.g=i[1],e.b=i[2]}}function ol(e,t){return e&&Object.assign(t||{},e)}function tr(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=_e(e[3]))):(t=ol(e,{r:0,g:0,b:0,a:1}),t.a=_e(t.a)),t}function oh(e){return e.charAt(0)==="r"?nh(e):Kd(e)}class Mn{constructor(t){if(t instanceof Mn)return t;const n=typeof t;let i;n==="object"?i=tr(t):n==="string"&&(i=Nd(t)||th(t)||oh(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=ol(this._rgb);return t&&(t.a=re(t.a)),t}set rgb(t){this._rgb=tr(t)}rgbString(){return this._valid?ih(this._rgb):void 0}hexString(){return this._valid?jd(this._rgb):void 0}hslString(){return this._valid?Zd(this._rgb):void 0}mix(t,n){if(t){const i=this.rgb,s=t.rgb;let o;const r=n===o?.5:n,a=2*r-1,l=i.a-s.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;o=1-c,i.r=255&c*i.r+o*s.r+.5,i.g=255&c*i.g+o*s.g+.5,i.b=255&c*i.b+o*s.b+.5,i.a=r*i.a+(1-r)*s.a,this.rgb=i}return this}interpolate(t,n){return t&&(this._rgb=sh(this._rgb,t._rgb,n)),this}clone(){return new Mn(this.rgb)}alpha(t){return this._rgb.a=_e(t),this}clearer(t){const n=this._rgb;return n.a*=1-t,this}greyscale(){const t=this._rgb,n=On(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=n,this}opaquer(t){const n=this._rgb;return n.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return jn(this._rgb,2,t),this}darken(t){return jn(this._rgb,2,-t),this}saturate(t){return jn(this._rgb,1,t),this}desaturate(t){return jn(this._rgb,1,-t),this}rotate(t){return Qd(this._rgb,t),this}}/*! + * Chart.js v4.4.4 + * https://www.chartjs.org + * (c) 2024 Chart.js Contributors + * Released under the MIT License + */function ie(){}const rh=(()=>{let e=0;return()=>e++})();function J(e){return e===null||typeof e>"u"}function ot(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function W(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function dt(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function St(e,t){return dt(e)?e:t}function tt(e,t){return typeof e>"u"?t:e}const ah=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100:+e/t,rl=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t:+e;function at(e,t,n){if(e&&typeof e.call=="function")return e.apply(n,t)}function q(e,t,n,i){let s,o,r;if(ot(e))if(o=e.length,i)for(s=o-1;s>=0;s--)t.call(n,e[s],s);else for(s=0;se,x:e=>e.x,y:e=>e.y};function uh(e){const t=e.split("."),n=[];let i="";for(const s of t)i+=s,i.endsWith("\\")?i=i.slice(0,-1)+".":(n.push(i),i="");return n}function fh(e){const t=uh(e);return n=>{for(const i of t){if(i==="")break;n=n&&n[i]}return n}}function nn(e,t){return(er[t]||(er[t]=fh(t)))(e)}function so(e){return e.charAt(0).toUpperCase()+e.slice(1)}const Si=e=>typeof e<"u",we=e=>typeof e=="function",nr=(e,t)=>{if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0};function dh(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}const rt=Math.PI,lt=2*rt,Ci=Number.POSITIVE_INFINITY,hh=rt/180,ut=rt/2,Me=rt/4,ir=rt*2/3,pe=Math.log10,Mi=Math.sign;function si(e,t,n){return Math.abs(e-t)s-o).pop(),t}function ki(e){return!isNaN(parseFloat(e))&&isFinite(e)}function ph(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}function ll(e,t,n){let i,s,o;for(i=0,s=e.length;il&&c=Math.min(t,n)-i&&e<=Math.max(t,n)+i}function ro(e,t,n){n=n||(r=>e[r]1;)o=s+i>>1,n(o)?s=o:i=o;return{lo:s,hi:i}}const Ds=(e,t,n,i)=>ro(e,n,i?s=>{const o=e[s][t];return oe[s][t]ro(e,n,i=>e[i][t]>=n);function xh(e,t,n){let i=0,s=e.length;for(;ii&&e[s-1]>n;)s--;return i>0||s{const i="_onData"+so(n),s=e[n];Object.defineProperty(e,n,{configurable:!0,enumerable:!1,value(...o){const r=s.apply(this,o);return e._chartjs.listeners.forEach(a=>{typeof a[i]=="function"&&a[i](...o)}),r}})})}function rr(e,t){const n=e._chartjs;if(!n)return;const i=n.listeners,s=i.indexOf(t);s!==-1&&i.splice(s,1),!(i.length>0)&&(ul.forEach(o=>{delete e[o]}),delete e._chartjs)}function wh(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const fl=function(){return typeof window>"u"?function(e){return e()}:window.requestAnimationFrame}();function dl(e,t){let n=[],i=!1;return function(...s){n=s,i||(i=!0,fl.call(window,()=>{i=!1,e.apply(t,n)}))}}function Sh(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}const hl=e=>e==="start"?"left":e==="end"?"right":"center",xn=(e,t,n)=>e==="start"?t:e==="end"?n:(t+n)/2,Wn=e=>e===0||e===1,ar=(e,t,n)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-t)*lt/n)),lr=(e,t,n)=>Math.pow(2,-10*e)*Math.sin((e-t)*lt/n)+1,vn={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*ut)+1,easeOutSine:e=>Math.sin(e*ut),easeInOutSine:e=>-.5*(Math.cos(rt*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>Wn(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>Wn(e)?e:ar(e,.075,.3),easeOutElastic:e=>Wn(e)?e:lr(e,.075,.3),easeInOutElastic(e){return Wn(e)?e:e<.5?.5*ar(e*2,.1125,.45):.5+.5*lr(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-vn.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?vn.easeInBounce(e*2)*.5:vn.easeOutBounce(e*2-1)*.5+.5};function gl(e){if(e&&typeof e=="object"){const t=e.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function cr(e){return gl(e)?e:new Mn(e)}function os(e){return gl(e)?e:new Mn(e).saturate(.5).darken(.1).hexString()}const Ch=["x","y","borderWidth","radius","tension"],Mh=["color","borderColor","backgroundColor"];function kh(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),e.set("animations",{colors:{type:"color",properties:Mh},numbers:{type:"number",properties:Ch}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Rh(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const ur=new Map;function $h(e,t){t=t||{};const n=e+JSON.stringify(t);let i=ur.get(n);return i||(i=new Intl.NumberFormat(e,t),ur.set(n,i)),i}function Fn(e,t,n){return $h(t,n).format(e)}const pl={values(e){return ot(e)?e:""+e},numeric(e,t,n){if(e===0)return"0";const i=this.chart.options.locale;let s,o=e;if(n.length>1){const c=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(c<1e-4||c>1e15)&&(s="scientific"),o=Ah(e,n)}const r=pe(Math.abs(o)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:s,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Fn(e,i,l)},logarithmic(e,t,n){if(e===0)return"0";const i=n[t].significand||e/Math.pow(10,Math.floor(pe(e)));return[1,2,3,5,10,15].includes(i)||t>.8*n.length?pl.numeric.call(this,e,t,n):""}};function Ah(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e)),n}var Ni={formatters:pl};function Ph(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,n)=>n.lineWidth,tickColor:(t,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ni.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Ie=Object.create(null),Os=Object.create(null);function wn(e,t){if(!t)return e;const n=t.split(".");for(let i=0,s=n.length;ii.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,s)=>os(s.backgroundColor),this.hoverBorderColor=(i,s)=>os(s.borderColor),this.hoverColor=(i,s)=>os(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(n)}set(t,n){return rs(this,t,n)}get(t){return wn(this,t)}describe(t,n){return rs(Os,t,n)}override(t,n){return rs(Ie,t,n)}route(t,n,i,s){const o=wn(this,t),r=wn(this,i),a="_"+n;Object.defineProperties(o,{[a]:{value:o[n],writable:!0},[n]:{enumerable:!0,get(){const l=this[a],c=r[s];return W(l)?Object.assign({},c,l):tt(l,c)},set(l){this[a]=l}}})}apply(t){t.forEach(n=>n(this))}}var ft=new Dh({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[kh,Rh,Ph]);function Oh(e){return!e||J(e.size)||J(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function $i(e,t,n,i,s){let o=t[s];return o||(o=t[s]=e.measureText(s).width,n.push(s)),o>i&&(i=o),i}function Fh(e,t,n,i){i=i||{};let s=i.data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(s=i.data={},o=i.garbageCollect=[],i.font=t),e.save(),e.font=t;let r=0;const a=n.length;let l,c,u,f,d;for(l=0;ln.length){for(l=0;l0&&e.stroke()}}function Ge(e,t,n){return n=n||.5,!t||e&&e.x>t.left-n&&e.xt.top-n&&e.y0&&o.strokeColor!=="";let l,c;for(e.save(),e.font=s.string,Lh(e,o),l=0;l+e||0;function ao(e,t){const n={},i=W(t),s=i?Object.keys(t):t,o=W(e)?i?r=>tt(e[r],e[t[r]]):r=>e[r]:()=>e;for(const r of s)n[r]=Nh(o(r));return n}function Bh(e){return ao(e,{top:"y",right:"x",bottom:"y",left:"x"})}function Sn(e){return ao(e,["topLeft","topRight","bottomLeft","bottomRight"])}function $t(e){const t=Bh(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function _t(e,t){e=e||{},t=t||ft.font;let n=tt(e.size,t.size);typeof n=="string"&&(n=parseInt(n,10));let i=tt(e.style,t.style);i&&!(""+i).match(zh)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const s={family:tt(e.family,t.family),lineHeight:Hh(tt(e.lineHeight,t.lineHeight),n),size:n,style:i,weight:tt(e.weight,t.weight),string:""};return s.string=Oh(s),s}function Gn(e,t,n,i){let s=!0,o,r,a;for(o=0,r=e.length;on&&a===0?0:a+l;return{min:r(i,-Math.abs(o)),max:r(s,o)}}function Ve(e,t){return Object.assign(Object.create(e),t)}function lo(e,t=[""],n,i,s=()=>e[0]){const o=n||e;typeof i>"u"&&(i=vl("_fallback",e));const r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:o,_fallback:i,_getTarget:s,override:a=>lo([a,...e],t,o,i)};return new Proxy(r,{deleteProperty(a,l){return delete a[l],delete a._keys,delete e[0][l],!0},get(a,l){return yl(a,l,()=>Qh(l,t,e,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(a,l){return gr(a).includes(l)},ownKeys(a){return gr(a)},set(a,l,c){const u=a._storage||(a._storage=s());return a[l]=u[l]=c,delete a._keys,!0}})}function sn(e,t,n,i){const s={_cacheable:!1,_proxy:e,_context:t,_subProxy:n,_stack:new Set,_descriptors:bl(e,i),setContext:o=>sn(e,o,n,i),override:o=>sn(e.override(o),t,n,i)};return new Proxy(s,{deleteProperty(o,r){return delete o[r],delete e[r],!0},get(o,r,a){return yl(o,r,()=>Gh(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(e,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,r)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(o,r){return Reflect.has(e,r)},ownKeys(){return Reflect.ownKeys(e)},set(o,r,a){return e[r]=a,delete o[r],!0}})}function bl(e,t={scriptable:!0,indexable:!0}){const{_scriptable:n=t.scriptable,_indexable:i=t.indexable,_allKeys:s=t.allKeys}=e;return{allKeys:s,scriptable:n,indexable:i,isScriptable:we(n)?n:()=>n,isIndexable:we(i)?i:()=>i}}const Wh=(e,t)=>e?e+so(t):t,co=(e,t)=>W(t)&&e!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function yl(e,t,n){if(Object.prototype.hasOwnProperty.call(e,t)||t==="constructor")return e[t];const i=n();return e[t]=i,i}function Gh(e,t,n){const{_proxy:i,_context:s,_subProxy:o,_descriptors:r}=e;let a=i[t];return we(a)&&r.isScriptable(t)&&(a=qh(t,a,e,n)),ot(a)&&a.length&&(a=Yh(t,a,e,r.isIndexable)),co(t,a)&&(a=sn(a,s,o&&o[t],r)),a}function qh(e,t,n,i){const{_proxy:s,_context:o,_subProxy:r,_stack:a}=n;if(a.has(e))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+e);a.add(e);let l=t(o,r||i);return a.delete(e),co(e,l)&&(l=uo(s._scopes,s,e,l)),l}function Yh(e,t,n,i){const{_proxy:s,_context:o,_subProxy:r,_descriptors:a}=n;if(typeof o.index<"u"&&i(e))return t[o.index%t.length];if(W(t[0])){const l=t,c=s._scopes.filter(u=>u!==l);t=[];for(const u of l){const f=uo(c,s,e,u);t.push(sn(f,o,r&&r[e],a))}}return t}function xl(e,t,n){return we(e)?e(t,n):e}const Uh=(e,t)=>e===!0?t:typeof e=="string"?nn(t,e):void 0;function Xh(e,t,n,i,s){for(const o of t){const r=Uh(n,o);if(r){e.add(r);const a=xl(r._fallback,n,s);if(typeof a<"u"&&a!==n&&a!==i)return a}else if(r===!1&&typeof i<"u"&&n!==i)return null}return!1}function uo(e,t,n,i){const s=t._rootScopes,o=xl(t._fallback,n,i),r=[...e,...s],a=new Set;a.add(i);let l=hr(a,r,n,o||n,i);return l===null||typeof o<"u"&&o!==n&&(l=hr(a,r,o,l,i),l===null)?!1:lo(Array.from(a),[""],s,o,()=>Kh(t,n,i))}function hr(e,t,n,i,s){for(;n;)n=Xh(e,t,n,i,s);return n}function Kh(e,t,n){const i=e._getTarget();t in i||(i[t]={});const s=i[t];return ot(s)&&W(n)?n:s||{}}function Qh(e,t,n,i){let s;for(const o of t)if(s=vl(Wh(o,e),n),typeof s<"u")return co(e,s)?uo(n,i,e,s):s}function vl(e,t){for(const n of t){if(!n)continue;const i=n[e];if(typeof i<"u")return i}}function gr(e){let t=e._keys;return t||(t=e._keys=Zh(e._scopes)),t}function Zh(e){const t=new Set;for(const n of e)for(const i of Object.keys(n).filter(s=>!s.startsWith("_")))t.add(i);return Array.from(t)}function Jh(e,t,n,i){const{iScale:s}=e,{key:o="r"}=this._parsing,r=new Array(i);let a,l,c,u;for(a=0,l=i;ae.ownerDocument.defaultView.getComputedStyle(e,null);function tg(e,t){return Bi(e).getPropertyValue(t)}const eg=["top","right","bottom","left"];function Oe(e,t,n){const i={};n=n?"-"+n:"";for(let s=0;s<4;s++){const o=eg[s];i[o]=parseFloat(e[t+"-"+o+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const ng=(e,t,n)=>(e>0||t>0)&&(!n||!n.shadowRoot);function ig(e,t){const n=e.touches,i=n&&n.length?n[0]:e,{offsetX:s,offsetY:o}=i;let r=!1,a,l;if(ng(s,o,e.target))a=s,l=o;else{const c=t.getBoundingClientRect();a=i.clientX-c.left,l=i.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function Ae(e,t){if("native"in e)return e;const{canvas:n,currentDevicePixelRatio:i}=t,s=Bi(n),o=s.boxSizing==="border-box",r=Oe(s,"padding"),a=Oe(s,"border","width"),{x:l,y:c,box:u}=ig(e,n),f=r.left+(u&&a.left),d=r.top+(u&&a.top);let{width:h,height:g}=t;return o&&(h-=r.width+a.width,g-=r.height+a.height),{x:Math.round((l-f)/h*n.width/i),y:Math.round((c-d)/g*n.height/i)}}function sg(e,t,n){let i,s;if(t===void 0||n===void 0){const o=e&&ho(e);if(!o)t=e.clientWidth,n=e.clientHeight;else{const r=o.getBoundingClientRect(),a=Bi(o),l=Oe(a,"border","width"),c=Oe(a,"padding");t=r.width-c.width-l.width,n=r.height-c.height-l.height,i=Ai(a.maxWidth,o,"clientWidth"),s=Ai(a.maxHeight,o,"clientHeight")}}return{width:t,height:n,maxWidth:i||Ci,maxHeight:s||Ci}}const qn=e=>Math.round(e*10)/10;function og(e,t,n,i){const s=Bi(e),o=Oe(s,"margin"),r=Ai(s.maxWidth,e,"clientWidth")||Ci,a=Ai(s.maxHeight,e,"clientHeight")||Ci,l=sg(e,t,n);let{width:c,height:u}=l;if(s.boxSizing==="content-box"){const d=Oe(s,"border","width"),h=Oe(s,"padding");c-=h.width+d.width,u-=h.height+d.height}return c=Math.max(0,c-o.width),u=Math.max(0,i?c/i:u-o.height),c=qn(Math.min(c,r,l.maxWidth)),u=qn(Math.min(u,a,l.maxHeight)),c&&!u&&(u=qn(c/2)),(t!==void 0||n!==void 0)&&i&&l.height&&u>l.height&&(u=l.height,c=qn(Math.floor(u*i))),{width:c,height:u}}function pr(e,t,n){const i=t||1,s=Math.floor(e.height*i),o=Math.floor(e.width*i);e.height=Math.floor(e.height),e.width=Math.floor(e.width);const r=e.canvas;return r.style&&(n||!r.style.height&&!r.style.width)&&(r.style.height=`${e.height}px`,r.style.width=`${e.width}px`),e.currentDevicePixelRatio!==i||r.height!==s||r.width!==o?(e.currentDevicePixelRatio=i,r.height=s,r.width=o,e.ctx.setTransform(i,0,0,i,0,0),!0):!1}const rg=function(){let e=!1;try{const t={get passive(){return e=!0,!1}};fo()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return e}();function mr(e,t){const n=tg(e,t),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}const ag=function(e,t){return{x(n){return e+e+t-n},setWidth(n){t=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},lg=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function as(e,t,n){return e?ag(t,n):lg()}function cg(e,t){let n,i;(t==="ltr"||t==="rtl")&&(n=e.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",t,"important"),e.prevTextDirection=i)}function ug(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}/*! + * Chart.js v4.4.4 + * https://www.chartjs.org + * (c) 2024 Chart.js Contributors + * Released under the MIT License + */class fg{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,n,i,s){const o=n.listeners[s],r=n.duration;o.forEach(a=>a({chart:t,initial:n.initial,numSteps:r,currentStep:Math.min(i-n.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=fl.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let n=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;const o=i.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,i,t,"progress")),o.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),n+=o.length}),this._lastDate=t,n===0&&(this._running=!1)}_getAnims(t){const n=this._charts;let i=n.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(t,i)),i}listen(t,n,i){this._getAnims(t).listeners[n].push(i)}add(t,n){!n||!n.length||this._getAnims(t).items.push(...n)}has(t){return this._getAnims(t).items.length>0}start(t){const n=this._charts.get(t);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const n=this._charts.get(t);return!(!n||!n.running||!n.items.length)}stop(t){const n=this._charts.get(t);if(!n||!n.items.length)return;const i=n.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();n.items=[],this._notify(t,n,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var se=new fg;const _r="transparent",dg={boolean(e,t,n){return n>.5?t:e},color(e,t,n){const i=cr(e||_r),s=i.valid&&cr(t||_r);return s&&s.valid?s.mix(i,n).hexString():t},number(e,t,n){return e+(t-e)*n}};class hg{constructor(t,n,i,s){const o=n[i];s=Gn([t.to,s,o,t.from]);const r=Gn([t.from,o,s]);this._active=!0,this._fn=t.fn||dg[t.type||typeof r],this._easing=vn[t.easing]||vn.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=n,this._prop=i,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,n,i){if(this._active){this._notify(!1);const s=this._target[this._prop],o=i-this._start,r=this._duration-o;this._start=i,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=Gn([t.to,n,s,t.from]),this._from=Gn([t.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const n=t-this._start,i=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||n1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((n,i)=>{t.push({res:n,rej:i})})}_notify(t){const n=t?"res":"rej",i=this._promises||[];for(let s=0;s{const o=t[s];if(!W(o))return;const r={};for(const a of n)r[a]=o[a];(ot(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!i.has(a))&&i.set(a,r)})})}_animateOptions(t,n){const i=n.options,s=pg(t,i);if(!s)return[];const o=this._createAnimations(s,i);return i.$shared&&gg(t.options.$animations,i).then(()=>{t.options=i},()=>{}),o}_createAnimations(t,n){const i=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(n),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,n));continue}const u=n[c];let f=o[c];const d=i.get(c);if(f)if(d&&f.active()){f.update(d,u,a);continue}else f.cancel();if(!d||!d.duration){t[c]=u;continue}o[c]=f=new hg(d,t,c,u),s.push(f)}return s}update(t,n){if(this._properties.size===0){Object.assign(t,n);return}const i=this._createAnimations(t,n);if(i.length)return se.add(this._chart,i),!0}}function gg(e,t){const n=[],i=Object.keys(t);for(let s=0;s0||!n&&o<0)return s.index}return null}function wr(e,t){const{chart:n,_cachedMeta:i}=e,s=n._stacks||(n._stacks={}),{iScale:o,vScale:r,index:a}=i,l=o.axis,c=r.axis,u=yg(o,r,i),f=t.length;let d;for(let h=0;hn[i].axis===t).shift()}function wg(e,t){return Ve(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Sg(e,t,n){return Ve(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:"default",type:"data"})}function un(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const s of t){const o=s._stacks;if(!o||o[i]===void 0||o[i][n]===void 0)return;delete o[i][n],o[i]._visualValues!==void 0&&o[i]._visualValues[n]!==void 0&&delete o[i]._visualValues[n]}}}const cs=e=>e==="reset"||e==="none",Sr=(e,t)=>t?e:Object.assign({},e),Cg=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:Sl(n,!0),values:null};class Ke{constructor(t,n){this.chart=t,this._ctx=t.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=xr(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&un(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,n=this._cachedMeta,i=this.getDataset(),s=(f,d,h,g)=>f==="x"?d:f==="r"?g:h,o=n.xAxisID=tt(i.xAxisID,ls(t,"x")),r=n.yAxisID=tt(i.yAxisID,ls(t,"y")),a=n.rAxisID=tt(i.rAxisID,ls(t,"r")),l=n.indexAxis,c=n.iAxisID=s(l,o,r,a),u=n.vAxisID=s(l,r,o,a);n.xScale=this.getScaleForId(o),n.yScale=this.getScaleForId(r),n.rScale=this.getScaleForId(a),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const n=this._cachedMeta;return t===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rr(this._data,this),t._stacked&&un(t)}_dataCheck(){const t=this.getDataset(),n=t.data||(t.data=[]),i=this._data;if(W(n)){const s=this._cachedMeta;this._data=bg(n,s)}else if(i!==n){if(i){rr(i,this);const s=this._cachedMeta;un(s),s._parsed=[]}n&&Object.isExtensible(n)&&vh(n,this),this._syncList=[],this._data=n}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const n=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const o=n._stacked;n._stacked=xr(n.vScale,n),n.stack!==i.stack&&(s=!0,un(n),n.stack=i.stack),this._resyncElements(t),(s||o!==n._stacked)&&wr(this,n._parsed)}configure(){const t=this.chart.config,n=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),n,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,n){const{_cachedMeta:i,_data:s}=this,{iScale:o,_stacked:r}=i,a=o.axis;let l=t===0&&n===s.length?!0:i._sorted,c=t>0&&i._parsed[t-1],u,f,d;if(this._parsing===!1)i._parsed=s,i._sorted=!0,d=s;else{ot(s[t])?d=this.parseArrayData(i,s,t,n):W(s[t])?d=this.parseObjectData(i,s,t,n):d=this.parsePrimitiveData(i,s,t,n);const h=()=>f[a]===null||c&&f[a]p||f=0;--d)if(!g()){this.updateRangeFromParsed(c,t,h,l);break}}return c}getAllParsedValues(t){const n=this._cachedMeta._parsed,i=[];let s,o,r;for(s=0,o=n.length;s=0&&tthis.getContext(i,s,n),p=c.resolveNamedOptions(d,h,g,f);return p.$shared&&(p.$shared=l,o[r]=Object.freeze(Sr(p,l))),p}_resolveAnimations(t,n,i){const s=this.chart,o=this._cachedDataOpts,r=`animation-${n}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const u=this.chart.config,f=u.datasetAnimationScopeKeys(this._type,n),d=u.getOptionScopes(this.getDataset(),f);l=u.createResolver(d,this.getContext(t,i,n))}const c=new wl(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,n){return!n||cs(t)||this.chart._animationsDisabled}_getSharedOptions(t,n){const i=this.resolveDataElementOptions(t,n),s=this._sharedOptions,o=this.getSharedOptions(i),r=this.includeOptions(n,o)||o!==s;return this.updateSharedOptions(o,n,i),{sharedOptions:o,includeOptions:r}}updateElement(t,n,i,s){cs(s)?Object.assign(t,i):this._resolveAnimations(n,s).update(t,i)}updateSharedOptions(t,n,i){t&&!cs(n)&&this._resolveAnimations(void 0,n).update(t,i)}_setStyle(t,n,i,s){t.active=s;const o=this.getStyle(n,s);this._resolveAnimations(n,i,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,n,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,n,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const n=this._data,i=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=i.length,o=n.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o{for(c.length+=n,a=c.length-1;a>=r;a--)c[a]=c[a-n]};for(l(o),a=t;aRi(x,a,l,!0)?1:Math.max(v,v*n,y,y*n),g=(x,v,y)=>Ri(x,a,l,!0)?-1:Math.min(v,v*n,y,y*n),p=h(0,c,f),m=h(ut,u,d),_=g(rt,c,f),b=g(rt+ut,u,d);i=(p-_)/2,s=(m-b)/2,o=-(p+_)/2,r=-(m+b)/2}return{ratioX:i,ratioY:s,offsetX:o,offsetY:r}}class qe extends Ke{constructor(t,n){super(t,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,n){const i=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=i;else{let o=l=>+i[l];if(W(i[t])){const{key:l="value"}=this._parsing;o=c=>+nn(i[c],l)}let r,a;for(r=t,a=t+n;r0&&!isNaN(t)?lt*(Math.abs(t)/n):0}getLabelAndValue(t){const n=this._cachedMeta,i=this.chart,s=i.data.labels||[],o=Fn(n._parsed[t],i.options.locale);return{label:s[t]||"",value:o}}getMaxBorderWidth(t){let n=0;const i=this.chart;let s,o,r,a,l;if(!t){for(s=0,o=i.data.datasets.length;st!=="spacing",_indexable:t=>t!=="spacing"&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")}),A(qe,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const n=t.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return n.labels.map((o,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:s,lineWidth:l.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(r),index:r}})}return[]}},onClick(t,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}}});class oi extends Ke{constructor(t,n){super(t,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const n=this._cachedMeta,i=this.chart,s=i.data.labels||[],o=Fn(n._parsed[t].r,i.options.locale);return{label:s[t]||"",value:o}}parseObjectData(t,n,i,s){return Jh.bind(this)(t,n,i,s)}update(t){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,t)}getMinMax(){const t=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((i,s)=>{const o=this.getParsed(s).r;!isNaN(o)&&this.chart.getDataVisibility(s)&&(on.max&&(n.max=o))}),n}_updateRadius(){const t=this.chart,n=t.chartArea,i=t.options,s=Math.min(n.right-n.left,n.bottom-n.top),o=Math.max(s/2,0),r=Math.max(i.cutoutPercentage?o/100*i.cutoutPercentage:1,0),a=(o-r)/t.getVisibleDatasetCount();this.outerRadius=o-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(t,n,i,s){const o=s==="reset",r=this.chart,l=r.options.animation,c=this._cachedMeta.rScale,u=c.xCenter,f=c.yCenter,d=c.getIndexAngle(0)-.5*rt;let h=d,g;const p=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&n++}),n}_computeAngle(t,n,i){return this.chart.getDataVisibility(t)?jt(this.resolveDataElementOptions(t,n).angle||i):0}}A(oi,"id","polarArea"),A(oi,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),A(oi,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const n=t.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return n.labels.map((o,r)=>{const l=t.getDatasetMeta(0).controller.getStyle(r);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:s,lineWidth:l.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(r),index:r}})}return[]}},onClick(t,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class Es extends qe{}A(Es,"id","pie"),A(Es,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});function Re(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class go{constructor(t){A(this,"options");this.options=t||{}}static override(t){Object.assign(go.prototype,t)}init(){}formats(){return Re()}parse(){return Re()}format(){return Re()}add(){return Re()}diff(){return Re()}startOf(){return Re()}endOf(){return Re()}}var kg={_date:go};function Rg(e,t,n,i){const{controller:s,data:o,_sorted:r}=e,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?yh:Ds;if(i){if(s._sharedOptions){const c=o[0],u=typeof c.getRange=="function"&&c.getRange(t);if(u){const f=l(o,t,n-u),d=l(o,t,n+u);return{lo:f.lo,hi:d.hi}}}}else return l(o,t,n)}return{lo:0,hi:o.length-1}}function En(e,t,n,i,s){const o=e.getSortedVisibleDatasetMetas(),r=n[t];for(let a=0,l=o.length;a{l[r]&&l[r](t[n],s)&&(o.push({element:l,datasetIndex:c,index:u}),a=a||l.inRange(t.x,t.y,s))}),i&&!a?[]:o}var Dg={evaluateInteractionItems:En,modes:{index(e,t,n,i){const s=Ae(t,e),o=n.axis||"x",r=n.includeInvisible||!1,a=n.intersect?us(e,s,o,i,r):fs(e,s,o,!1,i,r),l=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach(c=>{const u=a[0].index,f=c.data[u];f&&!f.skip&&l.push({element:f,datasetIndex:c.index,index:u})}),l):[]},dataset(e,t,n,i){const s=Ae(t,e),o=n.axis||"xy",r=n.includeInvisible||!1;let a=n.intersect?us(e,s,o,i,r):fs(e,s,o,!1,i,r);if(a.length>0){const l=a[0].datasetIndex,c=e.getDatasetMeta(l).data;a=[];for(let u=0;un.pos===t)}function Mr(e,t){return e.filter(n=>Cl.indexOf(n.pos)===-1&&n.box.axis===t)}function dn(e,t){return e.sort((n,i)=>{const s=t?i:n,o=t?n:i;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function Og(e){const t=[];let n,i,s,o,r,a;for(n=0,i=(e||[]).length;nc.box.fullSize),!0),i=dn(fn(t,"left"),!0),s=dn(fn(t,"right")),o=dn(fn(t,"top"),!0),r=dn(fn(t,"bottom")),a=Mr(t,"x"),l=Mr(t,"y");return{fullSize:n,leftAndTop:i.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:fn(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function kr(e,t,n,i){return Math.max(e[n],t[n])+Math.max(e[i],t[i])}function Ml(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function Tg(e,t,n,i){const{pos:s,box:o}=n,r=e.maxPadding;if(!W(s)){n.size&&(e[s]-=n.size);const f=i[n.stack]||{size:0,count:1};f.size=Math.max(f.size,n.horizontal?o.height:o.width),n.size=f.size/f.count,e[s]+=n.size}o.getPadding&&Ml(r,o.getPadding());const a=Math.max(0,t.outerWidth-kr(r,e,"left","right")),l=Math.max(0,t.outerHeight-kr(r,e,"top","bottom")),c=a!==e.w,u=l!==e.h;return e.w=a,e.h=l,n.horizontal?{same:c,other:u}:{same:u,other:c}}function Ig(e){const t=e.maxPadding;function n(i){const s=Math.max(t[i]-e[i],0);return e[i]+=s,s}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}function Vg(e,t){const n=t.maxPadding;function i(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],n[r])}),o}return i(e?["left","right"]:["top","bottom"])}function mn(e,t,n,i){const s=[];let o,r,a,l,c,u;for(o=0,r=e.length,c=0;o{typeof p.beforeLayout=="function"&&p.beforeLayout()});const u=l.reduce((p,m)=>m.box.options&&m.box.options.display===!1?p:p+1,0)||1,f=Object.freeze({outerWidth:t,outerHeight:n,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/u,hBoxMaxHeight:r/2}),d=Object.assign({},s);Ml(d,$t(i));const h=Object.assign({maxPadding:d,w:o,h:r,x:s.left,y:s.top},s),g=Eg(l.concat(c),f);mn(a.fullSize,h,f,g),mn(l,h,f,g),mn(c,h,f,g)&&mn(l,h,f,g),Ig(h),Rr(a.leftAndTop,h,f,g),h.x+=h.w,h.y+=h.h,Rr(a.rightAndBottom,h,f,g),e.chartArea={left:h.left,top:h.top,right:h.left+h.w,bottom:h.top+h.h,height:h.h,width:h.w},q(a.chartArea,p=>{const m=p.box;Object.assign(m,e.chartArea),m.update(h.w,h.h,{left:0,top:0,right:0,bottom:0})})}};class kl{acquireContext(t,n){}releaseContext(t){return!1}addEventListener(t,n,i){}removeEventListener(t,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,n,i,s){return n=Math.max(0,n||t.width),i=i||t.height,{width:n,height:Math.max(0,s?Math.floor(n/s):i)}}isAttached(t){return!0}updateConfig(t){}}class zg extends kl{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ri="$chartjs",Hg={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},$r=e=>e===null||e==="";function Ng(e,t){const n=e.style,i=e.getAttribute("height"),s=e.getAttribute("width");if(e[ri]={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",$r(s)){const o=mr(e,"width");o!==void 0&&(e.width=o)}if($r(i))if(e.style.height==="")e.height=e.width/(t||2);else{const o=mr(e,"height");o!==void 0&&(e.height=o)}return e}const Rl=rg?{passive:!0}:!1;function Bg(e,t,n){e&&e.addEventListener(t,n,Rl)}function jg(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,Rl)}function Wg(e,t){const n=Hg[e.type]||e.type,{x:i,y:s}=Ae(e,t);return{type:n,chart:t,native:e,x:i!==void 0?i:null,y:s!==void 0?s:null}}function Pi(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function Gg(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Pi(a.addedNodes,i),r=r&&!Pi(a.removedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function qg(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Pi(a.removedNodes,i),r=r&&!Pi(a.addedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const $n=new Map;let Ar=0;function $l(){const e=window.devicePixelRatio;e!==Ar&&(Ar=e,$n.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function Yg(e,t){$n.size||window.addEventListener("resize",$l),$n.set(e,t)}function Ug(e){$n.delete(e),$n.size||window.removeEventListener("resize",$l)}function Xg(e,t,n){const i=e.canvas,s=i&&ho(i);if(!s)return;const o=dl((a,l)=>{const c=s.clientWidth;n(a,l),c{const l=a[0],c=l.contentRect.width,u=l.contentRect.height;c===0&&u===0||o(c,u)});return r.observe(s),Yg(e,o),r}function ds(e,t,n){n&&n.disconnect(),t==="resize"&&Ug(e)}function Kg(e,t,n){const i=e.canvas,s=dl(o=>{e.ctx!==null&&n(Wg(o,e))},e);return Bg(i,t,s),s}class Qg extends kl{acquireContext(t,n){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Ng(t,n),i):null}releaseContext(t){const n=t.canvas;if(!n[ri])return!1;const i=n[ri].initial;["height","width"].forEach(o=>{const r=i[o];J(r)?n.removeAttribute(o):n.setAttribute(o,r)});const s=i.style||{};return Object.keys(s).forEach(o=>{n.style[o]=s[o]}),n.width=n.width,delete n[ri],!0}addEventListener(t,n,i){this.removeEventListener(t,n);const s=t.$proxies||(t.$proxies={}),r={attach:Gg,detach:qg,resize:Xg}[n]||Kg;s[n]=r(t,n,i)}removeEventListener(t,n){const i=t.$proxies||(t.$proxies={}),s=i[n];if(!s)return;({attach:ds,detach:ds,resize:ds}[n]||jg)(t,n,s),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,n,i,s){return og(t,n,i,s)}isAttached(t){const n=t&&ho(t);return!!(n&&n.isConnected)}}function Zg(e){return!fo()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?zg:Qg}var ei;let Ln=(ei=class{constructor(){A(this,"x");A(this,"y");A(this,"active",!1);A(this,"options");A(this,"$animations")}tooltipPosition(t){const{x:n,y:i}=this.getProps(["x","y"],t);return{x:n,y:i}}hasValue(){return ki(this.x)&&ki(this.y)}getProps(t,n){const i=this.$animations;if(!n||!i)return this;const s={};return t.forEach(o=>{s[o]=i[o]&&i[o].active()?i[o]._to:this[o]}),s}},A(ei,"defaults",{}),A(ei,"defaultRoutes"),ei);function Jg(e,t){const n=e.options.ticks,i=tp(e),s=Math.min(n.maxTicksLimit||i,i),o=n.major.enabled?np(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return ip(t,c,o,r/s),c;const u=ep(o,t,s);if(r>0){let f,d;const h=r>1?Math.round((l-a)/(r-1)):null;for(Un(t,c,u,J(h)?0:a-h,a),f=0,d=r-1;fs)return l}return Math.max(s,1)}function np(e){const t=[];let n,i;for(n=0,i=e.length;ne==="left"?"right":e==="right"?"left":e,Pr=(e,t,n)=>t==="top"||t==="left"?e[t]+n:e[t]-n,Dr=(e,t)=>Math.min(t||e,e);function Or(e,t){const n=[],i=e.length/t,s=e.length;let o=0;for(;or+a)))return l}function ap(e,t){q(e,n=>{const i=n.gc,s=i.length/2;let o;if(s>t){for(o=0;oi?i:n,i=s&&n>i?n:i,{min:St(n,St(i,n)),max:St(i,St(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){at(this.options.beforeUpdate,[this])}update(t,n,i){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=jh(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a=o||i<=1||!this.isHorizontal()){this.labelRotation=s;return}const u=this._getLabelSizes(),f=u.widest.width,d=u.highest.height,h=Ct(this.chart.width-f,0,this.maxWidth);a=t.offset?this.maxWidth/i:h/(i-1),f+6>a&&(a=h/(i-(t.offset?.5:1)),l=this.maxHeight-hn(t.grid)-n.padding-Fr(t.title,this.chart.options.font),c=Math.sqrt(f*f+d*d),r=oo(Math.min(Math.asin(Ct((u.highest.height+6)/a,-1,1)),Math.asin(Ct(l/c,-1,1))-Math.asin(Ct(d/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){at(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){at(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:n,options:{ticks:i,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=Fr(s,n.options.font);if(a?(t.width=this.maxWidth,t.height=hn(o)+l):(t.height=this.maxHeight,t.width=hn(o)+l),i.display&&this.ticks.length){const{first:c,last:u,widest:f,highest:d}=this._getLabelSizes(),h=i.padding*2,g=jt(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(a){const _=i.mirror?0:m*f.width+p*d.height;t.height=Math.min(this.maxHeight,t.height+_+h)}else{const _=i.mirror?0:p*f.width+m*d.height;t.width=Math.min(this.maxWidth,t.width+_+h)}this._calculatePadding(c,u,m,p)}}this._handleMargins(),a?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,n,i,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const u=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1);let d=0,h=0;l?c?(d=s*t.width,h=i*n.height):(d=i*t.height,h=s*n.width):o==="start"?h=n.width:o==="end"?d=t.width:o!=="inner"&&(d=t.width/2,h=n.width/2),this.paddingLeft=Math.max((d-u+r)*this.width/(this.width-u),0),this.paddingRight=Math.max((h-f+r)*this.width/(this.width-f),0)}else{let u=n.height/2,f=t.height/2;o==="start"?(u=0,f=t.height):o==="end"&&(u=n.height,f=0),this.paddingTop=u+r,this.paddingBottom=f+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){at(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:n}=this.options;return n==="top"||n==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let n,i;for(n=0,i=t.length;n({width:r[P]||0,height:a[P]||0});return{first:$(0),last:$(n-1),widest:$(M),highest:$(k),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,n){return NaN}getValueForPixel(t){}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const n=this._startPixel+t*this._length;return _h(this._alignToPixels?ke(this.chart,n,0):n)}getDecimalForPixel(t){const n=(t-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:n}=this;return t<0&&n<0?n:t>0&&n>0?t:0}getContext(t){const n=this.ticks||[];if(t>=0&&ta*s?a/i:l/s:l*s0}_computeGridLineItems(t){const n=this.axis,i=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),f=this.ticks.length+(l?1:0),d=hn(o),h=[],g=a.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,_=function(B){return ke(i,B,p)};let b,x,v,y,M,k,$,P,O,R,V,ct;if(r==="top")b=_(this.bottom),k=this.bottom-d,P=b-m,R=_(t.top)+m,ct=t.bottom;else if(r==="bottom")b=_(this.top),R=t.top,ct=_(t.bottom)-m,k=b+m,P=this.top+d;else if(r==="left")b=_(this.right),M=this.right-d,$=b-m,O=_(t.left)+m,V=t.right;else if(r==="right")b=_(this.left),O=t.left,V=_(t.right)-m,M=b+m,$=this.left+d;else if(n==="x"){if(r==="center")b=_((t.top+t.bottom)/2+.5);else if(W(r)){const B=Object.keys(r)[0],N=r[B];b=_(this.chart.scales[B].getPixelForValue(N))}R=t.top,ct=t.bottom,k=b+m,P=k+d}else if(n==="y"){if(r==="center")b=_((t.left+t.right)/2);else if(W(r)){const B=Object.keys(r)[0],N=r[B];b=_(this.chart.scales[B].getPixelForValue(N))}M=b-m,$=M-d,O=t.left,V=t.right}const it=tt(s.ticks.maxTicksLimit,f),H=Math.max(1,Math.ceil(f/it));for(x=0;x0&&(bt-=ee/2);break}Se={left:bt,top:ue,width:ee+vt.width,height:wt+vt.height,color:H.backdropColor}}m.push({label:v,font:P,textOffset:V,options:{rotation:p,color:N,strokeColor:st,strokeWidth:G,textAlign:Et,textBaseline:ct,translation:[y,M],backdrop:Se}})}return m}_getXAxisLabelAlignment(){const{position:t,ticks:n}=this.options;if(-jt(this.labelRotation))return t==="top"?"left":"right";let s="center";return n.align==="start"?s="left":n.align==="end"?s="right":n.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(t){const{position:n,ticks:{crossAlign:i,mirror:s,padding:o}}=this.options,r=this._getLabelSizes(),a=t+o,l=r.widest.width;let c,u;return n==="left"?s?(u=this.right+o,i==="near"?c="left":i==="center"?(c="center",u+=l/2):(c="right",u+=l)):(u=this.right-a,i==="near"?c="right":i==="center"?(c="center",u-=l/2):(c="left",u=this.left)):n==="right"?s?(u=this.left+o,i==="near"?c="right":i==="center"?(c="center",u-=l/2):(c="left",u-=l)):(u=this.left+a,i==="near"?c="left":i==="center"?(c="center",u+=l/2):(c="right",u=this.right)):c="right",{textAlign:c,x:u}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:n},left:i,top:s,width:o,height:r}=this;n&&(t.save(),t.fillStyle=n,t.fillRect(i,s,o,r),t.restore())}getLineWidthForValue(t){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const s=this.ticks.findIndex(o=>o.value===t);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const n=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,u)=>{!u.width||!u.color||(i.save(),i.lineWidth=u.width,i.strokeStyle=u.color,i.setLineDash(u.borderDash||[]),i.lineDashOffset=u.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(n.display)for(o=0,r=s.length;o{this.draw(o)}}]:[{z:i,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let o,r;for(o=0,r=n.length;o{const i=n.split("."),s=i.pop(),o=[e].concat(i).join("."),r=t[n].split("."),a=r.pop(),l=r.join(".");ft.route(o,s,l,a)})}function gp(e){return"id"in e&&"defaults"in e}class pp{constructor(){this.controllers=new Xn(Ke,"datasets",!0),this.elements=new Xn(Ln,"elements"),this.plugins=new Xn(Object,"plugins"),this.scales=new Xn(ze,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,n,i){[...n].forEach(s=>{const o=i||this._getRegistryForType(s);i||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):q(s,r=>{const a=i||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,n,i){const s=so(t);at(i["before"+s],[],i),n[t](i),at(i["after"+s],[],i)}_getRegistryForType(t){for(let n=0;no.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(n,i),t,"stop"),this._notify(s(i,n),t,"start")}}function _p(e){const t={},n=[],i=Object.keys(Xt.plugins.items);for(let o=0;o1&&Er(e[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Lr(e,t,n){if(n[t+"AxisID"]===e)return{axis:t}}function Cp(e,t){if(t.data&&t.data.datasets){const n=t.data.datasets.filter(i=>i.xAxisID===e||i.yAxisID===e);if(n.length)return Lr(e,"x",n[0])||Lr(e,"y",n[0])}return{}}function Mp(e,t){const n=Ie[e.type]||{scales:{}},i=t.scales||{},s=Ls(e.type,t),o=Object.create(null);return Object.keys(i).forEach(r=>{const a=i[r];if(!W(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=Ts(r,a,Cp(r,e),ft.scales[a.type]),c=wp(l,s),u=n.scales||{};o[r]=yn(Object.create(null),[{axis:l},a,u[l],u[c]])}),e.data.datasets.forEach(r=>{const a=r.type||e.type,l=r.indexAxis||Ls(a,t),u=(Ie[a]||{}).scales||{};Object.keys(u).forEach(f=>{const d=vp(f,l),h=r[d+"AxisID"]||d;o[h]=o[h]||Object.create(null),yn(o[h],[{axis:d},i[h],u[f]])})}),Object.keys(o).forEach(r=>{const a=o[r];yn(a,[ft.scales[a.type],ft.scale])}),o}function Al(e){const t=e.options||(e.options={});t.plugins=tt(t.plugins,{}),t.scales=Mp(e,t)}function Pl(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function kp(e){return e=e||{},e.data=Pl(e.data),Al(e),e}const Tr=new Map,Dl=new Set;function Kn(e,t){let n=Tr.get(e);return n||(n=t(),Tr.set(e,n),Dl.add(n)),n}const gn=(e,t,n)=>{const i=nn(t,n);i!==void 0&&e.add(i)};class Rp{constructor(t){this._config=kp(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Pl(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Al(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Kn(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,n){return Kn(`${t}.transition.${n}`,()=>[[`datasets.${t}.transitions.${n}`,`transitions.${n}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,n){return Kn(`${t}-${n}`,()=>[[`datasets.${t}.elements.${n}`,`datasets.${t}`,`elements.${n}`,""]])}pluginScopeKeys(t){const n=t.id,i=this.type;return Kn(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,n){const i=this._scopeCache;let s=i.get(t);return(!s||n)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,n,i){const{options:s,type:o}=this,r=this._cachedScopes(t,i),a=r.get(n);if(a)return a;const l=new Set;n.forEach(u=>{t&&(l.add(t),u.forEach(f=>gn(l,t,f))),u.forEach(f=>gn(l,s,f)),u.forEach(f=>gn(l,Ie[o]||{},f)),u.forEach(f=>gn(l,ft,f)),u.forEach(f=>gn(l,Os,f))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Dl.has(n)&&r.set(n,c),c}chartOptionScopes(){const{options:t,type:n}=this;return[t,Ie[n]||{},ft.datasets[n]||{},{type:n},ft,Os]}resolveNamedOptions(t,n,i,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=Ir(this._resolverCache,t,s);let l=r;if(Ap(r,n)){o.$shared=!1,i=we(i)?i():i;const c=this.createResolver(t,i,a);l=sn(r,i,c)}for(const c of n)o[c]=l[c];return o}createResolver(t,n,i=[""],s){const{resolver:o}=Ir(this._resolverCache,t,i);return W(n)?sn(o,n,void 0,s):o}}function Ir(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const s=n.join();let o=i.get(s);return o||(o={resolver:lo(t,n),subPrefixes:n.filter(a=>!a.toLowerCase().includes("hover"))},i.set(s,o)),o}const $p=e=>W(e)&&Object.getOwnPropertyNames(e).some(t=>we(e[t]));function Ap(e,t){const{isScriptable:n,isIndexable:i}=bl(e);for(const s of t){const o=n(s),r=i(s),a=(r||o)&&e[s];if(o&&(we(a)||$p(a))||r&&ot(a))return!0}return!1}var Pp="4.4.4";const Dp=["top","bottom","left","right","chartArea"];function Vr(e,t){return e==="top"||e==="bottom"||Dp.indexOf(e)===-1&&t==="x"}function zr(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function Hr(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),at(n&&n.onComplete,[e],t)}function Op(e){const t=e.chart,n=t.options.animation;at(n&&n.onProgress,[e],t)}function Ol(e){return fo()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const ai={},Nr=e=>{const t=Ol(e);return Object.values(ai).filter(n=>n.canvas===t).pop()};function Fp(e,t,n){const i=Object.keys(e);for(const s of i){const o=+s;if(o>=t){const r=e[s];delete e[s],(n>0||o>t)&&(e[o+n]=r)}}}function Ep(e,t,n,i){return!n||e.type==="mouseout"?null:i?t:e}function Qn(e,t,n){return e.options.clip?e[n]:t[n]}function Lp(e,t){const{xScale:n,yScale:i}=e;return n&&i?{left:Qn(n,t,"left"),right:Qn(n,t,"right"),top:Qn(i,t,"top"),bottom:Qn(i,t,"bottom")}:t}var de;let ji=(de=class{static register(...t){Xt.add(...t),Br()}static unregister(...t){Xt.remove(...t),Br()}constructor(t,n){const i=this.config=new Rp(n),s=Ol(t),o=Nr(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Zg(s)),this.platform.updateConfig(i);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,u=l&&l.width;if(this.id=rh(),this.ctx=a,this.canvas=l,this.width=u,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new mp,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Sh(f=>this.update(f),r.resizeDelay||0),this._dataChanges=[],ai[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}se.listen(this,"complete",Hr),se.listen(this,"progress",Op),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:n},width:i,height:s,_aspectRatio:o}=this;return J(t)?n&&o?o:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Xt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():pr(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return fr(this.canvas,this.ctx),this}stop(){return se.stop(this),this}resize(t,n){se.running(this)?this._resizeBeforeDraw={width:t,height:n}:this._resize(t,n)}_resize(t,n){const i=this.options,s=this.canvas,o=i.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,n,o),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,pr(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),at(i.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};q(n,(i,s)=>{i.id=s})}buildOrUpdateScales(){const t=this.options,n=t.scales,i=this.scales,s=Object.keys(i).reduce((r,a)=>(r[a]=!1,r),{});let o=[];n&&(o=o.concat(Object.keys(n).map(r=>{const a=n[r],l=Ts(r,a),c=l==="r",u=l==="x";return{options:a,dposition:c?"chartArea":u?"bottom":"left",dtype:c?"radialLinear":u?"category":"linear"}}))),q(o,r=>{const a=r.options,l=a.id,c=Ts(l,a),u=tt(a.type,r.dtype);(a.position===void 0||Vr(a.position,c)!==Vr(r.dposition))&&(a.position=r.dposition),s[l]=!0;let f=null;if(l in i&&i[l].type===u)f=i[l];else{const d=Xt.getScale(u);f=new d({id:l,type:u,ctx:this.ctx,chart:this}),i[f.id]=f}f.init(a,t)}),q(s,(r,a)=>{r||delete i[a]}),q(i,r=>{me.configure(this,r,r.options),me.addBox(this,r)})}_updateMetasets(){const t=this._metasets,n=this.data.datasets.length,i=t.length;if(t.sort((s,o)=>s.index-o.index),i>n){for(let s=n;sn.length&&delete this._stacks,t.forEach((i,s)=>{n.filter(o=>o===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],n=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,u=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(zr("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){q(this.scales,t=>{me.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!nr(n,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:o}of n){const r=i==="_removeElements"?-o:o;Fp(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=i(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;me.update(this,this.width,this.height,t);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],q(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(t[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const n=this.ctx,i=t._clip,s=!i.disabled,o=Lp(t,this.chartArea),r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&ml(n,{left:i.left===!1?0:o.left-i.left,right:i.right===!1?this.width:o.right+i.right,top:i.top===!1?0:o.top-i.top,bottom:i.bottom===!1?this.height:o.bottom+i.bottom}),t.controller.draw(),s&&_l(n),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return Ge(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,n,i,s){const o=Dg.modes[n];return typeof o=="function"?o(this,t,i,s):[]}getDatasetMeta(t){const n=this.data.datasets[t],i=this._metasets;let s=i.filter(o=>o&&o._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:t,_dataset:n,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ve(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const n=this.data.datasets[t];if(!n)return!1;const i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(t,n){const i=this.getDatasetMeta(t);i.hidden=!n}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,n,i){const s=i?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);Si(n)?(o.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),r.update(o,{visible:i}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,n){this._updateVisibility(t,n,!1)}show(t,n){this._updateVisibility(t,n,!0)}_destroyDatasetMeta(t){const n=this._metasets[t];n&&n.controller&&n.controller._destroy(),delete this._metasets[t]}_stop(){let t,n;for(this.stop(),se.remove(this),t=0,n=this.data.datasets.length;t{n.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};q(this.options.events,o=>i(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,n=this.platform,i=(l,c)=>{n.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(n.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",o),i("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),i("attach",a)},n.isAttached(this.canvas)?a():r()}unbindEvents(){q(this._listeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._listeners={},q(this._responsiveListeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,n,i){const s=i?"set":"remove";let o,r,a,l;for(n==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!vi(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(t,n,i){return this._plugins.notify(this,t,n,i)}isPluginEnabled(t){return this._plugins._cache.filter(n=>n.plugin.id===t).length===1}_updateHoverStyles(t,n,i){const s=this.options.hover,o=(l,c)=>l.filter(u=>!c.some(f=>u.datasetIndex===f.datasetIndex&&u.index===f.index)),r=o(n,t),a=i?t:o(t,n);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,n){const i={event:t,replay:n,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;const o=this._handleEvent(t,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(o||i.changed)&&this.render(),this}_handleEvent(t,n,i){const{_active:s=[],options:o}=this,r=n,a=this._getActiveElements(t,s,i,r),l=dh(t),c=Ep(t,this._lastEvent,i,l);i&&(this._lastEvent=null,at(o.onHover,[t,a,this],this),l&&at(o.onClick,[t,a,this],this));const u=!vi(a,s);return(u||n)&&(this._active=a,this._updateHoverStyles(a,s,n)),this._lastEvent=c,u}_getActiveElements(t,n,i,s){if(t.type==="mouseout")return[];if(!i)return n;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}},A(de,"defaults",ft),A(de,"instances",ai),A(de,"overrides",Ie),A(de,"registry",Xt),A(de,"version",Pp),A(de,"getChart",Nr),de);function Br(){return q(ji.instances,e=>e._plugins.invalidate())}function Tp(e,t,n){const{startAngle:i,pixelMargin:s,x:o,y:r,outerRadius:a,innerRadius:l}=t;let c=s/a;e.beginPath(),e.arc(o,r,a,i-c,n+c),l>s?(c=s/l,e.arc(o,r,l,n+c,i-c,!0)):e.arc(o,r,s,n+ut,i-ut),e.closePath(),e.clip()}function Ip(e){return ao(e,["outerStart","outerEnd","innerStart","innerEnd"])}function Vp(e,t,n,i){const s=Ip(e.options.borderRadius),o=(n-t)/2,r=Math.min(o,i*t/2),a=l=>{const c=(n-Math.min(o,l))*i/2;return Ct(l,0,Math.min(o,c))};return{outerStart:a(s.outerStart),outerEnd:a(s.outerEnd),innerStart:Ct(s.innerStart,0,r),innerEnd:Ct(s.innerEnd,0,r)}}function je(e,t,n,i){return{x:n+e*Math.cos(t),y:i+e*Math.sin(t)}}function Di(e,t,n,i,s,o){const{x:r,y:a,startAngle:l,pixelMargin:c,innerRadius:u}=t,f=Math.max(t.outerRadius+i+n-c,0),d=u>0?u+i+n+c:0;let h=0;const g=s-l;if(i){const H=u>0?u-i:0,B=f>0?f-i:0,N=(H+B)/2,st=N!==0?g*N/(N+i):g;h=(g-st)/2}const p=Math.max(.001,g*f-n/rt)/f,m=(g-p)/2,_=l+m+h,b=s-m-h,{outerStart:x,outerEnd:v,innerStart:y,innerEnd:M}=Vp(t,d,f,b-_),k=f-x,$=f-v,P=_+x/k,O=b-v/$,R=d+y,V=d+M,ct=_+y/R,it=b-M/V;if(e.beginPath(),o){const H=(P+O)/2;if(e.arc(r,a,f,P,H),e.arc(r,a,f,H,O),v>0){const G=je($,O,r,a);e.arc(G.x,G.y,v,O,b+ut)}const B=je(V,b,r,a);if(e.lineTo(B.x,B.y),M>0){const G=je(V,it,r,a);e.arc(G.x,G.y,M,b+ut,it+Math.PI)}const N=(b-M/d+(_+y/d))/2;if(e.arc(r,a,d,b-M/d,N,!0),e.arc(r,a,d,N,_+y/d,!0),y>0){const G=je(R,ct,r,a);e.arc(G.x,G.y,y,ct+Math.PI,_-ut)}const st=je(k,_,r,a);if(e.lineTo(st.x,st.y),x>0){const G=je(k,P,r,a);e.arc(G.x,G.y,x,_-ut,P)}}else{e.moveTo(r,a);const H=Math.cos(P)*f+r,B=Math.sin(P)*f+a;e.lineTo(H,B);const N=Math.cos(O)*f+r,st=Math.sin(O)*f+a;e.lineTo(N,st)}e.closePath()}function zp(e,t,n,i,s){const{fullCircles:o,startAngle:r,circumference:a}=t;let l=t.endAngle;if(o){Di(e,t,n,i,l,s);for(let c=0;c=lt||p,_=bh(a,u+h,f+h);return m&&_}getCenterPoint(n){const{x:i,y:s,startAngle:o,endAngle:r,innerRadius:a,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],n),{offset:c,spacing:u}=this.options,f=(o+r)/2,d=(a+l+u+c)/2;return{x:i+Math.cos(f)*d,y:s+Math.sin(f)*d}}tooltipPosition(n){return this.getCenterPoint(n)}draw(n){const{options:i,circumference:s}=this,o=(i.offset||0)/4,r=(i.spacing||0)/2,a=i.circular;if(this.pixelMargin=i.borderAlign==="inner"?.33:0,this.fullCircles=s>lt?Math.floor(s/lt):0,s===0||this.innerRadius<0||this.outerRadius<0)return;n.save();const l=(this.startAngle+this.endAngle)/2;n.translate(Math.cos(l)*o,Math.sin(l)*o);const c=1-Math.sin(Math.min(rt,s||0)),u=o*c;n.fillStyle=i.backgroundColor,n.strokeStyle=i.borderColor,zp(n,this,u,r,a),Hp(n,this,u,r,a),n.restore()}}A(_n,"id","arc"),A(_n,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),A(_n,"defaultRoutes",{backgroundColor:"backgroundColor"}),A(_n,"descriptors",{_scriptable:!0,_indexable:n=>n!=="borderDash"});const Is=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],jr=Is.map(e=>e.replace("rgb(","rgba(").replace(")",", 0.5)"));function Fl(e){return Is[e%Is.length]}function El(e){return jr[e%jr.length]}function Np(e,t){return e.borderColor=Fl(t),e.backgroundColor=El(t),++t}function Bp(e,t){return e.backgroundColor=e.data.map(()=>Fl(t++)),t}function jp(e,t){return e.backgroundColor=e.data.map(()=>El(t++)),t}function Wp(e){let t=0;return(n,i)=>{const s=e.getDatasetMeta(i).controller;s instanceof qe?t=Bp(n,t):s instanceof oi?t=jp(n,t):s&&(t=Np(n,t))}}function Wr(e){let t;for(t in e)if(e[t].borderColor||e[t].backgroundColor)return!0;return!1}function Gp(e){return e&&(e.borderColor||e.backgroundColor)}var qp={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,t,n){if(!n.enabled)return;const{data:{datasets:i},options:s}=e.config,{elements:o}=s;if(!n.forceOverride&&(Wr(i)||Gp(s)||o&&Wr(o)))return;const r=Wp(e);i.forEach(r)}};class Ll extends Ln{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=n;const s=ot(i.text)?i.text.length:1;this._padding=$t(i.padding);const o=s*_t(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:n,left:i,bottom:s,right:o,options:r}=this,a=r.align;let l=0,c,u,f;return this.isHorizontal()?(u=xn(a,i,o),f=n+t,c=o-i):(r.position==="left"?(u=i+t,f=xn(a,s,n),l=rt*-.5):(u=o-t,f=xn(a,n,s),l=rt*.5),c=s-n),{titleX:u,titleY:f,maxWidth:c,rotation:l}}draw(){const t=this.ctx,n=this.options;if(!n.display)return;const i=_t(n.font),o=i.lineHeight/2+this._padding.top,{titleX:r,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);Rn(t,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:c,textAlign:hl(n.align),textBaseline:"middle",translation:[r,a]})}}function Yp(e,t){const n=new Ll({ctx:e.ctx,options:t,chart:e});me.configure(e,n,t),me.addBox(e,n),e.titleBlock=n}var Up={id:"title",_element:Ll,start(e,t,n){Yp(e,n)},stop(e){const t=e.titleBlock;me.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;me.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const bn={average(e){if(!e.length)return!1;let t,n,i=new Set,s=0,o=0;for(t=0,n=e.length;ta+l)/i.size,y:s/o}},nearest(e,t){if(!e.length)return!1;let n=t.x,i=t.y,s=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=e.length;o-1?e.split(` +`):e}function Xp(e,t){const{element:n,datasetIndex:i,index:s}=t,o=e.getDatasetMeta(i).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:e,label:r,parsed:o.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function Gr(e,t){const n=e.chart.ctx,{body:i,footer:s,title:o}=e,{boxWidth:r,boxHeight:a}=t,l=_t(t.bodyFont),c=_t(t.titleFont),u=_t(t.footerFont),f=o.length,d=s.length,h=i.length,g=$t(t.padding);let p=g.height,m=0,_=i.reduce((v,y)=>v+y.before.length+y.lines.length+y.after.length,0);if(_+=e.beforeBody.length+e.afterBody.length,f&&(p+=f*c.lineHeight+(f-1)*t.titleSpacing+t.titleMarginBottom),_){const v=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;p+=h*v+(_-h)*l.lineHeight+(_-1)*t.bodySpacing}d&&(p+=t.footerMarginTop+d*u.lineHeight+(d-1)*t.footerSpacing);let b=0;const x=function(v){m=Math.max(m,n.measureText(v).width+b)};return n.save(),n.font=c.string,q(e.title,x),n.font=l.string,q(e.beforeBody.concat(e.afterBody),x),b=t.displayColors?r+2+t.boxPadding:0,q(i,v=>{q(v.before,x),q(v.lines,x),q(v.after,x)}),b=0,n.font=u.string,q(e.footer,x),n.restore(),m+=g.width,{width:m,height:p}}function Kp(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}function Qp(e,t,n,i){const{x:s,width:o}=i,r=n.caretSize+n.caretPadding;if(e==="left"&&s+o+r>t.width||e==="right"&&s-o-r<0)return!0}function Zp(e,t,n,i){const{x:s,width:o}=n,{width:r,chartArea:{left:a,right:l}}=e;let c="center";return i==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),Qp(c,e,t,n)&&(c="center"),c}function qr(e,t,n){const i=n.yAlign||t.yAlign||Kp(e,n);return{xAlign:n.xAlign||t.xAlign||Zp(e,t,n,i),yAlign:i}}function Jp(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function tm(e,t,n){let{y:i,height:s}=e;return t==="top"?i+=n:t==="bottom"?i-=s+n:i-=s/2,i}function Yr(e,t,n,i){const{caretSize:s,caretPadding:o,cornerRadius:r}=e,{xAlign:a,yAlign:l}=n,c=s+o,{topLeft:u,topRight:f,bottomLeft:d,bottomRight:h}=Sn(r);let g=Jp(t,a);const p=tm(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(u,d)+s:a==="right"&&(g+=Math.max(f,h)+s),{x:Ct(g,0,i.width-t.width),y:Ct(p,0,i.height-t.height)}}function Zn(e,t,n){const i=$t(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function Ur(e){return Ut([],oe(e))}function em(e,t,n){return Ve(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function Xr(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const Tl={beforeTitle:ie,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"u"?Tl[t].call(n,i):s}class Vs extends Ln{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&n.options.animation&&i.animations,o=new wl(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=em(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,s=yt(i,"beforeTitle",this,t),o=yt(i,"title",this,t),r=yt(i,"afterTitle",this,t);let a=[];return a=Ut(a,oe(s)),a=Ut(a,oe(o)),a=Ut(a,oe(r)),a}getBeforeBody(t,n){return Ur(yt(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,s=[];return q(t,o=>{const r={before:[],lines:[],after:[]},a=Xr(i,o);Ut(r.before,oe(yt(a,"beforeLabel",this,o))),Ut(r.lines,yt(a,"label",this,o)),Ut(r.after,oe(yt(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,n){return Ur(yt(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,s=yt(i,"beforeFooter",this,t),o=yt(i,"footer",this,t),r=yt(i,"afterFooter",this,t);let a=[];return a=Ut(a,oe(s)),a=Ut(a,oe(o)),a=Ut(a,oe(r)),a}_createItems(t){const n=this._active,i=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=n.length;lt.filter(u,f,d,i))),t.itemSort&&(a=a.sort((u,f)=>t.itemSort(u,f,i))),q(a,u=>{const f=Xr(t.callbacks,u);s.push(yt(f,"labelColor",this,u)),o.push(yt(f,"labelPointStyle",this,u)),r.push(yt(f,"labelTextColor",this,u))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,n){const i=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=bn[i.position].call(this,s,this._eventPosition);r=this._createItems(i),this.title=this.getTitle(r,i),this.beforeBody=this.getBeforeBody(r,i),this.body=this.getBody(r,i),this.afterBody=this.getAfterBody(r,i),this.footer=this.getFooter(r,i);const l=this._size=Gr(this,i),c=Object.assign({},a,l),u=qr(this.chart,i,c),f=Yr(i,c,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,o={opacity:1,x:f.x,y:f.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,s){const o=this.getCaretPosition(t,i,s);n.lineTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.lineTo(o.x3,o.y3)}getCaretPosition(t,n,i){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=i,{topLeft:l,topRight:c,bottomLeft:u,bottomRight:f}=Sn(a),{x:d,y:h}=t,{width:g,height:p}=n;let m,_,b,x,v,y;return o==="center"?(v=h+p/2,s==="left"?(m=d,_=m-r,x=v+r,y=v-r):(m=d+g,_=m+r,x=v-r,y=v+r),b=m):(s==="left"?_=d+Math.max(l,u)+r:s==="right"?_=d+g-Math.max(c,f)-r:_=this.caretX,o==="top"?(x=h,v=x-r,m=_-r,b=_+r):(x=h+p,v=x+r,m=_+r,b=_-r),y=x),{x1:m,x2:_,x3:b,y1:x,y2:v,y3:y}}drawTitle(t,n,i){const s=this.title,o=s.length;let r,a,l;if(o){const c=as(i.rtl,this.x,this.width);for(t.x=Zn(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",r=_t(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=r.string,l=0;lb!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Fs(t,{x:p,y:g,w:c,h:l,radius:_}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),Fs(t,{x:m,y:g+1,w:c-2,h:l-2,radius:_}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(p,g,c,l),t.strokeRect(p,g,c,l),t.fillStyle=r.backgroundColor,t.fillRect(m,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:u}=i,f=_t(i.bodyFont);let d=f.lineHeight,h=0;const g=as(i.rtl,this.x,this.width),p=function($){n.fillText($,g.x(t.x+h),t.y+d/2),t.y+=d+o},m=g.textAlign(r);let _,b,x,v,y,M,k;for(n.textAlign=r,n.textBaseline="middle",n.font=f.string,t.x=Zn(this,m,i),n.fillStyle=i.bodyColor,q(this.beforeBody,p),h=a&&m!=="right"?r==="center"?c/2+u:c+2+u:0,v=0,M=s.length;v0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,s=i&&i.x,o=i&&i.y;if(s||o){const r=bn[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Gr(this,t),l=Object.assign({},r,this._size),c=qr(n,t,l),u=Yr(t,l,c,n);(s._to!==u.x||o._to!==u.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const r=$t(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(o,t,s,n),cg(t,n.textDirection),o.y+=r.top,this.drawTitle(o,t,n),this.drawBody(o,t,n),this.drawFooter(o,t,n),ug(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!vi(i,s),r=this._positionChanged(s,n);(o||r)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,n,i),a=this._positionChanged(r,t),l=n||!vi(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),l}_getActiveElements(t,n,i,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,i);return o.reverse&&r.reverse(),r}_positionChanged(t,n){const{caretX:i,caretY:s,options:o}=this,r=bn[o.position].call(this,t,n);return r!==!1&&(i!==r.x||s!==r.y)}}A(Vs,"positioners",bn);var nm={id:"tooltip",_element:Vs,positioners:bn,afterInit(e,t,n){n&&(e.tooltip=new Vs({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Tl},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const im=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function sm(e,t,n,i){const s=e.indexOf(t);if(s===-1)return im(e,t,n,i);const o=e.lastIndexOf(t);return s!==o?n:s}const om=(e,t)=>e===null?null:Ct(Math.round(e),0,t);function Kr(e){const t=this.getLabels();return e>=0&&en.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}A(zs,"id","category"),A(zs,"defaults",{ticks:{callback:Kr}});function rm(e,t){const n=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:u,maxDigits:f,includeBounds:d}=e,h=o||1,g=u-1,{min:p,max:m}=t,_=!J(r),b=!J(a),x=!J(c),v=(m-p)/(f+1);let y=sr((m-p)/g/h)*h,M,k,$,P;if(y<1e-14&&!_&&!b)return[{value:p},{value:m}];P=Math.ceil(m/y)-Math.floor(p/y),P>g&&(y=sr(P*y/g/h)*h),J(l)||(M=Math.pow(10,l),y=Math.ceil(y*M)/M),s==="ticks"?(k=Math.floor(p/y)*y,$=Math.ceil(m/y)*y):(k=p,$=m),_&&b&&o&&ph((a-r)/o,y/1e3)?(P=Math.round(Math.min((a-r)/y,u)),y=(a-r)/P,k=r,$=a):x?(k=_?r:k,$=b?a:$,P=c-1,y=($-k)/P):(P=($-k)/y,si(P,Math.round(P),y/1e3)?P=Math.round(P):P=Math.ceil(P));const O=Math.max(or(y),or(k));M=Math.pow(10,J(l)?O:l),k=Math.round(k*M)/M,$=Math.round($*M)/M;let R=0;for(_&&(d&&k!==r?(n.push({value:r}),ka)break;n.push({value:V})}return b&&d&&$!==a?n.length&&si(n[n.length-1].value,a,Qr(a,v,e))?n[n.length-1].value=a:n.push({value:a}):(!b||$===a)&&n.push({value:$}),n}function Qr(e,t,{horizontal:n,minRotation:i}){const s=jt(i),o=(n?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+e).length;return Math.min(t/o,r)}class Oi extends ze{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,n){return J(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=n?s:l,a=l=>o=i?o:l;if(t){const l=Mi(s),c=Mi(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},o=this._range||this,r=rm(s,o);return t.bounds==="ticks"&&ll(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-n)/Math.max(t.length-1,1)/2;n-=s,i+=s}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return Fn(t,this.chart.options.locale,this.options.ticks.format)}}class Zr extends Oi{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=dt(t)?t:0,this.max=dt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=jt(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}A(Zr,"id","linear"),A(Zr,"defaults",{ticks:{callback:Ni.formatters.numeric}});const An=e=>Math.floor(pe(e)),$e=(e,t)=>Math.pow(10,An(e)+t);function Jr(e){return e/Math.pow(10,An(e))===1}function ta(e,t,n){const i=Math.pow(10,n),s=Math.floor(e/i);return Math.ceil(t/i)-s}function am(e,t){const n=t-e;let i=An(n);for(;ta(e,t,i)>10;)i++;for(;ta(e,t,i)<10;)i--;return Math.min(i,An(e))}function lm(e,{min:t,max:n}){t=St(e.min,t);const i=[],s=An(t);let o=am(t,n),r=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=s>o?Math.pow(10,s):0,c=Math.round((t-l)*r)/r,u=Math.floor((t-l)/a/10)*a*10;let f=Math.floor((c-u)/Math.pow(10,o)),d=St(e.min,Math.round((l+u+f*Math.pow(10,o))*r)/r);for(;d=10?f=f<15?15:20:f++,f>=20&&(o++,f=2,r=o>=0?1:r),d=Math.round((l+u+f*Math.pow(10,o))*r)/r;const h=St(e.max,d);return i.push({value:h,major:Jr(h),significand:f}),i}class ea extends ze{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,n){const i=Oi.prototype.parse.apply(this,[t,n]);if(i===0){this._zero=!0;return}return dt(i)&&i>0?i:null}determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=dt(t)?Math.max(0,t):null,this.max=dt(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!dt(this._userMin)&&(this.min=t===$e(this.min,0)?$e(this.min,-1):$e(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let i=this.min,s=this.max;const o=a=>i=t?i:a,r=a=>s=n?s:a;i===s&&(i<=0?(o(1),r(10)):(o($e(i,-1)),r($e(s,1)))),i<=0&&o($e(s,-1)),s<=0&&r($e(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,n={min:this._userMin,max:this._userMax},i=lm(n,this);return t.bounds==="ticks"&&ll(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":Fn(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=pe(t),this._valueRange=pe(this.max)-pe(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(pe(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const n=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+n*this._valueRange)}}A(ea,"id","logarithmic"),A(ea,"defaults",{ticks:{callback:Ni.formatters.logarithmic,major:{enabled:!0}}});function Hs(e){const t=e.ticks;if(t.display&&e.display){const n=$t(t.backdropPadding);return tt(t.font&&t.font.size,ft.font.size)+n.height}return 0}function cm(e,t,n){return n=ot(n)?n:[n],{w:Fh(e,t.string,n),h:n.length*t.lineHeight}}function na(e,t,n,i,s){return e===i||e===s?{start:t-n/2,end:t+n/2}:es?{start:t-n,end:t}:{start:t,end:t+n}}function um(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],s=[],o=e._pointLabels.length,r=e.options.pointLabels,a=r.centerPointLabels?rt/o:0;for(let l=0;lt.r&&(a=(i.end-t.r)/o,e.r=Math.max(e.r,t.r+a)),s.startt.b&&(l=(s.end-t.b)/r,e.b=Math.max(e.b,t.b+l))}function dm(e,t,n){const i=e.drawingArea,{extra:s,additionalAngle:o,padding:r,size:a}=n,l=e.getPointPosition(t,i+s+r,o),c=Math.round(oo(Kt(l.angle+ut))),u=_m(l.y,a.h,c),f=pm(c),d=mm(l.x,a.w,f);return{visible:!0,x:l.x,y:u,textAlign:f,left:d,top:u,right:d+a.w,bottom:u+a.h}}function hm(e,t){if(!t)return!0;const{left:n,top:i,right:s,bottom:o}=e;return!(Ge({x:n,y:i},t)||Ge({x:n,y:o},t)||Ge({x:s,y:i},t)||Ge({x:s,y:o},t))}function gm(e,t,n){const i=[],s=e._pointLabels.length,o=e.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:Hs(o)/2,additionalAngle:r?rt/s:0};let c;for(let u=0;u270||n<90)&&(e-=t),e}function bm(e,t,n){const{left:i,top:s,right:o,bottom:r}=n,{backdropColor:a}=t;if(!J(a)){const l=Sn(t.borderRadius),c=$t(t.backdropPadding);e.fillStyle=a;const u=i-c.left,f=s-c.top,d=o-i+c.width,h=r-s+c.height;Object.values(l).some(g=>g!==0)?(e.beginPath(),Fs(e,{x:u,y:f,w:d,h,radius:l}),e.fill()):e.fillRect(u,f,d,h)}}function ym(e,t){const{ctx:n,options:{pointLabels:i}}=e;for(let s=t-1;s>=0;s--){const o=e._pointLabelItems[s];if(!o.visible)continue;const r=i.setContext(e.getPointLabelContext(s));bm(n,r,o);const a=_t(r.font),{x:l,y:c,textAlign:u}=o;Rn(n,e._pointLabels[s],l,c+a.lineHeight/2,a,{color:r.color,textAlign:u,textBaseline:"middle"})}}function Il(e,t,n,i){const{ctx:s}=e;if(n)s.arc(e.xCenter,e.yCenter,t,0,lt);else{let o=e.getPointPosition(0,t);s.moveTo(o.x,o.y);for(let r=1;r{const s=at(this.options.pointLabels.callback,[n,i],this);return s||s===0?s:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const t=this.options;t.display&&t.pointLabels.display?um(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,n,i,s){this.xCenter+=Math.floor((t-n)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,n,i,s))}getIndexAngle(t){const n=lt/(this._pointLabels.length||1),i=this.options.startAngle||0;return Kt(t*n+jt(i))}getDistanceFromCenterForValue(t){if(J(t))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*n:(t-this.min)*n}getValueForDistanceFromCenter(t){if(J(t))return NaN;const n=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(t){const n=this._pointLabels||[];if(t>=0&&t{if(f!==0||f===0&&this.min<0){l=this.getDistanceFromCenterForValue(u.value);const d=this.getContext(f),h=s.setContext(d),g=o.setContext(d);xm(this,h,l,r,g)}}),i.display){for(t.save(),a=r-1;a>=0;a--){const u=i.setContext(this.getPointLabelContext(a)),{color:f,lineWidth:d}=u;!d||!f||(t.lineWidth=d,t.strokeStyle=f,t.setLineDash(u.borderDash),t.lineDashOffset=u.borderDashOffset,l=this.getDistanceFromCenterForValue(n.reverse?this.min:this.max),c=this.getPointPosition(a,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let o,r;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!n.reverse)return;const c=i.setContext(this.getContext(l)),u=_t(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=u.string,r=t.measureText(a.label).width,t.fillStyle=c.backdropColor;const f=$t(c.backdropPadding);t.fillRect(-r/2-f.left,-o-u.size/2-f.top,r+f.width,u.size+f.height)}Rn(t,a.label,0,-o,u,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}A(Jn,"id","radialLinear"),A(Jn,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ni.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),A(Jn,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),A(Jn,"descriptors",{angleLines:{_fallback:"grid"}});const Wi={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},xt=Object.keys(Wi);function ia(e,t){return e-t}function sa(e,t){if(J(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:o}=e._parseOpts;let r=t;return typeof i=="function"&&(r=i(r)),dt(r)||(r=typeof i=="string"?n.parse(r,i):n.parse(r)),r===null?null:(s&&(r=s==="week"&&(ki(o)||o===!0)?n.startOf(r,"isoWeek",o):n.startOf(r,s)),+r)}function oa(e,t,n,i){const s=xt.length;for(let o=xt.indexOf(e);o=xt.indexOf(n);o--){const r=xt[o];if(Wi[r].common&&e._adapter.diff(s,i,r)>=t-1)return r}return xt[n?xt.indexOf(n):0]}function Sm(e){for(let t=xt.indexOf(e)+1,n=xt.length;t=t?n[i]:n[s];e[o]=!0}}function Cm(e,t,n,i){const s=e._adapter,o=+s.startOf(t[0].value,i),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,i))l=n[a],l>=0&&(t[l].major=!0);return t}function aa(e,t,n){const i=[],s={},o=t.length;let r,a;for(r=0;r+t.value))}initOffsets(t=[]){let n=0,i=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?n=1-s:n=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?i=o:i=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;n=Ct(n,0,r),i=Ct(i,0,r),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,s=this.options,o=s.time,r=o.unit||oa(o.minUnit,n,i,this._getLabelCapacity(n)),a=tt(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=ki(l)||l===!0,u={};let f=n,d,h;if(c&&(f=+t.startOf(f,"isoWeek",l)),f=+t.startOf(f,c?"day":r),t.diff(i,n,r)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(d=f,h=0;d+p)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const s=this.options.time.displayFormats,o=this._unit,r=n||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,n,i,s){const o=this.options,r=o.ticks.callback;if(r)return at(r,[t,n,i],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,u=l&&a[l],f=c&&a[c],d=i[n],h=c&&f&&d&&d.major;return this._adapter.format(t,s||(h?f:u))}generateTickLabels(t){let n,i,s;for(n=0,i=t.length;n0?a:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,i=s.length;n=e[i].pos&&t<=e[s].pos&&({lo:i,hi:s}=Ds(e,"pos",t)),{pos:o,time:a}=e[i],{pos:r,time:l}=e[s]):(t>=e[i].time&&t<=e[s].time&&({lo:i,hi:s}=Ds(e,"time",t)),{time:o,pos:a}=e[i],{time:r,pos:l}=e[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class la extends Fi{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=ti(n,this.min),this._tableRange=ti(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,s=[],o=[];let r,a,l,c,u;for(r=0,a=t.length;r=n&&c<=i&&s.push(c);if(s.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(r=0,a=s.length;rs-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?t=this.normalize(n.concat(i)):t=n.length?n:i,t=this._cache.all=t,t}getDecimalForValue(t){return(ti(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const n=this._offsets,i=this.getDecimalForPixel(t)/n.factor-n.end;return ti(this._table,i*this._tableRange+this._minPos,!0)}}A(la,"id","timeseries"),A(la,"defaults",Fi.defaults);const ca=/^on/,Vl=[];Object.keys(globalThis).forEach(e=>{ca.test(e)&&Vl.push(e.replace(ca,""))});function zl(e){const t=Fe,n=[];function i(s){gc(t,s)}Li(()=>{const s=e();Vl.forEach(s instanceof Element?o=>n.push(It(s,o,i)):o=>n.push(s.$on(o,i)))}),rn(()=>{for(;n.length;)n.pop()()})}function Mm(e){let t,n=[e[1]],i={};for(let s=0;s{n(2,l=new ji(c,{type:i,data:s,options:o,plugins:r}))}),fc(()=>{l&&(n(2,l.data=s,l),Object.assign(l.options,o),l.update(a))}),rn(()=>{l&&l.destroy(),n(2,l=null)}),zl(()=>c);function f(d){Ze[d?"unshift":"push"](()=>{c=d,n(0,c)})}return e.$$set=d=>{n(9,t=z(z({},t),et(d))),"type"in d&&n(3,i=d.type),"data"in d&&n(4,s=d.data),"options"in d&&n(5,o=d.options),"plugins"in d&&n(6,r=d.plugins),"updateMode"in d&&n(7,a=d.updateMode),"chart"in d&&n(2,l=d.chart)},t=et(t),[c,u,l,i,s,o,r,a,f]}let $m=class extends K{constructor(t){super(),Q(this,t,Rm,Mm,U,{type:3,data:4,options:5,plugins:6,updateMode:7,chart:2})}};function Am(e){let t,n,i;const s=[{type:"pie"},e[1]];function o(a){e[4](a)}let r={};for(let a=0;aMa(t,"chart",o)),{c(){I(t.$$.fragment)},m(a,l){E(t,a,l),i=!0},p(a,[l]){const c=l&2?zt(s,[s[0],Jt(a[1])]):{};!n&&l&1&&(n=!0,c.chart=a[0],wa(()=>n=!1)),t.$set(c)},i(a){i||(S(t.$$.fragment,a),i=!0)},o(a){C(t.$$.fragment,a),i=!1},d(a){e[3](null),L(t,a)}}}function Pm(e,t,n){ji.register(Es);let{chart:i=null}=t,s,o;zl(()=>o);function r(l){Ze[l?"unshift":"push"](()=>{o=l,n(2,o)})}function a(l){i=l,n(0,i)}return e.$$set=l=>{n(5,t=z(z({},t),et(l))),"chart"in l&&n(0,i=l.chart)},e.$$.update=()=>{n(1,s=t)},t=et(t),[i,s,o,r,a]}class Dm extends K{constructor(t){super(),Q(this,t,Pm,Am,U,{chart:0})}}function Om(e){let t,n;return t=new Dm({props:{class:"self-center",width:256,height:256,data:{labels:e[0].labels,datasets:[{data:e[0].data}]},options:{maintainAspectRatio:!1,responsive:!1,parsing:{key:"time"},animation:!1,plugins:{tooltip:{callbacks:{label:Fm}}}}}}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},p(i,[s]){const o={};s&1&&(o.data={labels:i[0].labels,datasets:[{data:i[0].data}]}),t.$set(o)},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}const Fm=e=>`Queries: ${e.raw.queries}, Time: ${e.raw.time.toFixed(4)} ms`;function Em(e,t,n){let i;return gt(e,vs,s=>n(0,i=s)),ji.register(Up,nm,_n,zs,qp),[i]}class Lm extends K{constructor(t){super(),Q(this,t,Em,Om,U,{})}}function ua(e,t,n){const i=e.slice();return i[5]=t[n],i}function fa(e){let t,n=e[5]+"",i,s,o,r;function a(){return e[4](e[5])}return{c(){t=D("button"),i=Z(n),s=Y(),F(t,"class","bg-dark-600 p-3 border-[1px] outline-none border-transparent focus-visible:border-cyan-600 text-left hover:bg-dark-400 rounded-md")},m(l,c){nt(l,t,c),w(t,i),w(t,s),o||(r=It(t,"click",a),o=!0)},p(l,c){e=l,c&2&&n!==(n=e[5]+"")&&Wt(i,n)},d(l){l&&X(t),o=!1,r()}}}function Tm(e){let t,n,i,s,o,r,a,l,c,u,f,d,h,g,p,m,_,b,x,v,y,M,k,$=e[2].queries+"",P,O,R,V,ct=e[2].timeQuerying.toFixed(4)+"",it,H,B,N,st,G=e[2].slowQueries+"",Et,Se,vt,wt;a=new Id({});function ee(j){e[3](j)}let ue={icon:nl};e[0]!==void 0&&(ue.value=e[0]),c=new Rd({props:ue}),Ze.push(()=>Ma(c,"value",ee));let bt=e[1],pt=[];for(let j=0;ju=!1)),c.$set(Ce),fe&2){bt=j[1];let Lt;for(Lt=0;Ltn(0,i=l)),gt(e,lu,l=>n(1,s=l)),gt(e,xs,l=>n(2,o=l));function r(l){i=l,bs.set(i)}return[i,s,o,r,l=>Ee.goto(`/${l}`)]}class Vm extends K{constructor(t){super(),Q(this,t,Im,Tm,U,{})}}function da(e){let t,n,i,s,o,r,a;return i=new wo({props:{path:"/",$$slots:{default:[zm]},$$scope:{ctx:e}}}),o=new wo({props:{path:"/:resource",$$slots:{default:[Hm]},$$scope:{ctx:e}}}),{c(){t=D("main"),n=D("div"),I(i.$$.fragment),s=Y(),I(o.$$.fragment),F(n,"class","bg-dark-800 flex h-[700px] w-[1200px] rounded-md text-white"),F(t,"class","font-main flex h-full w-full items-center justify-center")},m(l,c){nt(l,t,c),w(t,n),E(i,n,null),w(n,s),E(o,n,null),a=!0},i(l){a||(S(i.$$.fragment,l),S(o.$$.fragment,l),Je(()=>{a&&(r||(r=di(t,zo,{start:.95,duration:150},!0)),r.run(1))}),a=!0)},o(l){C(i.$$.fragment,l),C(o.$$.fragment,l),r||(r=di(t,zo,{start:.95,duration:150},!1)),r.run(0),a=!1},d(l){l&&X(t),L(i),L(o),l&&r&&r.end()}}}function zm(e){let t,n;return t=new Vm({}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function Hm(e){let t,n;return t=new Cd({}),{c(){I(t.$$.fragment)},m(i,s){E(t,i,s),n=!0},i(i){n||(S(t.$$.fragment,i),n=!0)},o(i){C(t.$$.fragment,i),n=!1},d(i){L(t,i)}}}function Nm(e){let t,n,i=e[0]&&da(e);return{c(){i&&i.c(),t=Pn()},m(s,o){i&&i.m(s,o),nt(s,t,o),n=!0},p(s,[o]){s[0]?i?o&1&&S(i,1):(i=da(s),i.c(),S(i,1),i.m(t.parentNode,t)):i&&(kt(),C(i,1,1,()=>{i=null}),Rt())},i(s){n||(S(i),n=!0)},o(s){C(i),n=!1},d(s){i&&i.d(s),s&&X(t)}}}function Bm(e,t,n){let i,s,o,r;gt(e,Ki,l=>n(0,i=l)),gt(e,vs,l=>n(1,s=l)),gt(e,xs,l=>n(2,o=l)),gt(e,ys,l=>n(3,r=l)),Ee.mode.hash(),Ee.goto("/"),Ja("openUI",l=>{mt(Ki,i=!0,i),mt(ys,r=l.resources,r),mt(xs,o={queries:l.totalQueries,slowQueries:l.slowQueries,timeQuerying:l.totalTime},o),mt(vs,s={labels:l.chartData.labels,data:l.chartData.data},s)}),el([{action:"openUI",data:{resources:["ox_core","oxmysql","ox_inventory","ox_doorlock","ox_lib","ox_vehicleshop","ox_target"],slowQueries:13,totalQueries:332,totalTime:230123,chartData:{labels:["oxmysql","ox_core","ox_inventory","ox_doorlock"],data:[{queries:25,time:133},{queries:5,time:12},{queries:3,time:2},{queries:72,time:133}]}}}]);const a=l=>{l.key==="Escape"&&(mt(Ki,i=!1,i),Da("exit"))};return e.$$.update=()=>{e.$$.dirty&1&&(i?window.addEventListener("keydown",a):window.removeEventListener("keydown",a))},[i]}class jm extends K{constructor(t){super(),Q(this,t,Bm,Nm,U,{})}}new jm({target:document.getElementById("app")});if(tl()){const e=document.getElementById("app");e.style.backgroundImage='url("https://i.imgur.com/3pzRj9n.png")',e.style.backgroundSize="cover",e.style.backgroundRepeat="no-repeat",e.style.backgroundPosition="center"} diff --git a/resources/[standalone]/oxmysql/web/build/assets/index-9bba0f49.css b/resources/[standalone]/oxmysql/web/build/assets/index-9bba0f49.css deleted file mode 100644 index 2f4ffda..0000000 --- a/resources/[standalone]/oxmysql/web/build/assets/index-9bba0f49.css +++ /dev/null @@ -1 +0,0 @@ -@import"https://use.typekit.net/wxh5ury.css";*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.visible{visibility:visible}.absolute{position:absolute}.mb-4{margin-bottom:1rem}.mt-6{margin-top:1.5rem}.flex{display:flex}.table{display:table}.grid{display:grid}.h-\[600px\]{height:600px}.h-full{height:100%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-12{width:3rem}.w-2\/3{width:66.666667%}.w-3\/4{width:75%}.w-\[1000px\]{width:1000px}.w-full{width:100%}.max-w-\[200px\]{max-width:200px}.max-w-xl{max-width:36rem}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-flow-col{grid-auto-flow:column}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.self-center{align-self:center}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-md{border-radius:.375rem}.border-\[1px\]{border-width:1px}.border-transparent{border-color:transparent}.bg-dark-50{--tw-bg-opacity: 1;background-color:rgb(193 194 197 / var(--tw-bg-opacity))}.bg-dark-600{--tw-bg-opacity: 1;background-color:rgb(37 38 43 / var(--tw-bg-opacity))}.bg-dark-700{--tw-bg-opacity: 1;background-color:rgb(26 27 30 / var(--tw-bg-opacity))}.bg-dark-800{--tw-bg-opacity: 1;background-color:rgb(20 21 23 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.pb-5{padding-bottom:1.25rem}.pr-0{padding-right:0}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-end{text-align:end}.font-main{font-family:Roboto}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-dark-100{--tw-text-opacity: 1;color:rgb(166 167 171 / var(--tw-text-opacity))}.text-dark-300{--tw-text-opacity: 1;color:rgb(92 95 102 / var(--tw-text-opacity))}.text-dark-400{--tw-text-opacity: 1;color:rgb(55 58 64 / var(--tw-text-opacity))}.text-dark-50{--tw-text-opacity: 1;color:rgb(193 194 197 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity))}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}*{margin:0;padding:0}#app{width:100vw;height:100vh}::-webkit-scrollbar{width:2px}::-webkit-scrollbar-track{background:#25262b}::-webkit-scrollbar-thumb{background:#909296}::-webkit-scrollbar-thumb:hover{background:#a6a7ab}.focus-within\:border-cyan-600:focus-within{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity))}.hover\:bg-dark-400:hover{--tw-bg-opacity: 1;background-color:rgb(55 58 64 / var(--tw-bg-opacity))}.hover\:bg-dark-500:hover{--tw-bg-opacity: 1;background-color:rgb(44 46 51 / var(--tw-bg-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.focus-visible\:border-cyan-600:focus-visible{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity))}.focus-visible\:text-white:focus-visible{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.active\:translate-y-\[3px\]:active{--tw-translate-y: 3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-dark-300:disabled{--tw-bg-opacity: 1;background-color:rgb(92 95 102 / var(--tw-bg-opacity))}.disabled\:text-dark-400:disabled{--tw-text-opacity: 1;color:rgb(55 58 64 / var(--tw-text-opacity))} diff --git a/resources/[standalone]/oxmysql/web/build/index.html b/resources/[standalone]/oxmysql/web/build/index.html index 9ccb42a..2a9417d 100644 --- a/resources/[standalone]/oxmysql/web/build/index.html +++ b/resources/[standalone]/oxmysql/web/build/index.html @@ -5,8 +5,8 @@ Vite + Svelte + TS - - + +